Hola, tengo una pregunta(Cuando...), he creado una pagina donde mis usuarios pueden Loguearse, la pagina administra la session del usuario mientras este navega en la pagina, el problema es que me gustaria que mis usuarios puedan mantener sus sesion activa aun si cierran el Navegador, apagan la PC, etc.
He escuchado que se puede hacer con una Cookie, pero no he podido hacer que funcione...
Actualmente la pagina administra la sesion con el codigo session_register(); y en cada pagina session_start();
Adjunto aqui mi Login.php
Me imagino que algo esta mal, como puedo hacer para que me cree una Cookie que mantenga la sesion del usuario y como la utilizo ???
Gracias a todos por su ayuda
¿Tienes dudas? ¿Algo que aportar? ¿Algún Script en PHP?
makpro - 10/03/2009 12:19:12
Deberías guardar en una cookie tanto el nombre de usuario y su contraseña (cifrada, por supuesto) y comprobar si está logueado en un php que se cargue siempre. Si no lo está, mirar si existen las cookies e intentar loguearle automaticamente con los valores de las cookies.
Saludos!
gaston - 18/04/2009 07:43:22
Hola!
Las sesiones del servidor son archivos que constan de dos partes, los datos y el identificador de la sesión se guardan el servidor, y al cliente se le envia una coockie con el identificador de la sesión.
De esa manera en cada petición del cliente, el servidor puede encontrar los datos de la sesión y mantener cierto "estado" en estas conexiones cortas con las que trabaja el protocolo http.
Lo que trato de decir es que al utilizar session_start estas creando los dos archivos. No veo la necesidad de crear una coockie que contenga como dato el nombre o nick del usuario, visto que a eso lo podrias mantener siempre en el servidor y trabajarlo de una manera un poco mas simple y "segura".
Por otro lado nunca te olvides de validar los datos de entrada y jamás olvides terminar la ejecución del script luego de un header location.
Saludos!
gaston - 18/04/2009 07:48:36
Por otro lado, y refiriendome al autologin, lo que suele hacerse es enviar una cookie como correctamente expones, pero no enviando el nombre de usuario (eso es facilmente hackeable), lo ideal es que crees una nueva columna en tu tabla de usuarios, por ejemplo 'autologin char(32)', y cuando el usuario se identifica al sistema, asignar en esa columna una clave (distinta al nombre de usuario y su contraseña!) y enviar ese mismo valor al cliente mediante una cookie.
Posteriormente en una nueva petición si el usuario no está identificado se obtendria ese valor de la coockie, si existiese, y se buscaria coincidencia en la tabla. Si hubiera existencia, entonces automaticamente se volvería a crear la sesión.
Saludos.
PD: 2 post seguidos = no leer detenenidamente el tema :)