Saltar al contenido

Comprobar si las cookies están habilitadas

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!'; 

Puntuaciones y comentarios

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Respuestas a preguntas comunes sobre programacion y tecnología