Foros del Web » Programando para Internet » PHP »

Sistema login, convinando sesiones y cookies.

Estas en el tema de Sistema login, convinando sesiones y cookies. en el foro de PHP en Foros del Web. Hola que tal. tengo un sistema muy sencillo de registro y autentificacion de usuarios implementado, hasta el momento funciona solo con sesiones, por lo que ...
  #1 (permalink)  
Antiguo 20/07/2008, 13:47
Avatar de oscarva  
Fecha de Ingreso: agosto-2004
Ubicación: Bogota - Colombia
Mensajes: 425
Antigüedad: 19 años, 9 meses
Puntos: 2
Sistema login, convinando sesiones y cookies.

Hola que tal.

tengo un sistema muy sencillo de registro y autentificacion de usuarios implementado, hasta el momento funciona solo con sesiones, por lo que el logico problema es que al cerrar el navegador se borra la sesion y el usuario tiene que volver a identificarce al regresar.

quisera saber como lo puedo convinar con cookies para que el usuario pueda mantener la sesion iniciada aun cuando cierre el navegador.

Codigo login.php
Código PHP:
<? 
session_start
();
if (
$_POST['email']) {

$email=$_POST['email'];
$password=$_POST['password'];

if (
$password==NULL) {
$error $LANG_lpassnoc;
}else{
$query mysql_query("SELECT email,password FROM users WHERE email = '$email'") or die(mysql_error());
$data mysql_fetch_array($query);
if(
$data['password'] != $password) {
$error $LANG_lerror;
}else{
$query mysql_query("SELECT id,email FROM users WHERE email = '$email'") or die(mysql_error());
$row mysql_fetch_array($query);
$_SESSION["s_email"] = $row['email'];
$_SESSION["s_id"] = $row['id'];
}
}
}
?>
codigo pagina registrados.php
Código PHP:
<? 
session_start
();
if (isset(
$_SESSION["s_email"])) {
//esta logeado
}else{
//no esta logeado
}
?>
me podrian ayudar a implementar el uso de cookies en caso que el usuario quiera quedar logueado aun despues de cerrar el navegador?

Un abrazo y gracias
  #2 (permalink)  
Antiguo 20/07/2008, 14:10
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 7 meses
Puntos: 101
Respuesta: Sistema login, convinando sesiones y cookies.

