Ver Mensaje Individual
  #4 (permalink)  
Antiguo 19/11/2015, 15:37
Avatar de kahlito
kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 9 meses
Puntos: 65
Respuesta: Error haciendo login con contraseña encriptada crypt

Cita:
Iniciado por chronos682 Ver Mensaje
Esto está mal

Código PHP:
Ver original
  1. $input_password = crypt($contrasena, $db_contrasena);

En vez de $db_contrasena tienes que pasarle el mismo $hashF_and_salt que usaste para almacenar la contraseña, la idea es encriptar ambas contraseñas con el mismo sistema para que coincidan.
Hola chronos682, creo que incluso antes lo había probado y tampoco me sale, ahora pruebo con esta opcion y tampoco, creo que me estoy haciendo un buen lio.

Código PHP:
Ver original
  1. iif(isset($_POST["login"])){   
  2.     $usuario = $_POST["usuario"];
  3.     $usuario = mysqli_real_escape_string($conexion, $usuario);
  4.  
  5.     $contrasena = $_POST["contrasena"];
  6.     $hashFormat = "$2y$10$";
  7.     $salt = "iusesomecrazystrings22";
  8.     $hashF_and_salt = $hashFormat . $salt;
  9.    
  10.  
  11.     $query_password_e = "SELECT contrasena from usuarios ";
  12.     $query_password_e .= " WHERE usuario = '{$usuario}'";
  13.     $buscar_contrasena_e = mysqli_query($conexion, $query_password_e);
  14.     if($fila = mysqli_fetch_array($buscar_contrasena_e))
  15.     {
  16.         $db_contrasena = $fila['contrasena'];
  17.        
  18.         $input_password = crypt($contrasena, $hashF_and_salt);
  19.         if($input_password == $db_contrasena){
  20.             echo $input_password."<br>";           
  21.             echo $db_contrasena."<br>";
  22.             echo "Coinciden<br>";
  23.         }
  24.         else{
  25.             echo $input_password."<br>";           
  26.             echo $db_contrasena."<br>";
  27.             echo "No coinciden<br>";
  28.         }
  29.  
  30.         if($input_password == $hashF_and_salt){
  31.             echo $input_password."<br>";
  32.             echo $hashF_and_salt."<br>";
  33.             echo $db_contrasena."<br>";
  34.             echo "Coinciden<br>";
  35.         }
  36.         else{
  37.             echo $input_password."<br>";
  38.             echo $hashF_and_salt."<br>";
  39.             echo $db_contrasena."<br>";
  40.             echo "No coinciden<br>";
  41.         }
  42.     }
  43. }

Cita:
Iniciado por AlejandraLara Ver Mensaje
Igual, a partir de php 5.5 esta disponible password_hash y password_verify.
Hola AlejandraLara, he estado haciendo pruebas con las opciones que me explicas sin embargo acabo de ver que el servidor donde alojo la web actual tiene la versión php 5.4

Gracias por vuestra ayuda, ¿alguna otra recomendación o cambio?.

Saludos.