Problema con cookies

  • Autor Autor Aledky91
  • Fecha de inicio Fecha de inicio
Aledky91

Aledky91

Delta
Verificación en dos pasos activada
Estoy creando unas cookies en mi localhost y tengo este código.

PHP:
if(isset($_COOKIE['userid']) && isset($_COOKIE['userpassword']))
{
	echo "Las cookies ya estaban creadas..";
}
else
{
	setcookie("userid","usuario",time()+3600);
	setcookie("userpassword","password",time()+3600);
	
	if(isset($_COOKIE['userid']) && isset($_COOKIE['userpassword']))
	{
		echo "Las cookies se han creado correctamente..";
	} else{ echo "Error al crear las cookies.."; }
	
}

El problema que tengo es que al cargarlo me da el texto del else "Error al crear las cookies.." pero la cosa es que las cookies se crean correctamente :S
Por eso no entiendo que me de el fallo :S

Alguien sabe el porque de esto?
 
me interesa saber :encouragement:
 
PHP:
if(isset($_COOKIE['userid']) && isset($_COOKIE['userpassword'])) 
{ 
    echo "Las cookies ya estaban creadas.."; 
} 
else 
{ 
    setcookie("userid","usuario",time()+3600, "/");
    setcookie("userpassword","password",time()+3600, "/");
     
    if(isset($_COOKIE['userid']) && isset($_COOKIE['userpassword'])) 
    { 
        echo "Las cookies se han creado correctamente.."; 
    } else{ echo "Error al crear las cookies.."; } 
     
}

Quizás en setcookie le haga falta poner la ruta donde serán creadas.
 
PHP:
if(isset($_COOKIE['userid']) && isset($_COOKIE['userpassword'])) 
{ 
    echo "Las cookies ya estaban creadas.."; 
} 
else 
{ 
    setcookie("userid","usuario",time()+3600, "/");
    setcookie("userpassword","password",time()+3600, "/");
     
    if(isset($_COOKIE['userid']) && isset($_COOKIE['userpassword'])) 
    { 
        echo "Las cookies se han creado correctamente.."; 
    } else{ echo "Error al crear las cookies.."; } 
     
}

Quizás en setcookie le haga falta poner la ruta donde serán creadas.

No amigo.. ese no es el problema. También tengo que decir que si vuelvo a cargar el código una vez creadas las cookies si las reconoce. Por lo tanto el problema viene con el if que esta dentro del else :S
 
Seguramente sea por que las cookies son creadas en el servidor y son leídas ya que están en el cliente(navegador) y estas son enviadas de regreso al servidor, ¿por que comprobar si existen en cuanto son creadas?
 
Seguramente sea por que las cookies son creadas en el servidor y son leídas ya que están en el cliente(navegador) y estas son enviadas de regreso al servidor, ¿por que comprobar si existen en cuanto son creadas?

Para saber si se han creado o no. Por ejemplo, a veces he tenido problemas con hostings por que no me creaban las cookies y el código estaba bien. No es un problema que me afecte ya que no uso un hosting compartido actualmente pero me parece curioso que de fallo y la cookie se genere bien :S.
 
A ver si te convence esto:

las cokkies se crean pero no las lee hasta que se vuelve a cargar, no se si me doy a entender.

O sea las crea y las inserta pero todavía no las lee, creo que lo mejor seria poner

PHP:
if(isset($_COOKIE['userid']) && isset($_COOKIE['userpassword'])) 
{ 
    echo "Las cookies ya estaban creadas.."; 
} 
else 
{ 
setcookie("userid","usuario",time()+3600, "/");
    setcookie("userpassword","password",time()+3600, "/"); 
   
     
}  
 if(isset($_COOKIE['userid']) && isset($_COOKIE['userpassword'])) 
    {  
       echo "Las cookies se han creado correctamente.."; 
    }
else 
{ 
echo "Error al crear las cookies.."; 
}

Saludos
 
Última edición:
Como comenta el compañero, las cookies se pueden leer hasta la siguiente carga de la página:

Once the cookies have been set, they can be accessed on the next page load with the $_COOKIE array.

Lo que puedes hacer es asignar el retorno de la función a variables y meter esas en la condición, algo como:
PHP:
$userid       = setcookie("userid","usuario",time()+3600, "/");
$userpassword = setcookie("userpassword","password",time()+3600, "/");

if ($userid && $userpassword) {
    // Las cookies se han creado
} else {
    // Las cookies no se crearon    
}

Saludos.
 
Prueba cambiando los condicionales de esta manera:
PHP:
if(!isset($_COOKIE['userid']) && !isset($_COOKIE['userpassword']))  
{  
  setcookie("userid","usuario",time()+3600, "/"); 
  setcookie("userpassword","password",time()+3600, "/");
}  
else  
{  
  echo "Las cookies ya estaban creadas.."; 
}   

 if(isset($_COOKIE['userid']) && isset($_COOKIE['userpassword']))  
    {   
       echo "Las cookies se han creado correctamente..";  
    } 
else  
{  
echo "Error al crear las cookies..";  
}
 
Para saber si se han creado o no. Por ejemplo, a veces he tenido problemas con hostings por que no me creaban las cookies y el código estaba bien. No es un problema que me afecte ya que no uso un hosting compartido actualmente pero me parece curioso que de fallo y la cookie se genere bien :S.

Usas Chrome como navegador?
Tiene bug relacionadoa Cookies
 
Atrás
Arriba