Hola,
Con esto de deveria andar:
login.php
Código PHP:
<?  
session_start
(); 
$time_cookies600// Tiempo que van a estar las cookies, en segundos.
if ($_POST['email']) { 

$email=$_POST['email']; 
$password=$_POST['password']; 
$recordar=(!empty($_POST['check']))? true false;// En el formulario pone: <input name="check" type="checkbox" id="check" value="checkbox" />

if ($password==NULL) { 
$error $LANG_lpassnoc
}else{ 
$query mysql_query("SELECT email,password FROM users WHERE email = '$email'") or die(mysql_error()); 
$data mysql_fetch_array($query); 
if(
$data['password'] != $password) { 
$error $LANG_lerror
}else{ 
$query mysql_query("SELECT id,email FROM users WHERE email = '$email'") or die(mysql_error()); 
$row mysql_fetch_array($query); 
setcookie("s_email"$row['email'], time() + ($time_cookies) ); 
setcookie("s_id"$row['id'], time() + ($time_cookies) );
setcookie("s_recor"$recordartime() + ($time_cookies) );
$_SESSION["s_email"]=$row['email'];
$_SESSION["s_id"]=$row['id'];



?>
registrados.php
Código PHP:
<?  
session_start
(); 
if(isset(
$_COOKIE['s_email'],$_COOKIE['s_id'],$_COOKIE['s_recor']) && $_COOKIE['s_recor'] && !isset($_SESSION["s_email"],$_SESSION["s_id"])){
session_register();
$_SESSION["s_email"]=$_COOKIE['s_email'];
$_SESSION["s_id"]=$_COOKIE['s_id'];
}
if (isset(
$_SESSION["s_email"])) { 
//esta logeado 
}else{ 
//no esta logeado 

?>
Suerte
Salu2
__________________
Half Music - www.halfmusic.com
  #3 (permalink)  
Antiguo 20/07/2008, 14:37
Avatar de oscarva  
Fecha de Ingreso: agosto-2004
Ubicación: Bogota - Colombia
Mensajes: 425
Antigüedad: 19 años, 9 meses
Puntos: 2
Respuesta: Sistema login, convinando sesiones y cookies.

Saludos Pato12, gracias por la ayuda, funciona correctamente, aunque estoy mirando y tendre que hacerle algunos cambios de seguridad, por ejemplo la cookie s_id podria ser modificada con x id y asi la persona se podria loguear con cualquier id verdad?

tambien agregar que al crear la cookie le coloque el parametro al final ,"/" para que sea leida en todo el sitio.

Saludos
  #4 (permalink)  
Antiguo 20/07/2008, 15:15
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 7 meses
Puntos: 101
Respuesta: Sistema login, convinando sesiones y cookies.

Hola,
Que suerte que ando.
Cualquier cosa contactame por MP (mensaje pribado).
Suerte
salu2
__________________
Half Music - www.halfmusic.com
  #5 (permalink)  
Antiguo 20/07/2008, 15:30
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 16 años
Puntos: 11
Respuesta: Sistema login, convinando sesiones y cookies.

Hola oscarva,
Creo que conviene cambiar el valor de expire de la cookie de sesion.
Simplemente con eso se resuelve el problema. De esta forma evitamos enviar los datos por cookies, lo cual es muy inseguro.
Asi no tendrias problemas de seguridad...

La unica cookie que te quedaria seria la de sesion. Es a dicha cookie que hay que aumentarle el valor de expiracion.

Pruebalo y dime

Ah.
Un detalle... Lo que no evitaras es que el servidor borre la sesion del usuario por determinado tiempo de inactividad.
Eso ya depende de estos valores en tu php.ini:
Cita:
session.gc_probability = 1
session.gc_divisor = 1000

; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
session.gc_maxlifetime = 1440
y puedes hacer lo que te comente antes utilizando setcookie o cambiando directamente el valor en el php.ini:
Cita:
session.cookie_lifetime = 0
De cero a la cantidad de segundos que necesites
  #6 (permalink)  
Antiguo 20/07/2008, 15:33
Avatar de oscarva  
Fecha de Ingreso: agosto-2004
Ubicación: Bogota - Colombia
Mensajes: 425
Antigüedad: 19 años, 9 meses
Puntos: 2
Respuesta: Sistema login, convinando sesiones y cookies.

hola xbx, asi es pues te comento que ya lo probe y no funciono, creo que al usuario cerrar el navegador e iniciarlo de nuevo el valor id de la sesion cambia, asi que sobreescribe la anterior cookie con el nuevo valor.
__________________
Colsitio. Guía de Hosting
  #7 (permalink)  
Antiguo 20/07/2008, 15:45
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 16 años
Puntos: 11
Respuesta: Sistema login, convinando sesiones y cookies.

Y como haz seteado el valor de expiración de la cookie de sesion?
Puedes mostrarme?
  #8 (permalink)  
Antiguo 20/07/2008, 15:47
Avatar de oscarva  
Fecha de Ingreso: agosto-2004
Ubicación: Bogota - Colombia
Mensajes: 425
Antigüedad: 19 años, 9 meses
Puntos: 2
Respuesta: Sistema login, convinando sesiones y cookies.

Lo hice directamente desde el php.ini modificando session.cookie_lifetime
__________________
Colsitio. Guía de Hosting
  #9 (permalink)  
Antiguo 20/07/2008, 15:49
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 16 años
Puntos: 11
Respuesta: Sistema login, convinando sesiones y cookies.

Perfecto.
Entonces deberia funcionar!!
Recuerda que el lifetime se mide en segundos

Pregunta
Haz reiniciado tu apache?

  #10 (permalink)  
Antiguo 20/07/2008, 15:51
Avatar de oscarva  
Fecha de Ingreso: agosto-2004
Ubicación: Bogota - Colombia
Mensajes: 425
Antigüedad: 19 años, 9 meses
Puntos: 2
Respuesta: Sistema login, convinando sesiones y cookies.

sip asi es muy raro la verdad, lo puse a expirar mas de un mes despues, aunque no probe mucho que digamos, voy a hacerlo de nuevo a ver
__________________
Colsitio. Guía de Hosting
  #11 (permalink)  
Antiguo 20/07/2008, 16:01
Avatar de oscarva  
Fecha de Ingreso: agosto-2004
Ubicación: Bogota - Colombia
Mensajes: 425
Antigüedad: 19 años, 9 meses
Puntos: 2
Respuesta: Sistema login, convinando sesiones y cookies.

Ups pues ahora si funciono :) asi sera mucho mas facil.

gracias xbx
__________________
Colsitio. Guía de Hosting
  #12 (permalink)  
Antiguo 20/07/2008, 21:45
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 16 años
Puntos: 11
Respuesta: Sistema login, convinando sesiones y cookies.

Cita:
Iniciado por oscarva Ver Mensaje
Ups pues ahora si funciono :) asi sera mucho mas facil.

gracias xbx
Que bueno que te haya servido!

Saludos
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 01:36.