Foros del Web » Programando para Internet » PHP »

PHP OO Duda con Signin y sesiones en PHP

Estas en el tema de Duda con Signin y sesiones en PHP en el foro de PHP en Foros del Web. Hola Compañeros, Estoy realizando un proyecto donde tengo que implementar un sistema de Sign In, para que los usuarios registrados puedan consultar una serie de ...
  #1 (permalink)  
Antiguo 05/03/2014, 05:48
 
Fecha de Ingreso: mayo-2008
Ubicación: Barcelona
Mensajes: 249
Antigüedad: 15 años, 11 meses
Puntos: 1
Duda con Signin y sesiones en PHP

Hola Compañeros,

Estoy realizando un proyecto donde tengo que implementar un sistema de Sign In, para que los usuarios registrados puedan consultar una serie de datos de su perfil.

Para hacer esto, pido el usuario y contraseña a través de un formulario y si coincide con un usuario de la BBDD guardo la información extraída de la base de datos en variables de sesión.

session_start();

....ANTERIORMENTE HAGO LA BÚSQUEDA EN LA BBDD

$_SESSION["nombre"] = $nombre_extraido de la bbdd;
$_SESSION["telefono"] = $nombre_extraido de la bbdd;
.....

Una vez realicé esto todo funcionaba correctamente, pero cuando cerraba el navegador toda la info se perdía. Para este proyecto necesito que la sesión no se cerrara cuando el usuario cerrara el navegador (sería como facebook con el "seguir conectado"). Leí acerca del tema y entendí que la sesión expiraba una vez se cerraba el navegador.

Por este motivo añadí una linea después del session_star() que hace que la sesión no expire hasta que no pasen x segundos (puse mucho para hacer el test y no se me cerrara por el tiempo):

setcookie('PHPSESSID', $_COOKIE['PHPSESSID'], time()+735840000);

y otra en el documento de cerrar sesión para eliminar la cookie.

setcookie("PHPSESSID","",time());

Una vez realizado esto creía que todo funcionaba correctamente ya que probé de cerrar el navegador y la sesión seguía abierta y toda la info disponible.

Sin embargo al probarlo al cabo de unas horas me dí cuenta que el sign In se había desconectado.

Mirando con el firebug las cookies el PHPSESSID si que seguía vigente pero las variables de sesión ya no estaban.

No se si cometo algún error de concepto o veis algo que podría estar funcionando mal pero os agradecería que me dierais vuestra opinión

Un saludo,
  #2 (permalink)  
Antiguo 05/03/2014, 07:15
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Duda con Signin y sesiones en PHP

Guardas el PHPSESSID en la Cookie y haces que dure mucho la cookie, pero la sesion sigue caducando y aunque le envies ese PHPSESSID el servidor ya la tiene caducada, las sesiones no estan para meter muchas cantidades de datos, lo ideal es guardar un identificador único para cada usuario, si quieres que sea permanente, en una cookie, y que el script compruebe tal identificador, si es correcto logee al usuario y saque la informacion de la base de datos al momento, no guardar toda esa información en una session/cookie.

Un saludo

Última edición por Heli0s; 05/03/2014 a las 07:42
  #3 (permalink)  
Antiguo 05/03/2014, 08:37
 
Fecha de Ingreso: mayo-2008
Ubicación: Barcelona
Mensajes: 249
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Duda con Signin y sesiones en PHP

Muchas gracias HeliOs,

Entonces el motivo por el que caduca la sesión es que almaceno demasiada información en esta variable?

Un saludo,
  #4 (permalink)  
Antiguo 05/03/2014, 09:33
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Duda con Signin y sesiones en PHP

No, las sessiones tienen un tiempo de vida en el servidor, superado ese tiempo ya no vas a poder acceder a la informacion, es por ese motivo por el cual la información debes sacarla de la base de datos y "rehacer" la session con un ID que pongas en la cookie, la session no vive durante 2 meses, pero la puedes rehacer con la cookie que si que puede vivir mucho tiempo sin expirar.

Un saludo
  #5 (permalink)  
Antiguo 05/03/2014, 11:01
 
Fecha de Ingreso: mayo-2008
Ubicación: Barcelona
Mensajes: 249
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Duda con Signin y sesiones en PHP

Gracias Heli0s me has aclarado mucho el concepto.

Y que debería guardar en la cookie el id del usuario o el id y la contraseña ? Conoces algun tutorial donde marque los pasos?

Muchas gracias
  #6 (permalink)  
Antiguo 05/03/2014, 11:22
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Duda con Signin y sesiones en PHP

Tutoriales ahora mismo no conozco ninguno ya que hace mucho que no busco tutoriales, pero San Google seguro que te da muchos buscando "PHP login persistente" o "PHP login cookies".

En un principio te diría que guardes el ID, pero eso podría dar problemas de seguridad ya que solo guardas un numerito el cual se sabe en que orden se guarda en la base de datos y que el 1 podría ser el usuario del administrador.

Aqui ya hay muchas opciones, crear un código único para cada usuario parecido al ID pero que no siga ningun orden establecido, sino que sea aleatorio, o juntar ID+Pass, etc.

Eso sí, lo que guardes guardalo encriptado, toda seguridad es poca.

Un saludo

Etiquetas: cookies, sesiones_en_php
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 13:20.