Foros del Web » Programando para Internet » PHP »

$_SESSION=$_POST reescribe el array desde cero... y ¿2 sesiones simultáneas?

Estas en el tema de $_SESSION=$_POST reescribe el array desde cero... y ¿2 sesiones simultáneas? en el foro de PHP en Foros del Web. Hola don foro, y foreros y foreras!! a ver, se me ha hecho un nudo en la cabeza tengo 2 preguntas puntuales que se cruzan: ...
  #1 (permalink)  
Antiguo 07/07/2007, 15:20
 
Fecha de Ingreso: mayo-2002
Ubicación: Mendoza ebria y montañosa
Mensajes: 165
Antigüedad: 22 años, 5 meses
Puntos: 0
$_SESSION=$_POST reescribe el array desde cero... y ¿2 sesiones simultáneas?

Hola don foro, y foreros y foreras!!

a ver, se me ha hecho un nudo en la cabeza tengo 2 preguntas puntuales que se cruzan:

1) tengo un formulario que envía la info de los campos a una página de verificación en la que se hace un:

Código PHP:
$_SESSION=$_POST
la idea es que al voler no se hayan perdido los datos ingresados... Por tanto en los value del formulario pongo los $_SESSION['nombre'], $_SESSION['apellido'], etc. Bien, hasta acá todo esto anda bien y no hay dudas al respecto.
El problema es que cuando digo $_SESSION=$_POST se borran todas las otras variables de sesión que tenía guardadas y que no pertenecían a los valores del formulario y que me interesa se conserven en la sesión. Entonces, ¿cómo hago para que esto no suceda, para que no se pierdan dichas variables?, o ¿qué alternativa existe para esto que no sea ir variable por variable de tipo:

Código PHP:
$_SESSION['nombre']=$_POST['nombre'];
$_SESSION['nombre']=$_POST['nombre'];
etc 
2) Esta otra duda surge de la primera por inercia del sentido común: ¿y qué pasa si abro, en vez de una, dos sesiones diferentes para almacenar esta información que en realidad es de índole distinta?

Código PHP:
 <?
session_name
('curriculum');
session_start();
session_register('user');
session_register('activo');

session_name('curriculum_busqueda');
session_start();
session_register('edad');
session_register('sexo');
?>
una cosa así... sería la idea... pero de esto si que no entiendo nada, habría q cerrar una y abrir la otra, se abren las dos conjuntamente, hay q tocar el php.ini para cambiar alguna configuración???, en fin, ¿¿es necesario crear 2 sesiones diferentes o me las puedo arreglar con una???!

Estas son las dudas que me atacan, gracias por por leer hasta acá
chapulín
  #2 (permalink)  
Antiguo 08/07/2007, 09:48
Avatar de ebe
ebe
 
Fecha de Ingreso: marzo-2004
Ubicación: Guatemala
Mensajes: 363
Antigüedad: 20 años, 8 meses
Puntos: 11
Re: $_SESSION=$_POST reescribe el array desde cero... y ¿2 sesiones simultáneas?

Para tu punto 1:
Lo correcto es que al enviar la información de tu formulario guardes estos valores en una variable de sesión de la siguiente manera:

Código PHP:
$_SESSION['formulariouno'] = $_POST
de esta manera todos tus valores enviados vía post serán guardados en un array asociativo bajo el índice de formulariouno que evitará que se te sobre-escriban tus otras variables de sesión; Para acceder a cada uno de los valores sería así:

