Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   duda con cookies (https://www.clubdelphi.com/foros/showthread.php?t=33450)

Luzma 07-07-2006 00:01:31

duda con cookies
 
Hola a tod@s,

Estoy incursionando en el mundo del php y tengo un problemita, espero que me puedan ayudar.

Resulta que tengo un archivo que me crea una cookie

Código PHP:

setcookie("Dato","Hola",time()+3600,"/");
 
print(
$_COOKIE["Dato"]); 

y en teoría me debería mostrar al cargar la página la palabra Hola, ¿estoy en lo cierto, verdad?

pero no es así, me muestra un error (Undefined index: Dato in ....), lo extraño (para mí es extrano ya que no sé casi nada de php) es que al actualizar la página ya me muestra Hola.

La pregunta es por qué pasa eso. (¿Será un problema con mi PC o algo así?)


Ahora bien, otra duda del mismo tema:

(archivo a.php)
Código PHP:

<?php
setcookie
("Dato","Hola",time()+3600,"/");
 
print(
$_COOKIE["Dato"]);
?>
<a href="b.php">ir a b.php</a>

y en b.php
Código PHP:

<a href="a.php">ir a a.php</a

Supongamos que ya di F5 a la página y me muestra la palabra Hola, doy click en "ir a a b.php" y en b.php doy click en "ir a a.php" me vuelve a mostrar el error de arriba (Undefined index: Dato in ....), no entiendo por qué pasa eso. Espero que me puedan explicar.

Saludos.

kayetano 07-07-2006 10:29:21

Hola

El funcionamiento es correcto, una vez has creado una cookie en php ties que recargar la página.

La segunda duda, en teoría una vez que a cargado la cookie la tienes que poder consultar hasta que se elimine, pero como tu la estas creando cada vez que entras en a.php puede pasar de todo. Puedes probar con el siguiente código:
Código PHP:

<?php
if( !isset( $_COOKIE["Dato"] ) ) { // Creo la cookie y recargo la página.
   
setcookie("Dato","Hola",time()+3600,"/");
   
header"Location: a.php" );
   exit();
}
if( isset( 
$_COOKIE["Dato"] ) )
   print(
$_COOKIE["Dato"]);
?>


Luzma 07-07-2006 23:40:24

Gracias kayetano por tu ayuda, ya le voy entendiendo.

Con tu mismo código, si sólo le agregamos:

(a.php)
Código PHP:

<?php
if( !isset( $_COOKIE["Dato"] ) ) { // Creo la cookie y recargo la página.
setcookie("Dato","Hola",time()+3600,"/");
header"Location: a.php" );
exit();
}
if( isset( 
$_COOKIE["Dato"] ) )
print(
$_COOKIE["Dato"]);
?> 
 
<br>
<a href="b.php">ir a b.php</a>

y en b.php
Código PHP:

<?php
if( isset( $_COOKIE["Dato"] ) )
print(
$_COOKIE["Dato"]);
else
print(
"amigo");
?>

¿Por qué me muestra "amigo" y no "Hola" si se supone que ya se creo la cookie?.

¿Cómo puedo hacerle para que me muestre "Hola" en b.php?

dec 08-07-2006 01:43:29

Hola,

Debes tener el navegador de que haces uso de forma que no admita "cookies" o que admita sólo determinadas "cookies", porque, ciertamente, el código fuente de los archivos "a.php" y "b.php" es correcto y, tras una prueba, todo funciona tal como se espera.

¿Solución? Revisa las opciones del navegador y asegúrate de que este admita "cookies".

Luzma 08-07-2006 18:58:10

Cita:

Empezado por dec
¿Solución? Revisa las opciones del navegador y asegúrate de que este admita "cookies".

Sí dec, tienes razón.

Lo que pasa es que el firewall bloquea algunas cookies, gracias por tu ayuda.


La franja horaria es GMT +2. Ahora son las 15:26:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi