Foros del Web » Programando para Internet » PHP »

Cookies como novato

Estas en el tema de Cookies como novato en el foro de PHP en Foros del Web. Hola bueno mi pregunta es muy sencilla pero por mas que he leído en el manual de PHP no he encontrado respuesta. Tengo un formulario ...
  #1 (permalink)  
Antiguo 30/03/2004, 13:32
Avatar de CHILENOCES  
Fecha de Ingreso: octubre-2001
Ubicación: Mmm paseando por la vida
Mensajes: 491
Antigüedad: 23 años, 1 mes
Puntos: 0
Cookies como novato

Hola bueno mi pregunta es muy sencilla pero por mas que he leído en el manual de PHP no he encontrado respuesta.

Tengo un formulario que tiene dos opciones Pais y Recordar las cuales sirven para seleccionar un pais y ser enviado a una X url y la otra es para recordar cual seleccion eligio es para hacer algo asi:

Seleccione su país :

Chile
Argentina
Mexico

Desea que cada vez que entre vaya automaticamente al país que usted selecciono?

- Si - No


Bueno necesito hacer que me almacene estos datos en una
cookie lo cual he hecho perfectamente pero ahora no puedo leer bien los datos para ponerlos al principio de la página osea que
antes de mostrar ese form primero verifique si la cookie tiene los
valores Si y el Pais y lo mande de inmediato a la url que quiera.

Código PHP:
<?php
if(isset($HTTP_COOKIE_VARS["Pais"]))//si la cookie existe
{
$ubicacion $HTTP_COOKIE_VARS["Pais"]; 
header ("Location: $ubicacion");
}
else
{
}
?>
Pero no me lo toma.
La informacion que guarda en la Cookie es la Siguiente:

Pais
Chile // Este es el Valor Pais.
dominio.com/
1536
193730688
29628447
3072870976
29628044
*
Recordar
Si_Recordar //Este es el Valor de que si debe irse de inmediato a la url que quiero.
dominio.com/
1536
193730688
29628447
3072870976
29628044
*

Y este es el codigo de la cookie:

Código PHP:
setcookie("Recordar",$recordar,time()+172800);
setcookie("Pais",$pais,time()+172800); 


Espero haber sido bastante claro y ojala me puedan ayudar.

Saludos y muchas gracias.
__________________
ChilenoCesar Looking for something new...

Última edición por CHILENOCES; 30/03/2004 a las 13:33
  #2 (permalink)  
Antiguo 30/03/2004, 14:22
Avatar de CHILENOCES  
Fecha de Ingreso: octubre-2001
Ubicación: Mmm paseando por la vida
Mensajes: 491
Antigüedad: 23 años, 1 mes
Puntos: 0
El código para leer sería algo así:

<?php
if((isset($HTTP_COOKIE_VARS["Chile"])) && (isset($HTTP_COOKIE_VARS["Si_Recordar"])))//si la cookie existe
{
header ("Location: /chile");
}
if((isset($HTTP_COOKIE_VARS["Mexico"])) && (isset($HTTP_COOKIE_VARS["Si_Recordar"])))//si la cookie existe
{
header ("Location: /mexico");
}
if((isset($HTTP_COOKIE_VARS["Resto"])) && (isset($HTTP_COOKIE_VARS["Si_Recordar"])))//si la cookie existe
{
header ("Location: /internacional");
}
else
{
?>
Codigo HTML:...............................
<?}?>

Pero no hay caso la cookie la guarda en el computador los datos estan en el post anterior pero al utilizar este codigo para hacer la funciona que quiero no me manda donde dice ahi arriba y las cookies si tienen esa información.

Saludos
__________________
ChilenoCesar Looking for something new...

Última edición por CHILENOCES; 30/03/2004 a las 14:23
  #3 (permalink)  
Antiguo 30/03/2004, 14:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Usa exit; despues de tus header("location: ...") por qué sino el flujo del código continua . y dependiendo de tus condicionales que usas tal vez esté entrando al que no correspondería ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 30/03/2004, 14:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Por cierto ..

