Foros del Web » Programando para Internet » PHP »

Cookies con Arrays

Estas en el tema de Cookies con Arrays en el foro de PHP en Foros del Web. He intentado hacer un cookie con un array, este es mi "intento": Código PHP: setcookie ( "$dat[0]" , $desde_bd [ 'nombre' ], mktime ( 5 ...
  #1 (permalink)  
Antiguo 08/09/2003, 05:08
Avatar de Ánima  
Fecha de Ingreso: julio-2002
Ubicación: Catalunya, Barcelona.
Mensajes: 538
Antigüedad: 21 años, 9 meses
Puntos: 1
Pregunta Cookies con Arrays

He intentado hacer un cookie con un array, este es mi "intento":
Código PHP:
setcookie("$dat[0]",$desde_bd['nombre'],mktime(5,30,0,$mes,$dia,$año),"/","www.dominio.com");
setcookie("$dat[1]",$desde_bd['contraseña'],mktime(5,30,0,$mes,$dia,$año),"/","www.dominio.com");
setcookie("$dat[2]",$desde_bd['email'],mktime(5,30,0,$mes,$dia,$año),"/","www.dominio.com"); 
las variables $mes, $dia y $año las calculo para que el cookie se elimine a un cierto tiempo, no creo que sea ese el problema.
el error q me da es este en las 3 lineas:

Warning: Cannot modify header information - headers already sent by (output started at pagina.php:12)
  #2 (permalink)  
Antiguo 08/09/2003, 05:19
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Hola,

setcookie() es igual que header(): no puedes enviar salida al navegador antes, ni HTML, ni echo, ni espacios en blanco. En el mensaje de error te dice que enviaste salida en la linea 12 del fichero pagina.php.

Y creo que estas usando mal los nombres de las cookies. Tal como lo tienes estas creando 3 cookies con los nombres almacenados en los elementos 0, 1 y 2 del array $dat. Si quieres crear las cookies como un array de cookies con nombre dat, el primer parametros debe ser "dat[0]", "dat[1]" y "dat[2]". Asi luego podras acceder a cada una con $_COOKIES['dat'][0], ...

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 09/09/2003, 06:22
Avatar de Ánima  
Fecha de Ingreso: julio-2002
Ubicación: Catalunya, Barcelona.
Mensajes: 538
Antigüedad: 21 años, 9 meses
Puntos: 1
y como lo borro? he probado con:

setcookie($dat);

pero n funciona...

(lo tengo puesto como me dijistes tu, sin $ y funciona pero como los borro?)
  #4 (permalink)  
Antiguo 09/09/2003, 06:40
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Hola,

Para borrar una cookie, segun el manual (www.php.net/setcookie), lo que hay que hacer es usar la misma sentencia que usaste para crearla, cambiando el valor por "" y la fecha de expiracion por una fecha en el pasado. El resto de parametros deben ser iguales. Para borrar ese array, debes borrar cada uno de los elementos. Asi, si creaste el array con:
Código PHP:
setcookie("dat[0]" ,$desde_bd['nombre'],mktime(5,30,0,$mes,$dia,$año),"/","www.dominio.com");
setcookie("dat[1]" ,$desde_bd['contraseña'],mktime(5,30,0,$mes,$dia,$año),"/","www.dominio.com");
setcookie("dat[2]" ,$desde_bd['email'],mktime(5,30,0,$mes,$dia,$año),"/","www.dominio.com"); 
para borrarlos todos los elementos harias:
Código PHP:
setcookie("dat[0]" ,"",time() - 3600,"/","www.dominio.com");
setcookie("dat[1]" ,"",time() - 3600,"/","www.dominio.com");
setcookie("dat[2]" ,"",time() - 3600,"/","www.dominio.com"); 
time()-3600 es el timestamp de hace una hora. El navegador al recibir eso caduca la cookie.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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:46.