Esta es el arreglo más válida que te podemos compartir, sin embargo obsérvala pausadamente y valora si se adapta a tu trabajo.
Solución:
JavaScript
En JavaScript, simplemente prueba la propiedad cookieEnabled, que es compatible con todos los principales navegadores. Si utiliza un navegador antiguo, puede establecer una cookie y comprobar si existe. (tomado de Modernizer):
if (navigator.cookieEnabled) return true;
// set and read cookie
document.cookie = "cookietest=1";
var ret = document.cookie.indexOf("cookietest=") != -1;
// delete cookie
document.cookie = "cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT";
return ret;
- Compromiso de comprobación de cookies del modernizador
- Comprobando si las cookies están habilitadas
PHP
En PHP es bastante “complicado” ya que hay que refrescar la página o redirigir a otro script. Aquí usaré dos scripts:
somescript.php
comprobar.php
- Detectando si las cookies están habilitadas con PHP
PHP y Cookies, ¡Una Buena Mezcla!
Pero para verificar si las cookies están habilitadas usando isset ($_COOKIE["cookie"]) tienes que actualizar. Lo estoy haciendo de esta manera (con sesiones basadas en cookies 🙂
session_start();
$a = session_id();
session_destroy();
session_start();
$b = session_id();
session_destroy();
if ($a == $b)
echo"Cookies ON";
else
echo"Cookies OFF";
Responda a una pregunta anterior, esta nueva publicación se publicó el 4 de abril de 2013
Para completar la respuesta de @misza, aquí un método avanzado para verificar si las cookies están habilitadas sin recargar la página. El problema con @misza es que no siempre funciona cuando la configuración de php ini session.use_cookies
no es true. Además, la solución no verifica si ya se inició una sesión.
Hice esta función y la probé muchas veces en diferentes situaciones y funciona muy bien.
function suGetClientCookiesEnabled() // Test if browser has cookies enabled
// Avoid overhead, if already tested, return it
if( defined( 'SU_CLIENT_COOKIES_ENABLED' ))
return SU_CLIENT_COOKIES_ENABLED;
$bIni = ini_get( 'session.use_cookies' );
ini_set( 'session.use_cookies', 1 );
$a = session_id();
$bWasStarted = ( is_string( $a ) && strlen( $a ));
if( !$bWasStarted )
@session_start();
$a = session_id();
// Make a copy of current session data
$aSesDat = (isset( $_SESSION ))?$_SESSION:array();
// Now we destroy the session and we lost the data but not the session id
// when cookies are enabled. We restore the data later.
@session_destroy();
// Restart it
@session_start();
// Restore copy
$_SESSION = $aSesDat;
// If no cookies are enabled, the session differs from first session start
$b = session_id();
if( !$bWasStarted )
// If not was started, write data to the session container to avoid data loss
@session_write_close();
// When no cookies are enabled, $a and $b are not the same
$b = ($a === $b);
define( 'SU_CLIENT_COOKIES_ENABLED', $b );
if( !$bIni )
@ini_set( 'session.use_cookies', 0 );
//echo $b?'1':'0';
return $b;
Uso:
if( suGetClientCookiesEnabled())
echo 'Cookies are enabled!';
else echo 'Cookies are NOT enabled!';
Nota IMPORTANTE:
La función modifica temporalmente la configuración ini de PHP cuando no tiene la configuración correcta y la restaura cuando no estaba habilitada. Esto es solo para probar si las cookies están habilitadas. Puede salir mal cuando inicia una sesión y la configuración de php ini session.use_cookies tiene un valor incorrecto. Para asegurarse de que la sesión está funcionando correctamente, verifíquelo y/o configúrelo antes de iniciar una sesión, por ejemplo:
if( suGetClientCookiesEnabled())
echo 'Cookies are enabled!';
ini_set( 'session.use_cookies', 1 );
echo 'Starting session';
@start_session();
else echo 'Cookies are NOT enabled!';