Foros del Web » Programando para Internet » PHP »

pérdida de la sesion

Estas en el tema de pérdida de la sesion en el foro de PHP en Foros del Web. Hola qtal, tengo el siguiente problema Tengo 2 scripts: prueba.php y prueba2.php en prueba.php tengo lo siguiente: session_start(); $_SESSION["usuario"] = "Hector" y en prueba2.php tengo ...
  #1 (permalink)  
Antiguo 05/01/2005, 03:50
 
Fecha de Ingreso: marzo-2002
Mensajes: 188
Antigüedad: 15 años, 9 meses
Puntos: 0
pérdida de la sesion

Hola qtal,

tengo el siguiente problema
Tengo 2 scripts: prueba.php y prueba2.php

en prueba.php tengo lo siguiente:

session_start();
$_SESSION["usuario"] = "Hector"

y en prueba2.php tengo lo siguiente:
session_start();
echo $_SESSION["usuario"];

Si trabajo desde local puedo ver "Hector" desde prueba2.php
Pero si trabajo desde el servidor donde tengo que colgar la aplicación no veo nada. Es como si al pasar de un php al otro se perdiera el valor de la sesión.

He notado (cuando la ejecuto desde el servidor) que en la URL me aparece lo siguiente: prueba2.php?PHPSESID=73g4783bd8374

Imagino que es algún tema de configuración, pero mirando el phpinfo() he visto que, en lo que se refiere al apartado de las sessions, es igual en ambos casos. Las versiones de PHP tb son iguales

Alguien sabe porque no se propaga ese valor en el servidor igual que se me propaga en local?

Gracias, saludos y Feliz Año nuevo a [email protected]
  #2 (permalink)  
Antiguo 05/01/2005, 04:26
 
Fecha de Ingreso: marzo-2002
Mensajes: 188
Antigüedad: 15 años, 9 meses
Puntos: 0
una cosa que no he comentado antes. Mirando el phpinfo(), he visto que el directorio donde se guardan temporalmente las sesiones se llama tmp.
Ese directorio no estaba creado. Lo he creado pero continua sin resolverse mi problema. En local, he visto que al crear la sesión, sí que se crea un ficherito de nombre sess_d01054b1f16bd... En el servidor no se crea ese ficherito, y la carpeta que he creado (tmp), tiene los permisos 777.
No se me debería crear ahí un ficherito? Se tendría que reiniciar el servidor para que crease ese ficherito en el directorio tmp que he creado? O no van por ahí los tiros?
gracias,
  #3 (permalink)  
Antiguo 05/01/2005, 04:58
 
Fecha de Ingreso: marzo-2002
Mensajes: 188
Antigüedad: 15 años, 9 meses
Puntos: 0
por si es importante,
mirando el phpinfo() en el servidor veo que el session.use_cookies y el session.use_trans_sid los tengo los dos a "On"
  #4 (permalink)  
Antiguo 05/01/2005, 05:58
 
Fecha de Ingreso: marzo-2002
Mensajes: 188
Antigüedad: 15 años, 9 meses
Puntos: 0
hola qtal,

ya lo he solucionado.
El tema era (por lo menos a mi ahora me funciona) que tenía que poner el session_start() al inicio del PHP. Por lo que he podido ver, esto sólo hace falta en el PHP donde se da valor a la variable de sesión, pq en los otros PHP no lo tengo al principio del código y me recupera bien el valor.

De todos modos sigo sin entender porque en local no hace falta que lo coloque al inicio del script. Si alquien sabe el motivo y me lo quiere explicar ...

gracias a todos. Saludos
  #5 (permalink)  
Antiguo 06/01/2005, 07:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Albertron

En principio siempre hace falta usar session_start() donde quieras usar sesiones .. ya sea para darles varlor (crearlas) o para recuperar su valor (leerlas).

Ahora, .. en PHP existe la configuración (php.ini) session.auto_start que en tu caso puede que lo uses a ON .. esa directiva hace que no sea necesario usar la función session_start() en todo script que uses sesiones (pero es más recomendable usarla donde lo requieras ni más ni menos).

También si usas algo tipo:
<?
include ("nose.php");
// por aquí pretendes usar $_SESSION ...
?>

Si en tu include que llamas .. (en nose.php) usas session_start() .. no es necesario que lo uses en ese mismo script pues ya lo hace otro que lo llama ese mismo.

Un saludo,
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 08:18.