Foros del Web » Programando para Internet » PHP »

Problema con Sesiones

Estas en el tema de Problema con Sesiones en el foro de PHP en Foros del Web. Hola, tengo un problema INESPERADO con las sesiones. Paso a explicar: en mi web tengo un sistema de usuarios, y en la pagina principal tengo: ...
  #1 (permalink)  
Antiguo 19/04/2006, 16:26
 
Fecha de Ingreso: febrero-2004
Mensajes: 138
Antigüedad: 13 años, 9 meses
Puntos: 2
Exclamación Problema con Sesiones

Hola, tengo un problema INESPERADO con las sesiones.

Paso a explicar:
en mi web tengo un sistema de usuarios, y en la pagina principal tengo:

<?
session_start();
//RESTO DEL CODIGO
?>

Luego en la pagina dal login:


<?
session_start();
$_SESSION["logued"]= "ok";
//Resto del codigo
?>

Hasta ahi todo bien, el problema es que si un visitante no tiene las cookies activadas, cuando va a otra seccion de la web de desloguea
Y por lo que tengo entendido, las sesiones no necesitan cookies para funcionar.

Si tienen alguna idea de que puede estar pasando, agradeceria la respuesta

Saludos!
__________________
De mucho estudiar nadie se murió, pero mas vale no arriesgarse
  #2 (permalink)  
Antiguo 19/04/2006, 18:40
 
Fecha de Ingreso: junio-2002
Mensajes: 751
Antigüedad: 15 años, 6 meses
Puntos: 22
Una session permanece activa mientras no se supere el tiempo límite establecido por session o inactividad, o al cerrar el navegador. $_SESSION sigue estando disponible aunque cookies esten desactivadas. Si están desactivadas las variables de sesión se propagarán mediante GET en la url.

Puede ser que tengas la opción de register_globals activada o que la versión de PHP sea un poco antigua.
Si register_globals está activada (en el archivo php.ini) y no quieres o no puedes desactivarla, debes usar session_register y session_is_registered:

Código PHP:
<?php
if (!session_is_registered('count')) {
    
session_register("count");
    
$count 0;
}
else {
    
$count++;
}
?>
Creo que lo que he dicho es correcto, pero si no es así se aceptan correciones
  #3 (permalink)  
Antiguo 20/04/2006, 07:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por all-ill
Una session permanece activa mientras no se supere el tiempo límite establecido por session o inactividad, o al cerrar el navegador. $_SESSION sigue estando disponible aunque cookies esten desactivadas. Si están desactivadas las variables de sesión se propagarán mediante GET en la url.

Puede ser que tengas la opción de register_globals activada o que la versión de PHP sea un poco antigua.
Si register_globals está activada (en el archivo php.ini) y no quieres o no puedes desactivarla, debes usar session_register y session_is_registered:

Código PHP:
<?php
if (!session_is_registered('count')) {
    
session_register("count");
    
$count 0;
}
else {
    
$count++;
}
?>
Creo que lo que he dicho es correcto, pero si no es así se aceptan correciones
Exactamente no es así el comportamiento de sesiones .. aunque así lo sea en "general". Como se comporte las sesiones: su tiempo de expiración o validez depende directamente de la configuración de PHP (php.ini) sobre el tema sesiones: www.php.net/session y de como estás propagando el SID (Identificador único de sesión).

Tampoco es recomendable que uses "session_register()" .. ese método de trabajo con sesiones está obsoleto y te dará muchos problemas con versiones de PHP y configuraciones que por ejemplo usen "register_Globals a OFF"

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 20/04/2006, 08:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Hasta ahi todo bien, el problema es que si un visitante no tiene las cookies activadas, cuando va a otra seccion de la web de desloguea
Y por lo que tengo entendido, las sesiones no necesitan cookies para funcionar.
No, .. es un "mito" que las sesiones no usen cookies. Esto depende directamente de como propagues el SID. Tanto de tu aplicación (si lo haces manualmente o no) o dejas que PHP lo haga por tí en su configuración.

Por cierto todo esto es un "mito" por qué la gente no LEE la documentación oficial de Sesiones de PHP y esto va de "boca en boca".

Dentro de la configuración de propagación del SID, puedes hacerlo por dos métodos:
a) Cookies
b) URL

ambos métodos tienen sus prós y contras .. Por ejemplo usar cookies para propagar el SID da seguridad (puedes leer este documento: http://www.acros.si/papers/session_fixation.pdf) vs a que si tu usuario no acepta cookies .. no podrá usar sesiones. Ahora, la pregunta es ¿por qué un usuario no va aceptar una cookie de un sitio o aplicación como la tuya "confiable"? .. Si uno bloquea "cookies" no puede ser que lo haga indiscriminadamente .. hay que -saber- quien te pide crear esa cookie como para aceptarla o NO ..

Tu en tu aplicación ya explicaras a tus usuarios los beneficios de seguridad de aceptar dicha cookie y avisar de este hecho.

Propagar el SID en el URL te proporciona independencia de si el usuairo acepta cookies o no .. pero NO seguridad. Además que el SID lo tendrás que propagar manualmente (a código) en tu aplicación en ciertos casos: redireccionamientos tipo header() .. o por javascript .. por poner unos casos. (links y formularios puedes dejar que PHP incrustre el SID en el automáticamente: session.use_trans_sid a ON ..)

Les recomiendo:
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.
  #5 (permalink)  
Antiguo 20/04/2006, 12:29
 
Fecha de Ingreso: febrero-2004
Mensajes: 138
Antigüedad: 13 años, 9 meses
Puntos: 2
Muchas gracias a los dos, sus comentarios me sirvieron de mucho

Saludos!
__________________
De mucho estudiar nadie se murió, pero mas vale no arriesgarse
  #6 (permalink)  
Antiguo 20/04/2006, 15:22
 
Fecha de Ingreso: junio-2002
Mensajes: 751
Antigüedad: 15 años, 6 meses
Puntos: 22
de nada. Es verdad que en las nuevas versiones de PHP se recomienda no usar register_globals, porque en el futuro seguramente desaparecerá esta opción. Lo dicho por Cluster es MUY correcto.
Que vaya bene!!
Salu2
  #7 (permalink)  
Antiguo 20/04/2006, 15:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En el proyecto "PHP 6" (si .. leen bien seis .. ) ya se está planeando dejar "fijo" y sin posibilidad de cambiar "register_globals a OFF".

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 15:12.