Foros del Web » Programando para Internet » PHP »

Las sesiones a veces funcionan a veces no...

Estas en el tema de Las sesiones a veces funcionan a veces no... en el foro de PHP en Foros del Web. Buenos días, Tengo un problema con las dichosas sesiones, para empezar yo tengo la directiva register_globals a off por temas de webs antiguas y no ...
  #1 (permalink)  
Antiguo 24/03/2006, 06:27
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 9 meses
Puntos: 0
Las sesiones a veces funcionan a veces no...

Buenos días,

Tengo un problema con las dichosas sesiones,
para empezar yo tengo la directiva register_globals a off por temas de webs antiguas y no puedo cambiarlo... (por lo menos de momento).
He estado haciendo un sistema de autenticación pero tengo problemas con las sesiones, unas veces funciona y otras no... he probado de las dos maneras; $_SESSION y tb $HTTP_SESSION_VARS, pero no hay forma.. no entiendo porque puede ser... Ideas?
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #2 (permalink)  
Antiguo 24/03/2006, 06:38
Avatar de atak  
Fecha de Ingreso: julio-2005
Ubicación: Huancayo
Mensajes: 490
Antigüedad: 18 años, 9 meses
Puntos: 5
De acuerdo Sessiones

Hola Enea

Podrias postear parte de tu Script para poder hacer un seguimiento a tu Sintaxis ?

Asimismo que version de PHP usas ?


Salu2
__________________
. .: El mejor Inicio :. .
  #3 (permalink)  
Antiguo 24/03/2006, 07:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Enea
Buenos días,

Tengo un problema con las dichosas sesiones,
para empezar yo tengo la directiva register_globals a off por temas de webs antiguas y no puedo cambiarlo... (por lo menos de momento).
He estado haciendo un sistema de autenticación pero tengo problemas con las sesiones, unas veces funciona y otras no... he probado de las dos maneras; $_SESSION y tb $HTTP_SESSION_VARS, pero no hay forma.. no entiendo porque puede ser... Ideas?
Tengo que hacerte esta pregunta:

¿tu conoces la teoría del "SID" o en que consisten las sesiones y como funcionan exactamente?

Bueno .. te comento que hay dos conceptos a conocer:
1) que las sesiones no funcionan por qué si, que hay un "identificador único de sesión (SID)" el cual se debe propagar de alguna forma entre tus scripts para que la sesión iniciada en un script pueda ser accedida en otros.
2) Ese "SID" PHP puede propagarlo por tí de dos formas: URL o cookies .. pero con sus detellas (en algunos casos no lo hace PHP automáticamente), pero también puedes hacerlo manualmente.

En general como veras .. en PHP para el tema de "sesiones" hay que conocer ese concepto (el SID) y saber que la configuración de PHP va afectar a como se comporten tus sesiones.

El código que uses también ayudaría a "ver" como estás "asumiendo" la propagación del SID y en consecuencia decir que mirar (revisar tu PHP.ini como propagas el SID .. si propagas en cookies, revisar que aceptes dichas cookies y que nada lo bloquee ...).

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 24/03/2006, 11:48
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 9 meses
Puntos: 0
En una página tengo esto y visualiza perfectamente el valor SI.

session_start();
$HTTP_SESSION_VARS['autentificado']="SI";
print "AUTENTICADO".$HTTP_SESSION_VARS['autentificado'];

En otra pagina tengo esto y visualiza a veces el valor SI

session_start();
print "AUTENTICADO".$HTTP_SESSION_VARS['autentificado'];

Entonces igual es lo de la progagacion esa del SID... voy a buscar info sobre el tema, a ver si lo entiendo. Lo que me parece extraño es lo de que a veces funcione y a veces no.. Entro en el server y las sesiones se crean... no sé, es algo mu extraño...


TENGO EL PHP.INI ASÍ
session.save_path = /tmp

; Whether to use cookies.
session.use_cookies = 1

; This option enables administrators to make their users invulnerable to
; attacks which involve passing session ids in URLs; defaults to 0.
; session.use_only_cookies = 1

; Name of the session (used as cookie name).
session.name = PHPSESSID

; Initialize session on request startup.
session.auto_start = 0

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0

; The path for which the cookie is valid.
session.cookie_path = /

; The domain for which the cookie is valid.
session.cookie_domain =
__________________
Ibisof | Saludos desde Eivissa !!! :p

Última edición por Enea; 24/03/2006 a las 12:03
  #5 (permalink)  
Antiguo 24/03/2006, 12:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Entro en el server y las sesiones se crean... no sé, es algo mu extraño...
Justamente el uso de "session_Start()" hará que se creen tus archivos en el servidor con tu sesión y variables en el .. Pero si no se propaga el SID .. NO podrás acceder a la sesión abierta y en curso que contiene tus datos, creando una sesión nueva cada vez.

