Foros del Web » Programando para Internet » PHP »

¿A que se puede deber?

Estas en el tema de ¿A que se puede deber? en el foro de PHP en Foros del Web. Hago lo siguiente: 1.- Tengo un formulario... 2.- Recojo los valores y lo guardo haciendo el post hacia la misma página. Y la parte donde ...
  #1 (permalink)  
Antiguo 16/04/2003, 01:24
 
Fecha de Ingreso: abril-2003
Mensajes: 606
Antigüedad: 21 años
Puntos: 2
¿A que se puede deber?

Hago lo siguiente:

1.- Tengo un formulario...
2.- Recojo los valores y lo guardo haciendo el post hacia la misma página. Y la parte donde guarda esta en la parte superior del mismo formulario
3.- Una vez que lo guardo seteo una variable de sesion.
4.- Redirecciono a una página con mensajes.
5.- Recojo la variable de session.
6.- No me la reconoce
7.- Si vuelvo a enviar el formulario ahora si reconoce la variable de sesión.

¿A q se puede deber todo esto?
¿Y como hago para que me reconozca la variable desde el principio?
Lo mas raro es que no marca errores ni nada por el estilo.

Gracias a los que me puedan colaborar
  #2 (permalink)  
Antiguo 16/04/2003, 01:44
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
Desde el punto de vista teórico puede ser una tonteria, pero empíricamente he comprobado que cuando creas una variable de session y la intentas recuperar inmediatamente suele dar errores.

Prueba a "ralentizar" el proceso para que le de tiempo a guardar la variable antes de intentar recueprarl.a
__________________
M a l d i t o F r i k i
  #3 (permalink)  
Antiguo 16/04/2003, 11:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El problema principal es que las variabels de sesión no quedan disponibles hasta que se hace una petición al servidor .. osease:

hacer por ejemplo esto:

Código PHP:
<?
session_start
();
$_SESSION['variable']=valor;

// y .. en el mismo flujo del script intentar:
echo $_SESSION['variable'];

// ahí todavía no será reflejado en $_SESSION['variable'] 
// su valor recien asignado hasta que no se "envie al servidor" (se haga la petición: via recarga página o se lea esa variable sesion en otra página ..)

?>
Otro detalles son por ejemplo como propagues el SID ..

SI usas cookie para propagar el SID y tu navegador de las pruebas las acepta .. junto a que el SID lo propagues de forma automática .. No tendras problemas ..

Pero si el SID lo propagas de forma automática y no usas propagación por cookies (osease, solo dejas a PHP reescriba los <tag> como <a> <form .. > etc ..) Depende como hagas el redireccionamiento .. es probable que estes perdiendo el SID por el camino ..

Ejemplo:
Si usas redireccionamiento tipo:
Código PHP:
header ("location: talpagina.tal"); 
o via javascript o <META> tag .. Ahí PHP no va añadir el SID de forma automática .. Tendrías que añadirlo tu manualmente en esos casos concretos generando el SID .. por ejemplo:
Código PHP:
$sid=session_name()."=".session_id();
header("location: pagina.tal?$sid"); 
Todo esto lo determinan las directivas de tu php.ini (en un phpinfo() lo puedes ver):

session.use_cookies = 1 (a 1 indica que usas propagación via cookies del SID)
session.use_trans_sid = 1 (a 1 indica que usas propagación del SID automático)
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fields et=" (y .. los tag HTML que se van a reescribir para q PHP añada el SID si usas la anterior directiva en "automático" ..


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 02:20.