Comunidad de diseño web y desarrollo en internet online

3 hurras por los ingenieros de PHP

Citar            
MensajeEscrito el 06 Ene 2012 12:38 pm
Que tal amigos. Feliz día de reyes pa' l que se haya portado bien ...

Tengo un leve problema existencia .... PHP me está puteando

Estoy declarando una variables de sesión cuyo valor es un string que contiene varios guiones, y la arquitectura inteligente de PHP ha decidido, así sin consultar que mejor me hace un array ...

Me explico. Mi variable es por ejemplo:

$_SESSION['referencia'] = "1e3u-43a2-o1hy2";

Pues PHP no me guarda una variable de sesión única, sino que cree que es un array y me guarda un array de sessión tal como:

$_SESSION['referencia'][0] ="1e3u";
$_SESSION['referencia'][1] ="43a2";
$_SESSION['referencia'][2] ="o1hy2";


En serio me parece una buena idea de los ingenieros de PHP, pero ahora ya en serio, cómo diablos desactivo esta maravilla de la técnica? me estoy volviendo loco.


Un millón de gracias y un trocico de carbón dulce pa`l que me ayude.

Por solonova

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Ene 2012 03:31 pm
¿Podrías indicar qué versión de PHP estás usando?, y si hay algo más en el código, quizá deberías poner un código de ejemplo para reproducir el problema porque te comento que en mi copia local de PHP, la cual es la versión 5.3.2, no sucede lo que comentas. Mi código de ejemplo es este:

Código PHP :

   session_start();
   $_SESSION['referencia'] = "1e3u-43a2-o1hy2";
   print_r($_SESSION['referencia']);

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 06 Ene 2012 03:53 pm
Muchas gracias DriverOp. La versión PHP de mi servidor es la 5.2.17

La verdad es que estoy rayadísimo, porque ocurre que hago un código de ejemplo en dos archivos , ejemplo a.php y b.php y el error nunca ocurre.

El código de ejemplo es simple:

Código :

<?php $_SESSION['productos']="as34-fgr65-hgtr54-er78-rth8-";?>
<?php echo $_SESSION['productos'];?><br />
<a href="b.php">Ir a B</a>



El código original es muy extenso y complejo y me es imposible pegarlo aquí pues no se entenderá nada. Pero me he dado cuenta de que ocurre al actualizar la página.

Es decir, que cuando creo e imprimo (con print_r($_SESSION);) la variable de sesión la primera vez aparece como una variable string, así:

[productos] => as34-fgr65-hgtr54-er78-rth8-

pero cuando actualizo la página de repente se ha transformado en un array:

[productos] => Array
(
[0] => as34
[1] => fgr65
[2] => hgtr54
[3] => er78
[4] => rth8
[5] =>
)


Este tema me tiene desquiciado. Gracias de nuevo.

Por solonova

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Ene 2012 03:55 pm
Olvidé decir que por supuesto hago el session_start(); en la primera línea de todos mis códigos.

Gracias

Por solonova

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Ene 2012 03:59 pm
Otra cosa curiosa que ocurre es que en el navegador Chrome, al actualizar borra el valor de todas las variables de session, aunque la variable en si la mantiene, tan solo aparecen vacías....

Expedientes X

Por solonova

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Ene 2012 04:19 pm
jejej puedo apostar mi PlayStation 1, a que en algun lado de tu extenso codigo, estas haciendo un explode, :),
las sessiones en PHP son solo datos serializados , nada mas jeej, bueno para que veas lo que te digo crea 2 archivos simples en las cuales creas las sessiones, en una escribes los datos y en la otra los recuperas :). veras lo que digo ademas la version de PHP que tienes la 5.2.17 es una version estable. :),

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 06 Ene 2012 04:33 pm
solonova:
Pues nop...

Acabo de hacer dos archivos, uno conteniendo el código de mi ejemplo al que le agregué un link a otro archivo que solo hace session_start() y muestra el valor de $_SESSION['referencia']; inmediatamente después y nada, el valor sigue siendo el mismo string que se establece en el archivo referido. Es lo que ha dicho tuadmin que deberías hacer para probar.

Si el problema persiste, vas a tener que comenzar a quitar código del script donde se provoca hasta aislar las partes que causan el problema. Sí, ya sé que es un bardo pero no veo otra forma de solucionarlo.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 06 Ene 2012 04:55 pm
Gracias tuadmin y DriverOp.

Si tuadmin ya he realizado esas pruebas con archivos simples aparte y todo correcto. Y, te debo una Play porque si, hay un explode() en el extenso código pero no del array de sessión sino de un valor recuperado de la BD, que a su vez también tiene como separador el guión medio. No debería afectar.

Gracias por vuestra ayuda, de momento he evitado el problema quitando la redirección que desde un formulario se hacía para evitar la actualización con F5 en el navegador, por lo tanto ahora cuando se actualiza se reenvían todos los datos del formulario y no ocurre este extraño fenómeno de PHP.

Aunque ya no es un problema para mi me quedo con esta terrible duda que creo solo los creadores de PHP me podrían aclarar.

Gracias de nuevo.

Por solonova

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Ene 2012 05:02 pm

tuadmin escribió:

jejej puedo apostar mi PlayStation 1, a que en algun lado de tu extenso codigo, estas haciendo un explode, :),
las sessiones en PHP son solo datos serializados , nada mas jeej, bueno para que veas lo que te digo crea 2 archivos simples en las cuales creas las sessiones, en una escribes los datos y en la otra los recuperas :). veras lo que digo ademas la version de PHP que tienes la 5.2.17 es una version estable. :),


Ahh, esto funciona en IE y Firefox, pero no en Chrome, donde el valor de las variables de sesión desaparece de un documento a otro.

En fin.....

Por solonova

8 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.