Foros del Web » Programando para Internet » PHP »

Guardar y leer de una cookie

Estas en el tema de Guardar y leer de una cookie en el foro de PHP en Foros del Web. Hola maestros: Tengo el siguiente problema, necesito que cuando una persona entre al sitio, poder capturar su identificador para poder volver a usarlo la próxima ...
  #1 (permalink)  
Antiguo 10/01/2002, 09:15
 
Fecha de Ingreso: enero-2002
Mensajes: 16
Antigüedad: 22 años, 10 meses
Puntos: 1
Guardar y leer de una cookie

Hola maestros:

Tengo el siguiente problema, necesito que cuando una persona entre al sitio, poder capturar su identificador para poder volver a usarlo la próxima vez que entre al sitio.
Por ejemplo, si la persona se llam Juan, que al volver nuevamente al sitio este le diga Hola Juan.


Muchas gracias
  #2 (permalink)  
Antiguo 10/01/2002, 10:26
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 23 años
Puntos: 69
Re: Guardar y leer de una cookie

Christian, eso es muy sencillo con PHP.

Cuando el usuario se logea al sistema, o en el momento que te parezca más adecuado, utilizas la funcion setcookie() para dejar la cookie activada. Ej:

setcookie("nombre", "Juan");

De esta manera, has seteado una cookie con nombre "nombre" y con valor "Juan". Valen aclarar dos puntos:

1) Si no indicas un tiempo de duración de la cookie, entonces es una cookie de sesión, o sea, que al cerrar el navegador la cookie se borra automáticamente. En cambio, si indicas una fecha de caducidad, entonces la cookie se guardará en la máquina del cliente y caducará llegado su momento.Ej:

setcookie("nombre", "Juan", time()+86400);

Esta Cookie durará 24 horas (86400 segundos).

2) Debes tener en cuenta que para poder setear una cookie correctamente, y debido a que esto se hace en los headers de una conexion HTTP, la funcion debe ser llamada ANTES de haber enviado cualquier contenido al browser del cliente, sino te saldrá un bonito mensje de error parecido a este :

Warning: Cannot add header information, etc etc etc.

Ahroa, una vez seteada la cookie, como la leemos? Sencillo. Desde PHP, tenemos varias formas de hacerlo. La más utilizada (pero la menos recomendada), es directamente leerla como una variable normal, ya que la mayoria de los PHP convierte una cookie a una variable. Entonces, haciendo:

echo "Hola $nombre";

Ya mostrarias el mensaje de bienvenida. Pero como te dije, este metodo no es muy recomendado porque implica una falla de seguridad en tu script. La manera que nosotros recomendamos es utilizar el array asociativo $HTTP_COOKIE_VARS, presente en todas las versiones de PHP. En el ejemplo anterior, seria:

echo "Hola ".$HTTP_COOKIE_VARS["nombre"];

Hay una tercera manera, presente a partir de PHP 4.1.0, que es utilizar el array _COOKIE["nombre"], que tiene la ventaja de ser Auto GLobal.

Bueno, creo que es una introducci+on más que suficiente al tema de las cookies.

Saludos.

<hr><font size=2 face="verdana">- Pablo Daniel Rigazzi (Webstudio)
<font size=1 color="#333333">COORDINADOR PROYECTO REGIONALIZACION ARGENTINA
Visita <a href="http://www.web-studio.com.ar" target="_blank">Web Studio</a> - Tutoriales Photoshop</fo
  #3 (permalink)  
Antiguo 11/01/2002, 15:13
Avatar de Chikis
Usuario no validado
 
Fecha de Ingreso: agosto-2001
Ubicación: Cuernavaca, Morelos, Mexico
Mensajes: 170
Antigüedad: 23 años, 2 meses
Puntos: 0
Re: Guardar y leer de una cookie

Hola, se podria hacer esto, que se ponga la funcion setcookie(); y en lugar de
setcookie(&quot;nombre&quot;, &quot;Juan&quot;);

se ponga una variable, algo asi

setcookie(&quot;login&quot;, &quot;$user&quot;);


es posible? o como puedo hacer eso para que se cree una cookie llamada login y que el otro sea el nombre del usuario?





<center><img border="0" src="http://www.efrance.fr/webonear/firma.png">
  #4 (permalink)  
Antiguo 11/01/2002, 15:35
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 23 años
Puntos: 69
Re: Guardar y leer de una cookie

Chikis, claro que se puede hacer, todo mi comentario sobre las cookies, fue meramente explicativo. O sea, no solo se puede poner cookies con valores fijos, sino que se pueden setear cookies con valores desde variables.

SAludos.

<hr><font size=2 face="verdana">- Pablo Daniel Rigazzi (Webstudio)
<font size=1 color="#333333">COORDINADOR PROYECTO REGIONALIZACION ARGENTINA
Visita <a href="http://www.web-studio.com.ar" target="_blank">Web Studio</a> - Tutoriales Photoshop</fo
  #5 (permalink)  
Antiguo 11/01/2002, 18:52
Avatar de Chikis
Usuario no validado
 
Fecha de Ingreso: agosto-2001
Ubicación: Cuernavaca, Morelos, Mexico
Mensajes: 170
Antigüedad: 23 años, 2 meses
Puntos: 0
Re: Guardar y leer de una cookie

y en una variable se pueden guardar mas datos?? no solo null setcookie(&quot;login&quot;, &quot;$user&quot;);
si no

setcookie(&quot;login&quot;, &quot;$user&quot;, &quot;$nick&quot;); etc... '??

