Foros del Web » Programando para Internet » PHP »

Pierdo las variables de sesion por el camino

Estas en el tema de Pierdo las variables de sesion por el camino en el foro de PHP en Foros del Web. Hola gente! Bueno, tengo un problemilla con las sesiones, no me reconoce las variables registradas en una sesion, desde otro archivo distinto al de registro ...
  #1 (permalink)  
Antiguo 03/05/2004, 15:48
Avatar de romeo77  
Fecha de Ingreso: diciembre-2003
Ubicación: Vete tu a saber...
Mensajes: 65
Antigüedad: 20 años, 4 meses
Puntos: 0
Pierdo las variables de sesion por el camino

Hola gente!

Bueno, tengo un problemilla con las sesiones, no me reconoce las variables registradas en una sesion, desde otro archivo distinto al de registro de las variables de sesion.

Tengo un gestion.php donde registro así:

Código PHP:
session_start();
$_SESSION['log_user'] = $log_user;
$_SESSION['nom_user'] = $array["nom_user"]; 
$_SESSION['ape_user'] = $array["ape_user"]; 
header('location: /inicio/index.php');
exit; 
Y luego en el index.php tengo un:
Código PHP:
<?php include ("includes/menu.php");?>
En el cual a su vez tengo:
Código PHP:
....
session_start();
if (!isset(
$_SESSION['log_user'])) {...} else {...} 
Pero el else jamás se ejecuta, es decir, no reconoce
Código PHP:
$_SESSION['log_user'
Tengo un PHP Version 4.3.1
register_globals=On
session.use_cookies=1

Que puede ser esto¿?
Alguien sabe¿?

Un saludo.

Última edición por romeo77; 03/05/2004 a las 15:50
  #2 (permalink)  
Antiguo 03/05/2004, 15:52
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 22 años, 8 meses
Puntos: 9
creo que te falta session_register();
  #3 (permalink)  
Antiguo 03/05/2004, 16:04
Avatar de romeo77  
Fecha de Ingreso: diciembre-2003
Ubicación: Vete tu a saber...
Mensajes: 65
Antigüedad: 20 años, 4 meses
Puntos: 0
Creo que no hace falta a partir de la 4.0 version de PHP porque el array $_SESSION es superglobal.
De todas formas también lo probé y nada.
  #4 (permalink)  
Antiguo 03/05/2004, 17:14
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 22 años, 8 meses
Puntos: 9
si, bueno fuì un poco explícito, la cuestión es usar session_register y session_start, al mismo tiempo en todas las sentencias, no importa si se usa en diferentes archivo o solo en uno, la cosa es llevarlas a cabo, me entiendes?
  #5 (permalink)  
Antiguo 04/05/2004, 02:02
Avatar de romeo77  
Fecha de Ingreso: diciembre-2003
Ubicación: Vete tu a saber...
Mensajes: 65
Antigüedad: 20 años, 4 meses
Puntos: 0
Pues no, no entiendo...
¿Que registro?
¿De que me sirve session_register(); si $_SESSION es superglobal?
  #6 (permalink)  
Antiguo 04/05/2004, 06:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si propagas el SID en cookies bajo: session.use_cookies = 1 .. asegurate de usar un navegador que acepte cookeis ya que dicho SID (Identificador único de sesión) lo estás propagando en una cookie).

El resto de configuración de sesiones como:
session.use_trans_sid no debería influir ya que justamente en un redireccionamiento tipo "header("location: ....")" PHP no sobreescribe dicho URL para propagarle el SID como así lo hace en links, formularios (con un campo hidden o en el action ..) y otros tag's HTML que define la directiva siguiente: allow_url_rewrite del mismo php.ini


Un saludo,

PD: lado2mx ..hay que ponerse al dia con el tema de las sesiones (si uas PHP 4.1.0 en adelante):

www.php.net/session

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 04/05/2004, 15:25
Avatar de romeo77  
Fecha de Ingreso: diciembre-2003
Ubicación: Vete tu a saber...
Mensajes: 65
Antigüedad: 20 años, 4 meses
Puntos: 0
Lo he probado aceptando todas las cookies en localhost, y nada.

De todos modos, es necesario propagar el SID¿?, es decir, yo debo hacer algo para propagarlo¿?