Cita:
if((isset($HTTP_COOKIE_VARS["Chile"])) && (isset($HTTP_COOKIE_VARS["Si_Recordar"])))//si la cookie existe
{
header ("Location: /chile");
}
Tu cookie se llama "Pais" no "chile" .. chile sería un valor de ese cookie "Pais" de nombre ..

pero ..ahora piensa una cosa ..

Si tu usuario define que quiere recordar esa información la próxima vez que entre a tu sitio .. creale la cookie del Pais que seleccione, ... no hace falta tener esa cookie "Si_recordar". ..

Ejemplo:

Código PHP:
if (isset($_COOKIE['Pais'])){
header ("Location: ./".$_COOKIE['Pais']){
exit;
} else {
header ("Location: ./internacional");
exit;

Y ..cuando crees tu cookie Pais para el "Resto" usa el nombre "internacional" .. así puedes aprovechar este simple condiconal ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 30/03/2004 a las 14:50
  #5 (permalink)  
Antiguo 30/03/2004, 17:49
Avatar de CHILENOCES  
Fecha de Ingreso: octubre-2001
Ubicación: Mmm paseando por la vida
Mensajes: 491
Antigüedad: 23 años, 1 mes
Puntos: 0
Hola Cluster,
Osea te refieres a que mi cookie en vez de llamarse país y tenga un dato Chile, que la cookie se llame Chile altiro hasta ahi todo bien cluster pero que pasa si el cliente elige Chile pero en la opcion Desea..... ponga no la cookie igual se va a redireccionar a chile pero se me ocurre crear una cookie con el $pais y otra cookie con $recordar osea en resultados cookie Chile y cookie No o Si ok voy a probar asi pero Cluster si la cookie se llama Chile y tiene un Valor Santiago como puedo obtener el valor Santiago de la Cookie Chile?

Saludos y espero tu respuesta.
Muchas gracias.
__________________
ChilenoCesar Looking for something new...
  #6 (permalink)  
Antiguo 30/03/2004, 19:34
Avatar de CHILENOCES  
Fecha de Ingreso: octubre-2001
Ubicación: Mmm paseando por la vida
Mensajes: 491
Antigüedad: 23 años, 1 mes
Puntos: 0
Cluster ya lo arreglé todo y quedó perfecto tal cual como yo quería ahora cuentame como puedo hacer para que cuando este dentro de la página que selecciono exista una opcion que se llame Cambiar País y que esta lo mande a la página principal donde esta la selección pero para eso tendría que borrar la Cookie como lo hago?

Saludos y gracias
__________________
ChilenoCesar Looking for something new...
  #7 (permalink)  
Antiguo 30/03/2004, 21:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Bueno . no sé como al final te quedó el código .. pero volviendo sobre el ejmplo que puse .. donde PAIS es la variable en la cookie (ese es su nombre) que contrendrá el valor que tu definas con:

setcookie ("Pais","valor",tiempoexipracion);

Sería algo así:

cambia_pais.php
Código PHP:
if (isset($_COOKIE['pais'])){
header ("Location: ./".$_COOKIE['pais']){
exit;
} elseif (!empty(
$_GET['pais']) {
setcookie("pais",$_GET['pais'],time()+172800);
header ("Location: ./".$_GET['pais']){
exit;
} else {
header ("Location: ./internacional"){
exit;

Se revisa si está creada la cookie PAIS .. si lo está .. se redirecciona hacia dicho valor .. SI no está definida la cookie Pais con el valor que sea .. pasa a verificar si por el URL se está haciendo:

cambia_pais.php?pais=chile

Si no es así .. se redireciona a la página por defecto.

Si te fijas .. la cookie no la borro sino que le cambio el valor en cambia_pais.php al ser llamado con el parámetro que necesites ..

La otra cookie de "Recordar" no sé si todavía la usaras .. pero la uses o no ese valor quedará con su valor preestablecido. Aunque insisto que no es necesario usar esa variable si te basas en la existencia (o no de esa cookie) .. como mucho si no selecciona la opcion "recordad" crea la sesión sin tiempo de expiración .. así serán "cookies de sesión" (cierras el navegador y muere la cookie .. se trabajan en memoria y no sobre el /cookies de tu navegador) .. si usa la opción "Recordar" crea la cookie "Pais" con un valor largo de tiempo de expiración.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 30/03/2004 a las 21:34
  #8 (permalink)  
Antiguo 30/03/2004, 21:50
Avatar de CHILENOCES  
Fecha de Ingreso: octubre-2001
Ubicación: Mmm paseando por la vida
Mensajes: 491
Antigüedad: 23 años, 1 mes
Puntos: 0
Este es el codigo de la cookie:

Código PHP:
<?php
if ($recordar == "Si_Recordar"){
setcookie("Recordar",$recordar,time()+691200);// esta cookie dura 2 dias, tiene por nombre fecha y como valor la
setcookie("$pais",$pais,time()+691200);
}
if (
$pais == Chile){
header ("Location: /chile");
exit;
}
if (
$pais == Mexico){
header ("Location: /mexico");
exit;
}
if (
$pais == Resto){
header ("Location: /internacional");
exit;
}
?>
Este el que verifica :

Código PHP:
if((isset($HTTP_COOKIE_VARS["Chile"])) && (isset($HTTP_COOKIE_VARS["Recordar"])))//si la cookie existe
{
header ("Location: /chile");
exit;
}
if((isset(
$HTTP_COOKIE_VARS["Mexico"])) && (isset($HTTP_COOKIE_VARS["Recordar"])))//si la cookie existe
{
header ("Location: /mexico");
exit;
}
if((isset(
$HTTP_COOKIE_VARS["Resto"])) && (isset($HTTP_COOKIE_VARS["Recordar"])))//si la cookie existe
{
header ("Location: /internacional");
exit;
}
else
{
}
?> 
Mi pregunta es que esos dos codigos los uso para enviar a otra página que tiene los datos pero en esa página donde se va es la que paso por el proceso de la cookie pero si yo mando un link al index que es donde esta el codigo que verifica me manda otra vez al home de la cookie porque esta registrado en la cookie.

La pregunta es como hago para que ese link mande al index sin redireccionar a la pagina guardada en la cookie si no que vuelva a mostrar el form que pide que eliga un pais.
__________________
ChilenoCesar Looking for something new...
  #9 (permalink)  
Antiguo 30/03/2004, 21:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Insisto CHILENOCES .. creo que estás confundiendo el tema .. pese que te funciona.

fijate que creas tantas cookies como paises puedas tener ... cuando lo que deberías hacer es crearte UNA variable sólo con el valor del pais que corresponda ..

Fijate en mi ejemplo e intentan entenderlo ..

si tu haces setcokie(el primer parámetro es el nombre de tu variable . .y el segundo el valor de esta ..

Estás creando cookies tipo:

$chile='chile'

$HTTP_COOKIES_VARS['chile']='chile'

Esa forma de trabajar así variables (de cookies o como sea) no hace nada claro el código y no es para nada optimo el código .. Fijate si tuvieras MIL idiomas! .. tendrías MIL cookies ... según tu método.



Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 31/03/2004, 15:09
Avatar de CHILENOCES  
Fecha de Ingreso: octubre-2001
Ubicación: Mmm paseando por la vida
Mensajes: 491
Antigüedad: 23 años, 1 mes
Puntos: 0
Cluster lo que pasa es que si hago:
setcookie("Pais",$pais,time()+691200);

Despues no puedo leer ese $pais no se por que pero no puedo entonces preferí crear la cookie asi:

setcookie("$pais",$pais,time()+691200);

Y ahi si puedo leer bien pero solamente estoy creando dos cookies nada mas.

Saludos.
__________________
ChilenoCesar Looking for something new...
  #11 (permalink)  
Antiguo 01/04/2004, 06:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
pero com pretendes leer tu "Pais" variable de cookie?

Recuerda que las variables son sensibles a mayusculas o minusculas .. así que si creas "Pais" y luego lees "pais" no vas a obtener el valor de la variable "Pais" ...

Por lo demás .. estás creando tantas cookies como veces cambies de pais + 1 (la de "recordar"). Si entras siempre a Chile y nunca cambias no crearas más que una cookie ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:09.