PHP - Login con hash

 
Vista:
sin imagen de perfil
Val: 53
Ha disminuido su posición en 15 puestos en PHP (en relación al último mes)
Gráfica de PHP

Login con hash

Publicado por raquel (27 intervenciones) el 20/08/2018 14:34:47
Muy buenas gente!! A ver si me pueden echar un cable.
Estoy realizando un sistema de registro de usuarios y Login con hash y me está dando un fallito a la hora de loguearse, a ver si vosotros veis algo que yo no estoy viendo, porque lo he hecho ya de 3 formas distintas y siempre me sale el mismo fallo, "el usuario no está registrado" (y es obvio que si lo está).

Os dejo el código del formulario de login:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<title>Login de usuarios</title>
</head>
<body>
 
	<div class="container">
		<div class="row">
			<div class="col-md-6">
				<h2 class="ml-2 my-4 font-weight-bold">Login</h2>
			</div>
		</div>
	</div>
 
	<div class="container">
		<form action="class/acceder.php" method="post">
			<div class="form-group">
				<div class="form-row col-md-6">
					<label for="inputemail">Email</label>
					<input type="email" class="form-control" id="email" name="email" placeholder="Introduzca su email" pattern="^[a-zA-Z0-9.!#$%&*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$" required>
				</div>
				<div class="form-row col-md-6 mt-3">
					<label for="inputpassword">Contraseña (entre 6 y 8 caracteres)</label>
					<input type="password" class="form-control" id="clave" name="clave" placeholder="Introduzca su contraseña" pattern="[A-Za-z0-9!?-]{6,8}" required>
					<div class="invalid-tooltip">Please choose a unique and valid username.</div>
				</div>
 
			</div>
			<button type="submit" id ="registro" class="btn btn-success ml-2">ACCEDER</button>
		</form>
	</div>
</body>

y por aqui el código que comprueba el login:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
include_once 'Conexion/conexion.php';
 
try{
 
	//almacenamos en variables lo que el usuario ha introducido en el formulario
	$contra=htmlentities(addslashes($_POST['clave']));
	$correo=htmlentities(addslashes($_POST['email']));
	$contador=0;//para saber si el login introducido esta o no en la bbdd
 
	$sql="SELECT * FROM usuario WHERE email_usuario = :email";
	$resultado=$pdo->prepare($sql);
	$resultado->execute(array(":email"=>$correo));
 
    while($registro=$resultado->fetch(PDO::FETCH_ASSOC)){
 
        if(password_verify($contra,$registro['clave_usuario'])){
 
            $contador++;
 
        }
 
        echo "Correo: " . $registro['email_usuario'] . " Contraseña: " . $registro['clave_usuario'] . "<br>";
    }
 
    if($contador>0){
        session_start();//creamos sesion de usuario
 
        $_SESSION['user']=htmlentities(addslashes($_POST['email']));
        header('location:../admin.php');
    }else{
        echo "usuario no registrado";
    }
 
    $resultado->closeCursor();
 
}catch(Exception $e){
	die("Error: " . $e->getMessage());
}

La conexión va bien y lo que me muestra en este echo => echo "Correo: " . $registro['email_usuario'] . " Contraseña: " . $registro['clave_usuario'] . "<br>";
es esto: Correo: [email protected] Contraseña: $2y$10$DeaPPSPNeKfzbEEU8NQ6EecCwSu.seQHbB

es decir que el usuario está registrado, peeeeero no incrementa el contador y no me entra en el if... con lo cual siempre sale por el else :'( me podeis ayudar xfis???

Millones de gracias!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Login con hash

Publicado por Alejandro (839 intervenciones) el 20/08/2018 16:02:01
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Primero, por favor usa las etiquetas de code </> facilitan la interpretación de tu código.
Segundo, mencionas que es por Hash pero no veo donde encriptas la contraseña, quizá en la función password_verify().
Tendrías que tener algo como

1
if(sha1($contra)=="$2y$10$DeaPPSPNeKfzbEEU8NQ6EecCwSu.seQHbB"){...
Obvio con la encriptado y variables que manejes.

Intenta logearte escribiendo el hash en lugar del password.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 53
Ha disminuido su posición en 15 puestos en PHP (en relación al último mes)
Gráfica de PHP

Login con hash

Publicado por raquel (27 intervenciones) el 20/08/2018 20:23:14
la contraseña la encripto en otro archivo previamente, cuando agrego al usuario, vaya el qe seria para registrar al usuario, ahi es cuando hago el hash, con lo cual ya queda encriptada en la base de datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 729
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Login con hash

Publicado por Gonzalo (615 intervenciones) el 21/08/2018 02:32:45
buenos dias raquel.

debes usar el mismo procedimiento para verificar el password contra el hash en la base de datos.

con un punto de diferencia con eso no va a coincidir y te rechaza el login.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar