Foros del Web » Programando para Internet » PHP »

situación curiosa en sesiones php en apache

Estas en el tema de situación curiosa en sesiones php en apache en el foro de PHP en Foros del Web. Bueno pues resulta que teniedo instalado un apache 2.2.3 con php 4.4.4 al crear un par de scripts secillos para probar sesiones, me doy cuenta ...
  #1 (permalink)  
Antiguo 10/12/2006, 17:44
 
Fecha de Ingreso: noviembre-2005
Mensajes: 5
Antigüedad: 18 años, 5 meses
Puntos: 0
situación curiosa en sesiones php en apache

Bueno pues resulta que teniedo instalado un apache 2.2.3 con php 4.4.4 al crear un par de scripts secillos para probar sesiones, me doy cuenta de que se llego a una situación un tanto inusual.

por ejemplo estos códigos:

validacion.php

<?php
session_start(); // Inicio la sesión
// Coloco la variable de sesión 'estado'
$_SESSION['estado'] = "logeado";
header("./leervariable.php");
?>

Esto me crea un archivo en el directorio de sesiones de apache, aparentemete correcto con el siguiente contenido y nombre:

archivo: sess_0fab827948f90770692cf8c4a27d7b52

que contiene:

estado|s:7:"logeado";

Ahora toquaría leer la variable en con otro codigo php situado en otro archivo

leervariable.php

<?php
session_start(); // Inicio la sesión
// imprime la variable de sesión 'estado'
echo "El estado es: " .$_SESSION['estado'];
?>

Bueno esto normalmente lo que debe de mostar es un mensaje como este:

El estado es logeado

Sin embargo lo que hace es que me crea otro archivo sess_1c36123a0b33368817a0132610da4143 que está vacío!!

Bueno pues yo todavía no me lo explico, y lo que es peor, no se cómo arreglarlo y encuentro nada relacionado con esto en el google.

Alquien se atreve con una explicación?
  #2 (permalink)  
Antiguo 10/12/2006, 18:38
 
Fecha de Ingreso: febrero-2005
Mensajes: 13
Antigüedad: 19 años, 2 meses
Puntos: 1
Re: situación curiosa en sesiones php en apache

php.net/header

"Nota: El ID de sesión no es pasado con la cabecera Location incluso si session.use_trans_sid está habilitado. Debe ser pasado manualmente usando la constante SID."

Código PHP:
header('Location: ./leervariable.php?'.SID); 

Última edición por JuanJodm; 10/12/2006 a las 20:09
  #3 (permalink)  
Antiguo 11/12/2006, 04:21
 
Fecha de Ingreso: noviembre-2005
Mensajes: 5
Antigüedad: 18 años, 5 meses
Puntos: 0
De acuerdo Re: situación curiosa en sesiones php en apache

Cita:
Iniciado por JuanJodm Ver Mensaje
php.net/header

"Nota: El ID de sesión no es pasado con la cabecera Location incluso si session.use_trans_sid está habilitado. Debe ser pasado manualmente usando la constante SID."

Código PHP:
header('Location: ./leervariable.php?'.SID); 
Lo cierto es que esto que me cuentas es cierto, y he probado a ponerlo así y funciona perfectamente. Pero no entiendo por qué es así. Antes (con otra instalación de apache y php que tenía) no me da este problema.

De todas formas pasando así el SID, se ve en la barra de direcciones y no me parece un metodo muy seguro.

No se quizá se deba a la configuración de mi php.ini ? como podría saberlo y/o cambiarlo?

Muchas gracias por responder tan pronto.
  #4 (permalink)  
Antiguo 11/12/2006, 17:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Re: situación curiosa en sesiones php en apache

Debes revisar como PHP está propagando el SID .. de hecho según tu problema no se está creando la cookie necesaria para propagar el SID en ella y por eso te ves obligado a propagar el SID manualmente en tus links y redireccionamientos (sobre todo de tipo header("location ..") y javascript ..).

Revisa tu php.ini:

Activar la propagación del SID en cookies exclusivamente:

session.use_cookies = 1
session.use_only_cookies = 1

Desactivar a PHP para que no propague el SID en en el URL (o mejor dicho que no "re-escriba" ciertos tag's HTML para incrustrar el SID en ellos):

session.use_trans_sid = 0
url_rewirte_tags = (nada ..)

Posteriormente debes revisar la configuración de tu navegador y revisar que este accepte las cookies que PHP pretende generar. Si PHP no puede generar la cookie para propagar el SID .. tu nuevo script PHP al iniciarse busca en una cookie el SID (pues así lo forzamos por configuración anteriormente) si no lo encuentra, entiende que estás creando una nueva sesión y por eso te genera otro archivo en el servidor con otro SID generado.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 13/12/2006, 04:49
 
Fecha de Ingreso: noviembre-2005
Mensajes: 5
Antigüedad: 18 años, 5 meses
Puntos: 0
Re: situación curiosa en sesiones php en apache

Gracias Cluster por tu respuesta, asumo que la configuración que me mencionas debe funcionar en la mayoría de los casos, pero por alguna extraña razón, no en mi ordenador.

No se gracias de todos modos, sigo leyendo e informándome.
  #6 (permalink)  
Antiguo 13/12/2006, 19:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Re: situación curiosa en sesiones php en apache

Cita:
Iniciado por Pepe18 Ver Mensaje
Gracias Cluster por tu respuesta, asumo que la configuración que me mencionas debe funcionar en la mayoría de los casos, pero por alguna extraña razón, no en mi ordenador.

No se gracias de todos modos, sigo leyendo e informándome.
Cuando hablas de "mi ordenador" no sé realmente a que te refieres .. piensa que en este entorno de desarrollo tienes dos "cosas": un servidor y un cliente. Aunque en tus "pruebas en casa" tu cliente y servidor sea la misma máquina no debes de asumir que así sea ni achacar problemas a esta, sino a ver donde tienes el probelma .. si en la parte "servidor" o en la parte "cliente".

Ya te comenté que lo primero sería asegurarte la parte "servidor" ajustando la configuración de PHP para que propague el SID en cookies. Luego vas a ver la parte "cliente" .. es decir, tu navegador .. ver si llega la cookie que PHP está pretendiendo crear en ese cliente (tu navegador) y si la aceptas, baja el nivel de seguridad para pruebas .. por si por ahí estás bloqueando esas cookies .. en fin .. hay que revisar ambas partes del proceso para llegar a algún tipo de conclusión y/o detectar el probelma para intentar poner solución.

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 19:34.