Código PHP:
$_SESSION['formulariouno']['nombre']
$_SESSION['formulariouno']['apellido'
etc.

Punto. 2:

En este caso veo que puedes aplicar la misma temática del punto uno, ya que si asignas tus valores cambiando únicamente el índice de dicha variable de sesión puedes tener de cierta forma separados tus tipos o fuentes de datos (solo es que asignes a dicha variable de sesión la fuente por la que vienen los datos, sea post, get etc), también chequeate este link que habla sobre el uso de session_register.

un saludo
__________________
http://dev.wsnetcorp.com

Última edición por ebe; 08/07/2007 a las 22:03
  #3 (permalink)  
Antiguo 08/07/2007, 14:28
 
Fecha de Ingreso: mayo-2002
Ubicación: Mendoza ebria y montañosa
Mensajes: 165
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: $_SESSION=$_POST reescribe el array desde cero... y ¿2 sesiones simultáneas?

Hola ebe!!, te pasaste che!!!
Muchísimas gracias por responder y por tamaña respuesta... je!

Así lo haré entonces, $_SESSION['form'] = $_POST; !

Lo de abrir 2 sesiones se me había ocurrido como posibilidad para no perder esas variables que estaban en la sesión... pero definitivamente para qué complicarse si con esto que me decís vos se soluciona el problema y encima dichas variables provinientes del form quedan discriminadas como tales (dentro del arreglo), es decir se logra la claridad para programar y q no se confundan las variables de sesión...

Miré, más o menos, lo de session_register en php.net y, te diré, muy bien no me llevo con el inglés y muy bien no me llevo con el manual oficial de php , jeje, pero calculo que lo que me querías recalcar es esto:

Cita:
Caution If you want your script to work regardless of register_globals, you need to instead use the $_SESSION array as $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where the PHP directive register_globals is disabled.
No sabía que el session_register no funcionaba con el register_globals desactivado... menos mal que me lo decís!!!
Yo lo usaba como para inicializar las variables de sesión, pero parece que no hace falta... eso es lo q deduzco de mi decodificación del inglés... pero no me queda claro...

Pregunto entonces:
  • ¿Es necesario inicializar las variables de sesión?,
  • ¿se inicializan solas al otorgarles un valor?,
  • si intento leer una variable de sesión que no ha sido inicializada me tira un error:
Código:
Notice:  Undefined index:  nombre in c:\easyphp1-8\www\form.php on line 29 
que lo soluciono con un isset($_SESSION['nombre'])... ¿es esta la forma entonces??
desde ya muchas gracias gente forera, un saludo,
chapulín
  #4 (permalink)  
Antiguo 08/07/2007, 16:12
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 18 años, 4 meses
Puntos: 19
Re: $_SESSION=$_POST reescribe el array desde cero... y ¿2 sesiones simultáneas?

no es necesario usar session_register ya que estas usando variables superglobals $_SESSION, con solo darle los valores que quieras a cada una de ellas estaria bien
por ejemplo que tu hiciste $_SESSION['form'] = $_POST, lo que si no tenes que olvidarte de usar siempre session_start(); al comienzo de todas las paginas

y con respecto al error, es ovbio que te va a tirar error si es que la variable nombre no fue definida aunquesea del siguiente modo
$_SESSION['nombre'] = ""

Saludos
espero haberte ayudado al menos esa fue la intencion
  #5 (permalink)  
Antiguo 08/07/2007, 17:57
Avatar de ebe
ebe
 
Fecha de Ingreso: marzo-2004
Ubicación: Guatemala
Mensajes: 363
Antigüedad: 20 años, 8 meses
Puntos: 11
Re: $_SESSION=$_POST reescribe el array desde cero... y ¿2 sesiones simultáneas?

Cita:
¿Es necesario inicializar las variables de sesión?,
Pues utilizando $_SESSION['nombre'] = "valor" estas inicializandola y no es necesario que utilices session_register como te diste cuenta en el manual .

Cita:
¿se inicializan solas al otorgarles un valor?,
sí, previamente llamando tu session_start().

y la manera en la que compruebas esta bien para saber si ha sido creada tu variable de sesión o no, pero en aplicaciones mas avanzadas debes comprobar que si ésta variable tiene un valor definido necesario para tu aplicación.

un saludo.
__________________
http://dev.wsnetcorp.com

Última edición por ebe; 08/07/2007 a las 22:07
  #6 (permalink)  
Antiguo 08/07/2007, 21:07
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 18 años, 4 meses
Puntos: 19
Re: $_SESSION=$_POST reescribe el array desde cero... y ¿2 sesiones simultáneas?

ebe no hacia falta copiar algo uqe yo ya habia escrito arriba
  #7 (permalink)  
Antiguo 08/07/2007, 21:58
Avatar de ebe
ebe
 
Fecha de Ingreso: marzo-2004
Ubicación: Guatemala
Mensajes: 363
Antigüedad: 20 años, 8 meses
Puntos: 11
Re: $_SESSION=$_POST reescribe el array desde cero... y ¿2 sesiones simultáneas?

si miras detenidamente mi respuesta te daras cuenta que en ningún momento he utilizado copiar/pegar, únicamente con el texto introducido por chapu. Definir de una mejor forma las respuestas para las preguntas que chapu ha hecho es diferente. Y un consejo para hacer mejor el foro, trata de ser más cuidadoso con tu ortografia.

saludos.
__________________
http://dev.wsnetcorp.com
  #8 (permalink)  
Antiguo 08/07/2007, 22:21
 
Fecha de Ingreso: mayo-2002
Ubicación: Mendoza ebria y montañosa
Mensajes: 165
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: $_SESSION=$_POST reescribe el array desde cero... y ¿2 sesiones simultáneas?

Siempre se ayuda muchachos .....!!

ebe y korg1988 MIL GRACIAS a los dos!!!
y, vale decir, entre todos aportamos, granito a granito... de eso se trata no?! Algunos granitos serán granos y otros serán granititos, cada uno da lo que puede y cada día dará granitos de arena más grandes!! (yo aún estoy en la fase de nanogranitos... jeje)

Importante lo q dice ebe a modo de crítica constructiva para todos los foreros en el sentido de:

Cita:
definir de una mejor forma las respuestas para las preguntas
esto hace que sea más claro y ágil el foro (para quienes de momento preguntan y responden y para quienes llegan aquí buscando respuestas por el buscador o por vaya a saber dónde!!)

Muchas gracias por los aportes, me sirvieron un montón!!
un abrazo y los vemo' por la wé,
chapulín
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 12:59.