El tema de que "a veces si y a veces no" .. tendrías que exponer el código -completo- que uses, para ver como pasas de una página a otra (script) .. NO se vé que tipo de redireccionamiento usas: un link?, un formulario? .. una redirección javascript? .. un header() de tipo "Location" en PHP?.

Lo importante es aislar el problema probando sobre un mismo código y condiciones. Pero, en su base tu problema y el problema de que las sesiones no funcionen son 99.9% de veces por la propagación del SID (el otro 0.1% suele ser un "olvido" de session_start() ... )

Por otro lado, no uses $HTTP_SESSION_VARS .. usa el array superglobal $_SESSION .. (el anterior pasó ya a la historia: todo depende de que versión de PHP uses .. pero a partir de la versión 4.1.x en adelante ya no deberías usarlo).

Lectura recomendada:
http://www.php.net/manual/en/languag...s.external.php
http://www.php.net/manual/en/security.globals.php

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.
  #6 (permalink)  
Antiguo 24/03/2006, 12:16
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 9 meses
Puntos: 0
Uso la 4.1.3... vale, usaré $_SESSION, ya lo habia probado.. pero como no me acaba de ir.. probe a ver si era por lo de register globals o algo..

Uso este codigo para pasar de una página a otra...
$_SESSION["autentificado"]="SI";
header("Location:proof.php");
Estoy leyendo manuales y por lo visto lo estoy pasando por cookies, es recomendable que tb lo pase por url ?<?echo session_name()."=".session_id()?>"> ?? para la gente que no tiene las cookies activadas???

Aggg.. no endiendo por que no se propaga..!!
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #7 (permalink)  
Antiguo 24/03/2006, 12:22
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 9 meses
Puntos: 0
Te paso los dos codigos que tengo..
//INICIA LA SESION
Código:
<? 
if (($usuario=="usuario") && ($contrasena=="contrasena"))
{ 
    session_start();
    $_SESSION["autentificado"]="SI"; 
    header("Location:proof.php"); 
}
else 
{ 
    header("Location:index.php?errorusuario=si"); 
} 
?>
//MUESTRA LA PAGINA SI TAS AUTENTIFICADO
Código:
<?
session_start(); 