Yo creía que una vez hiciera:
Código PHP:
session_start();
$_SESSION['variable'] = "algo"
Ese valor permanecería, y esa variable estaría accesible desde cualquier archivo, hasta que se cerrara o se destruyeran los datos de la sesion...
  #8 (permalink)  
Antiguo 04/05/2004, 15:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si, es necesario propagar el SID .. ya sea que PHP lo haga en cookies (bajo la configuración que describí en anterior mensaje) o bien lo haces tu manualmente en los scripts que saltes desde el que las crea y los que quieren usarlo.

El "SID" relaciona por su nombre e ID (nombre=3487asdf868asdf65) el archivo que se crea en el servidor que sirve de "contenedor" a tus varaibles de sesión .. Ese ID es único ..

La función session_start() se usa justamente para determinar si se va a usar un SID válido que llegue propagado a ese script que use dicha función o bien se creará uno nuevo si no llega ninguno válido.

Es decir .. del script donde creas tus variables en la sesión hacia otros debes pasar por algún link, formulario .. redireccionamiento automático ..etc y es ahí donde tendrás que propagar el SID de forma manual o bien usar el "PC cliente" con cookies como "puente" y no preocupartes así de tener que propagarlo "a mano" en cada link que hagas ..

Ejemplo de programación manual del SID en un link sería:
Código PHP:
<a href="nose.php?".SID>nose</a
SID es una constante que tiene dicho nombre e ID de tu sesión .. También lo puedes obtener por las funciones session_name()."=".session_id() ..

Un saludo,

PD: Recuerda también que el uso de los arrays superglobales $_SESSION está disponible desde PHP 4.1.0 en adalente aunque ya veo que usas PHP 4.3.1 por lo que comentas.
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 04/05/2004, 16:34
Avatar de romeo77  
Fecha de Ingreso: diciembre-2003
Ubicación: Vete tu a saber...
Mensajes: 65
Antigüedad: 20 años, 4 meses
Puntos: 0
Vale OK
Y que hago con el SID¿? en el archivo de destino¿?
He hecho algunas modificaciones y nada..., ahora tengo:
Código PHP:
session_start();
$_SESSION['log_user'] = $log_user;
header('location: /inicio/index.php?'.session_name().'='.session_id());
exit; 
En el index.php tengo:
Código PHP:
<?php include ("includes/menu.php");?>
Y en el menu.php:
Código PHP:
<?php $SES urldecode($_GET['PHPSESSID']);
session_name($SES);
session_start();
if (!isset(
$_SESSION['log_user'])) {...} else{...} ?>
Pero el else nunca jamás de los jamases se ejecuta...
Que me está pasando¿?¿?¿?¿?
Un saludo.
PD: por cierto, si modifico el php.ini he de reiniciar el PC para que los cambios surtan efecto¿?

Última edición por romeo77; 04/05/2004 a las 16:38
  #10 (permalink)  
Antiguo 04/05/2004, 18:17
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
loading...........



Solo reinicia el apache.
Y lo de tu condicional serìa que muestres el codigo completo.
talvez en true y false muestres el mismo valor por eso crees que no te agarra.


connection closed.
__________________

Maborak Technologies
  #11 (permalink)  
Antiguo 05/05/2004, 06:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Vamos a ver ..

SI usas nombre de sesión (session_name()).. debes usar el mismo en todos los usos de tus sesiones ..
y justo antes de usar session_start()

Pero .. NO te compliques con el nombre de sesión y más si no sabes como usarlo .. no es necesario. NO uses session_name() como lo haces en el script que pretendes obtener las variables de sesión.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 05/05/2004, 13:55
Avatar de romeo77  
Fecha de Ingreso: diciembre-2003
Ubicación: Vete tu a saber...
Mensajes: 65
Antigüedad: 20 años, 4 meses
Puntos: 0
Aaaaaaaaaacabaramos...
¿ Pues no era que no tenia definido un session.save_path valido en php.ini ?
Valiente tonteria!!

Gracias por todo guys

Última edición por romeo77; 05/05/2004 a las 15:36
  #13 (permalink)  
Antiguo 05/05/2004, 16:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
O_o' ...

Normalmente PHP suelta un error carcterístico si no tienes configurado session.save_path .. algo referente a permisos de escritura (si no los tiene) o si usabas el /tmp que viene por defecto (ideal para Linux) pero que no corresponde con una ruta válida en PHP bajo Windows ...

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 16:23.