Foros del Web » Programando para Internet » PHP »

Problema ilógico al guardar un array en variable de sesión

Estas en el tema de Problema ilógico al guardar un array en variable de sesión en el foro de PHP en Foros del Web. Buenas. Soy nuevo como forero (no como lector), ya que soy bastante aplicadillo, y cuando tengo una duda, 1º: Hago mil pruebas para intentar comprenderla ...
  #1 (permalink)  
Antiguo 24/04/2009, 07:02
 
Fecha de Ingreso: abril-2009
Mensajes: 4
Antigüedad: 15 años
Puntos: 0
Exclamación Problema ilógico al guardar un array en variable de sesión

Buenas. Soy nuevo como forero (no como lector), ya que soy bastante aplicadillo, y cuando tengo una duda, 1º: Hago mil pruebas para intentar comprenderla y solucionarla por mi mismo (es por esto que me gusta la programación), 2º: Googleo como loco.Pero en esta ocasión me he sentido sobrepasado.

El problema es en el siguiente código:

Código PHP:
$_SESSION[matriz] = array("uno","dos","tres");

echo 
"<p>".json_encode($_SESSION)."</p>";

$matriz = array("tres","cuatro","cinco");

echo 
"<p>".json_encode($_SESSION)."</p>"
La salida que espero, lógicamente es:

Código HTML:
{"matriz":["uno","dos","tres"]}

{"matriz":["uno","dos","tres"]}
Pero extrañamente escribe:

Código HTML:
{"matriz":["uno","dos","tres"]}

{"matriz":["tres","cuatro","cinco"]}
Es decir: al dar valor a $matriz ¡¡¡sobreescribe $_SESSION[matriz]!!! Este problema ocurre únicamente si el dato que se guarda es una matriz, no ocurre con los demás tipos de datos. Enga, a ver si entre todos le encontramos una explicación (yo creo que es un bug) y le buscamos solución.

Muchas gracias por adelantado a quien por lo menos, de su opinión.
  #2 (permalink)  
Antiguo 24/04/2009, 12:30
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema ilógico al guardar un array en variable de sesión

Tal vez sea porque estas poniendo el indice asociativo sin comillas $_SESSION[matriz], cuando lo correcto es: $_SESSION['matriz'].

Sin las comillas, PHP asume que matriz es una constante en lugar de una cadena. Aunque me parece muy raro que te haga ese cambio, creo que si podria ser la causa.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 24/04/2009, 12:33
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema ilógico al guardar un array en variable de sesión

O tal vez tiene que ver con register globals.

  #4 (permalink)  
Antiguo 24/04/2009, 21:03
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: Problema ilógico al guardar un array en variable de sesión

Aitgud:

Ademas de lo acertado del amigo Triby.
Es verdaderamente un bug de las sesiones.
Personmalmente me ha pasado que cuando
una variable de session (matriz) se encuentra
en el codigo una variable normal ($matriz)
la variable de session es sustituida por
la segunda.

Conclusion: hay que tener cuidado con el
manejo de las variables de session y cuando
escogemos una que se llame por ejemplo,
sesion, no debemos poner en el script o codigo
otra variable que se llame $sesion.

Este problema me ha quebrado la cabeza en dos
tristes y desafortunadas oportunidades.

Saludos
Franco
  #5 (permalink)  
Antiguo 28/04/2009, 16:34
 
Fecha de Ingreso: abril-2009
Mensajes: 4
Antigüedad: 15 años
Puntos: 0
Respuesta: Problema ilógico al guardar un array en variable de sesión

Muchas gracias por las respuestas, luego pruebo, aunque creo recordar que ya hice la prueba de Triby. De todas maneras recuerdo que solo ocurre con matrices y no por ejemplo con strings o int.
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 15:34.