if ($_SESSION[['autentificado'] != "SI") 
{ 
    header("Location: index.php"); 
    exit(); 
} 
?>
Por cierto, gracias.. no te habia dicho nada..
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #8 (permalink)  
Antiguo 24/03/2006, 12:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Enea
Uso la 4.1.3... vale, usaré $_SESSION, ya lo habia probado.. pero como no me acaba de ir.. probe a ver si era por lo de register globals o algo..

Uso este codigo para pasar de una página a otra...
$_SESSION["autentificado"]="SI";
header("Location:proof.php");
Estoy leyendo manuales y por lo visto lo estoy pasando por cookies, es recomendable que tb lo pase por url ?<?echo session_name()."=".session_id()?>"> ?? para la gente que no tiene las cookies activadas???

Aggg.. no endiendo por que no se propaga..!!
No, .. según tu configuración .. propagas (o así lo dices a PHP) el SID en cookies, Esto es realmente lo recomendable (así lo dice php.net), lo más seguro vs a consideraciones a tener en cuenta.

Si ya sabes que PHP va a generar una cookie para propagar el SID, lo que debes confirmar por otros médios es que tu Navegador no esté bloquenado dicha cookie .. ni alguna barra de "google" .. de "yahoo" que suele tener esas funcionalidades, o algún antivirus .. o algún firewall (algunos para windows lo hacen ..).

Si quieres hacer una prueba .. propaga el SID en el URL (no es seguro OJO!) ..

Puedes usar para tal fin la constante SID (que es lo mismo que session_name()."=".session_id())

header("Location: proof.php?".SID);

Si así te funcionan las sesiones correctamente, el problema ya podrás deducir que lo tienes con la cookie que PHP pretende generar: que está bloqueada.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 24/03/2006, 12:44
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 9 meses
Puntos: 0
Vale, localizado el problema... las cookies
Pero... no tengo ningun antivirus, ni firewall, ni barritas en el navegador puestas en estos momentos...
Hay algun truco para que no se viera q se pasan por url ??
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #10 (permalink)  
Antiguo 24/03/2006, 12:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Pero... no tengo ningun antivirus, ni firewall, ni barritas en el navegador puestas en estos momentos...
TU navegador también bloquea las cookies, por ejemplo IE lo hace con su famoso "nivel de seguridad" que ajustado a ciertos niveles NO permite la creación de cierto tipo de cookies. Revisalo bien.

Cita:
Hay algun truco para que no se viera q se pasan por url ??
No .. esto no es un problema "visual" sino de seguridad .. Tus links si pasas el SID en el URL igual van a quedar registrados en proxys e historiales de navegadores.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 24/03/2006, 12:56
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 9 meses
Puntos: 0
Jo, y que puedo hacer? la mayoría de gente usa IE...
Como no muestre un texto explicativo de como bajar la seguridad...
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #12 (permalink)  
Antiguo 24/03/2006, 13:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Enea
Jo, y que puedo hacer? la mayoría de gente usa IE...
Como no muestre un texto explicativo de como bajar la seguridad...
Esto es problema del usuario .. de que -sepa- usar su navegador (disculpen que sea "duro"). Mi argumento tal vez es "duro" por qué no desarrollo sitios que usen sesiones para la web sino que me enfoco en Intranets/extranets .. Tal vez el concepto cambie ahí .. pero la filosofía y fondo es el mismo: no es un capricho, es por la seguridad de los usuarios de esas aplicaciones.

Yo en mis aplicaciones aviso de que el sitio requiere de cookies, para la gente paranoica que anda bloqueandolas todas: si de verdad sabe lo que hace, ya verá la solucitud de ingreso de la cookie de mi sitio y si de verdad quiere usarlo .. ya hará lo que se le sugiere.

Para apoyar esta idea, .. el tema es por -su- seguridad ..

Hay mucha gente por ahí que usa firewalls, antivirus, barras de navegación con funcionalidades de "bloqueo" de cookies que NO SABEN ni que está ni usarlo ni que implica una "cookie" y de que tipo sea esta cookie .. así que la tendencia es a "bloquear" todo ..y bueno .. esto no es tan así .. NO toda las cookies son "malas". Sólo hay que -saber- quien te está pidiendo crear una cookie (y para eso IE por ejemplo tiene un modo para los "paranoicos" de nivel de seguridad que dice algo así como: preguntame que cookie quiere crearse en mi equipo .. y así yo decido).

De todas formas ya has comprobado que en PHP puedes propagar el SID en el URL .. usalo si no quieres problemas con tus usuarios y corre el riesgo. Te invito a leer este documento sobre esos riesgos:

http://www.acros.si/papers/session_fixation.pdf

Esto lo recomienda (su lectura) directamente PHP:
www.php.net/session

Cita:
Sessions and security
External links: Session fixation

The session module cannot guarantee that the information you store in a session is only viewed by the user who created the session. You need to take additional measures to actively protect the integrity of the session, depending on the value associated with it.

Assess the importance of the data carried by your sessions and deploy additional protections -- this usually comes at a price, reduced convenience for the user. For example, if you want to protect users from simple social engineering tactics, you need to enable session.use_only_cookies. In that case, cookies must be enabled unconditionally on the user side, or sessions will not work.

There are several ways to leak an existing session id to third parties. A leaked session id enables the third party to access all resources which are associated with a specific id. First, URLs carrying session ids. If you link to an external site, the URL including the session id might be stored in the external site's referrer logs. Second, a more active attacker might listen to your network traffic. If it is not encrypted, session ids will flow in plain text over the network. The solution here is to implement SSL on your server and make it mandatory for users.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 24/03/2006, 13:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Enea
Jo, y que puedo hacer? la mayoría de gente usa IE...
Como no muestre un texto explicativo de como bajar la seguridad...
Por cierto .. a ti ya te funcionan las cookies en tus pruebas (propagando el SID en cookies y tal vez ajustando el nivel de seguridad de tu navegador?)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #14 (permalink)  
Antiguo 24/03/2006, 13:21
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 9 meses
Puntos: 0
Na, sigue sin funcionar... ni con seguridad baja ni na.. No entiendo nada!!!
La unica forma que he conseguido que funcione es con lo de url...
Vaya rollo, si mi primera idea fue hacerlo por el IIS, pero me dijeron que solo quería que pidiera contraseña (no usuario) y no he conseguido que por defecto se muestre un usuario en la seguridad del iis ... tu no sabrás si se puede hacer, verdad ? :), porque vamos más que un sistema de seguridad esto es un cachondeo...
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #15 (permalink)  
Antiguo 24/03/2006, 14:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Enea
Na, sigue sin funcionar... ni con seguridad baja ni na.. No entiendo nada!!!
La unica forma que he conseguido que funcione es con lo de url...
Vaya rollo, si mi primera idea fue hacerlo por el IIS, pero me dijeron que solo quería que pidiera contraseña (no usuario) y no he conseguido que por defecto se muestre un usuario en la seguridad del iis ... tu no sabrás si se puede hacer, verdad ? :), porque vamos más que un sistema de seguridad esto es un cachondeo...
Yo de tí empezaría a usar algún software que te analice la conexión entre cliente-servidor .. un "sniffer HTTP" para ver sobre todo si esa cookie se está generando desde PHP.

Despues insisto en que revises tu PC de pruebas .. SIEMPRE salen (por lo que he visto en el foro) que usaban tal software por médio y que ese era el problema del bloqueo de esas cookies.

De todas formas . .otra cosa a revisar:

Que sistema operativo usas en tu servidor? .. Windows? .. si es así .. esta ruta en:
session.save_path = /tmp

No corresponde!!!! .. debería ser algo tipo c:\php\sesiones .. o algún directorio que exista en tu servidor y que tenga permisos de escritura.

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 14:09.