<center><img border="0" src="http://www.efrance.fr/webonear/firma.png">
  #6 (permalink)  
Antiguo 11/01/2002, 20:45
 
Fecha de Ingreso: enero-2002
Ubicación: Dentro del corralón
Mensajes: 287
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: Guardar y leer de una cookie

Según el manual de PHP...
<BLOCKQUOTE><font size=1 face=arial>Citando:<hr height=1 noshade>
También puede utilizar arrays de cookies empleando la notación de array en el nombre de la cookie. Esto tiene como efecto establecer tantas cookies como elementos de array, pero cuando el script recibe la cookie, se guardan los valores en un array con el nombre de la cookie:

setcookie( &quot;cookie[three]&quot;, &quot;cookiethree&quot; );
setcookie( &quot;cookie[two]&quot;, &quot;cookietwo&quot; );
setcookie( &quot;cookie[one]&quot;, &quot;cookieone&quot; );
if ( isset( $cookie ) ) {
while( list( $name, $value ) = each( $cookie ) ) {
echo &quot;$name == $value&lt;br&gt;\n&quot;;
}
}

[/QUOTE]

se puede hacer lo que decís.
Siempre es bueno darse una vueltita por
<a href='ir.asp?http://www.php.net/manual/es/function.setcookie.php' target='_blank'>http://www.php.net/manual/es/function.se...</a>

Saludos.

Leonardo D'Angelo
Buenos Aires
Argentina
  #7 (permalink)  
Antiguo 12/01/2002, 10:43
Avatar de Chikis
Usuario no validado
 
Fecha de Ingreso: agosto-2001
Ubicación: Cuernavaca, Morelos, Mexico
Mensajes: 170
Antigüedad: 23 años, 2 meses
Puntos: 0
Re: Guardar y leer de una cookie

Sale gracias, havia olvidado el manual de php, me an ayudado bastantito y eso que yo no puse el 1 post jejeje

<center><img border="0" src="http://www.efrance.fr/webonear/firma.png">
  #8 (permalink)  
Antiguo 13/11/2007, 04:24
Avatar de jorjo  
Fecha de Ingreso: abril-2007
Ubicación: España
Mensajes: 90
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Guardar y leer de una cookie

Hola, antes de todo, muchas gracias por su ayuda.

Tengo el siguiente problema:

Tengo una web en 3 idiomas, y me gustaría que si un usuario se la mira en uno de estos, la próxima vez que entre se le muestre ese idioma.

Hasta aquí todo bien, cuando selecciono uno de los idiomas que no es el de "por defecto", si que me lo recuerda si cierro el navegador y lo vuelvo a abrir, pero si quiero volver a poner el idioma por defecto, que no me deja...

Cada idioma tiene su index.php, aquí os pongo los códigos:

index.php
Código PHP:
header("Content-Type: text/html; charset=utf-8");
setcookie("idioma""cat"time()+604800);
if(
$HTTP_COOKIE_VARS["idioma"] == "esp"){
    
header("Location: http://www.dominio.com/index-esp.php");
    exit;
}elseif (
$HTTP_COOKIE_VARS["idioma"] == "eng"){
    
header("Location: http://www.dominio.com/index-eng.php");
    exit;

index-esp.php
Código PHP:
header("Content-Type: text/html; charset=utf-8");
setcookie("idioma""esp"time()+604800); 
index-eng.php
Código PHP:
header("Content-Type: text/html; charset=utf-8");
setcookie("idioma""eng"time()+604800); 
Un saludo y gracias
  #9 (permalink)  
Antiguo 13/11/2007, 04:47
Avatar de jorjo  
Fecha de Ingreso: abril-2007
Ubicación: España
Mensajes: 90
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Guardar y leer de una cookie

Bueno, pues lo he solucionado así:

index.php
Código PHP:
if($HTTP_COOKIE_VARS["idioma"] == "cat"){
    
header("Location: http://www.dominio.com/index-cat.php");
    exit;
}elseif (
$HTTP_COOKIE_VARS["idioma"] == "esp"){
    
header("Location: http://www.dominio.com/index-esp.php");
    exit;
}elseif (
$HTTP_COOKIE_VARS["idioma"] == "eng"){
    
header("Location: http://www.dominio.com/index-eng.php");
    exit;

index-cat.php
Código PHP:
header("Content-Type: text/html; charset=utf-8");
setcookie("idioma""cat"time()+604800); 
index-esp.php
Código PHP:
header("Content-Type: text/html; charset=utf-8");
setcookie("idioma""esp"time()+604800); 
index-eng.php
Código PHP:
header("Content-Type: text/html; charset=utf-8");
setcookie("idioma""eng"time()+604800); 
Un saludo
  #10 (permalink)  
Antiguo 18/05/2008, 18:17
(Desactivado)
 
Fecha de Ingreso: febrero-2008
Ubicación: Argentina, Santa Fe, Rosario
Mensajes: 350
Antigüedad: 16 años, 9 meses
Puntos: 5
Respuesta: Guardar y leer de una cookie

Creo que diga un nombre no va a salir así porque así...

Lo único que podés hacer es que en el inicio le preguntes:

Cita:
¿Cual es tu nombre?
[Formulario Text]
Enviar
Entonces le ponés un cookie con su nombre, cada vez que entra ya tenes el nombre en su propia pc y no tenes que utilizar mysql

También le podés capturar la IP (Identificación Personal) pero tendrías problemas de que una forma tenga una IP Dinámica

Salu2
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 14:15.