Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] No funciona el "recordar contraseña"

Estas en el tema de No funciona el "recordar contraseña" en el foro de PHP en Foros del Web. Hola a todos. Tengo un problema con la función recordar contraseña. y es que parece que todo va bien, pero al cerrar el navegador no ...
  #1 (permalink)  
Antiguo 03/02/2013, 12:21
 
Fecha de Ingreso: septiembre-2011
Mensajes: 60
Antigüedad: 12 años, 7 meses
Puntos: 1
Exclamación No funciona el "recordar contraseña"

Hola a todos. Tengo un problema con la función recordar contraseña. y es que parece que todo va bien, pero al cerrar el navegador no se queda guardada.

Alguien sabe qué es lo que pasa?. El código que he usado es:

index (formulario):
Código HTML:
<?php
include('config.php');
if(isset($_SESSION["logeado"]) == "SI"){ 
header ("Location: inicio.php");
}
?> <form name="form1" method="post" action="entrar.php"><br>
<span style="color:#000; font-size:12px;">Email</span><br>
   <input name="email" type="email" id="email"><br><br>
<span style="color:#000; font-size:12px;">Contrase&ntilde;a</span><br>
    <input name="password" type="password" id="password"><br><br>
    <input type="checkbox" name="recordar" id="recordar" value="1">
<span style="color:#000; font-size:12px;">Recordar</span><br />
<br>
<span style="font-size: 12px; color: #000"><a href="recuperar.php">Recuperar contrase&ntilde;a</a> | <a href="registrarse.php">Registrarse</a><br />
</span><br />
     <input type="submit" name="Submit" value="Entrar">
     <br />
</form> 
El archivo config.php que se menciona es:
Código PHP:
<?php
$dbhost
='localhost'// Servidor
$dbusername='root'// Nombre de usuario
$dbuserpass='usuario1'// Contraseña
$dbname='users'// Nombre de la base de datos
session_start();

// Comprobamos si hay cookie, si está bien y le asignamos una sesión
// Esto quiere decir que si recordamos la contraseña nos auto loguee.
if(isset($_COOKIE['id_extreme'])) 
{
    
$cookie htmlentities($_COOKIE['id_extreme']);
    
$cookie explode("%",$cookie);
    
$user $cookie[0];
    
$id $cookie[1];
    
$ip $cookie[2];
    if (isset(
$HTTP_X_FORWARDED_FOR) == "")
    {
        
$ip2 getenv('REMOTE_ADDR');
    }
    else
    {
        
$ip2 getenv('HTTP_X_FORWARDED_FOR');
    }
    if(
$ip == $ip2)
    {
        
$link mysql_connect($dbhost$dbusername$dbuserpass);
        
mysql_select_db($dbname,$link) or die('No se puede seleccionar la base de datos');
        
$query mysql_query("SELECT * FROM usuarios WHERE id_extreme='".$id."' and email='".isset($_REQUEST['email'])."'") or die(mysql_error());
           
$row mysql_fetch_array($query);
           if(isset(
$row['email'])) 
        {
        
$_SESSION["s_email"] = $row['email'];
        
$_SESSION["logeado"] = "SI";
           }
        
mysql_close($link);
    }
}
?>
Al darle al botón entrar usa este código:
Código PHP:
<?php
// Configura los datos de tu cuenta
include('config.php');

// Conectar a la base de datos
mysql_connect ($dbhost$dbusername$dbuserpass);
mysql_select_db($dbname) or die('No se puede seleccionar la base de datos');

if (
$_POST['email']) {
//Comprobacion del envio del email y password
$email=htmlentities($_POST['email']);
$password=md5($_POST['password']);
if (
$password==NULL) {
echo 
"No a introducido una contrasenia";
exit();
}else{
$query mysql_query("SELECT email,password FROM usuarios WHERE email = '$email'") or die(mysql_error());
$data mysql_fetch_array($query);
if(
$data['password'] != $password) {
echo 
"No a introducido una contrasenia correcta";
exit();
}else{
$query mysql_query("SELECT email,password FROM usuarios WHERE email = '$email'") or die(mysql_error());
$row mysql_fetch_array($query);
$email2 $row['email'];
$_SESSION["s_email"] = $row['email'];
$_SESSION["logeado"] = "SI";

/* Si aceptamos recordar los datos */
if($_POST['recordar']=="1"){

    if (isset(
$HTTP_X_FORWARDED_FOR) == "")
    {
        
$ip getenv('REMOTE_ADDR');
    }
    else
    {
        
$ip getenv('HTTP_X_FORWARDED_FOR');
    }
    
$id_extreme md5(uniqid(rand(), true));
    
$id_extreme2 $email2."%".$id_extreme."%".$ip;
    
setcookie($id_extreme$id_extreme2time()+3600*24*365,'/');
    
$query mysql_query("UPDATE usuarios SET id_extreme='".$id_extreme."' WHERE email='".$email2."'") or die(mysql_error());
}

header ("Location: inicio.php");
}
}
}
?>
Y eso creo que es todo. El caso es que no funciona, pero me aparece la cookie creada en la columna id_extreme.

Muchas gracias por adelantado.
  #2 (permalink)  
Antiguo 03/02/2013, 16:56
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: No funciona el "recordar contraseña"

Un problema es que el nombre de la cookie debería ser 'id_extreme' literal y no la variable $id_extreme.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 04/02/2013, 09:02
 
Fecha de Ingreso: septiembre-2011
Mensajes: 60
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: No funciona el "recordar contraseña"

ok, ya he solucionado ese error, entre otros, pero cuando me logeo y cierro el navegador, sigue sin autologearse.

Me imagino que eso es problema de la cookie. Cual puede ser el error=?
  #4 (permalink)  
Antiguo 04/02/2013, 11:07
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: No funciona el "recordar contraseña"

puede ser que tengas puesta la opcion de eliminar cahe en el navegador al cerrarlo?
  #5 (permalink)  
Antiguo 04/02/2013, 11:11
 
Fecha de Ingreso: septiembre-2011
Mensajes: 60
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: No funciona el "recordar contraseña"

No, es más, me funcionan todas las páginas excepto esa. Además lo he probado desde otros navegadores y nada. No se dónde esta el problema y no encuentro solución.

Espero que puedan ayudarme, muchas gracias.
  #6 (permalink)  
Antiguo 04/02/2013, 11:16
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: No funciona el "recordar contraseña"

haber por un lado creas la cookie

setcookie($id_extreme, $id_extreme2, time()+3600*24*365,'/');

el nombre de la cookie es

$id_extreme = md5(uniqid(rand(), true));

y luego compruebas si existe

if(isset($_COOKIE['id_extreme']))

ahora ese nombre de la cookie es igual a md5(uniqid(rand(), true)) no a id_extreme ??

puede ser ese tu error?

Última edición por webankenovi; 04/02/2013 a las 11:26
  #7 (permalink)  
Antiguo 04/02/2013, 11:32
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: No funciona el "recordar contraseña"

y alomejor el error tambien puede provenir de la query

$query = mysql_query("SELECT * FROM usuarios WHERE id_extreme='".$id."' and email='".isset($_REQUEST['email'])."'")

creo que deberia de ser

Código PHP:
Ver original
  1. $query = mysql_query("SELECT * FROM usuarios WHERE id_extreme='".$id."' and email='".$usuario."'")
  #8 (permalink)  
Antiguo 04/02/2013, 14:07
 
Fecha de Ingreso: septiembre-2011
Mensajes: 60
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: No funciona el "recordar contraseña"

Cita:
Iniciado por webankenovi Ver Mensaje
y alomejor el error tambien puede provenir de la query

$query = mysql_query("SELECT * FROM usuarios WHERE id_extreme='".$id."' and email='".isset($_REQUEST['email'])."'")

creo que deberia de ser

Código PHP:
Ver original
  1. $query = mysql_query("SELECT * FROM usuarios WHERE id_extreme='".$id."' and email='".$usuario."'")
ok, ya está solucionado. He usado tu código "webankenovi" para darme cuenta que arriba, declaré:
Código PHP:
$user $cookie[0]; 
Pero abajo me equivoqué y puse "email" y a partir de ahí he ido probando muchas cosas hasta llegar a el código que he mostrado.

He usado el mismo código, pero cambiando $usuario por $user (la variable que tenía definida). Y funciona a pa perfección

Muchas gracias a todos. Me habéis sido de gran ayuda!
  #9 (permalink)  
Antiguo 04/02/2013, 14:27
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: No funciona el "recordar contraseña"

efectivamente era $user no se por que puse $usuario un despiste pero queria decir lo mismo

me alegro saludos . . ::
  #10 (permalink)  
Antiguo 04/02/2013, 14:30
 
Fecha de Ingreso: septiembre-2011
Mensajes: 60
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: No funciona el "recordar contraseña"

Cita:
Iniciado por webankenovi Ver Mensaje
efectivamente era $user no se por que puse $usuario un despiste pero queria decir lo mismo

me alegro saludos . . ::
jaja, muchas gracias ;)

Etiquetas: contraseña, cookies, recordar
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 17:34.