password_hash || pasword_verify PHP 无功能 [关闭]

问题描述 投票:0回答:0

Estoy intando realizar un login en una página web, pero paswword_verify() sigue devbolviendo false haga lo que haga。 Me aseguré de que el campo en la base de datos tiene un límite de 255 caracteres.

El código de el registro es el siguiente:

<?php 
extract($_POST);
$error=false;

if(!isset($username) || strlen($username) < 4){
    $error=true;
    
}
if(!isset($email) || filter_var($email, FILTER_VALIDATE_EMAIL) === false){
    $error=true;
}  
if(!isset($password) || strlen($password) < 6){
    $error=true;
   
}
if(!isset($Rpassword) || $password != $Rpassword){
    $error=true;
    
}


include("connection.php");

if(!$error){

   
    if($mysqli->connect_error){
        die("Error de conexion".$mysqli->connect_error);
    }else{
        $password_hash=password_hash($password, PASSWORD_DEFAULT);
        $sql=$mysqli->prepare("INSERT INTO usuarios (nombre,email,password_hash,fecha_registro) VALUES (?,?,?,?)");
        if ($sql === false) {
            die("Error preparing statement: " . $mysqli->error);
        }
        $fecha_registro=date("Y-m-d H:i:s");
        $sql->bind_param("ssss",$username,$email,$password_hash,$fecha_registro);
        if($sql->execute()==false){
            echo "Error al ejecutar la consulta".$sql->error;
        }else{
            session_start();
            $_SESSION['user']=[
                'username' => $username,
            ];
            
    
            header("Location: index.php");
        }
    }
}

?>

Este el código de la validación de login:

include("connection.php");
extract($_POST);

$sql = $mysqli->prepare("SELECT * FROM usuarios WHERE nombre = ?");
$sql->bind_param("s", $username);

// Ejecuta la consulta
$sql->execute();

// Obtiene el resultado
$result = $sql->get_result();

// Verifica si el usuario existe
if ($result->num_rows > 0) {
    // Obtiene los datos del usuario
    $user = $result->fetch_assoc();
    
    // Verifica la contraseña
    if (password_verify($password, $user['password_hash'])) {
        echo "Inicio de sesión exitoso";
        session_start();
        $_SESSION['user']=[
            'user-id' => $user['id'],
            'username' => $user['nombre'],
        ];
        echo $_SESSION['user']['username'];

       /* header("Location: index.php");*/
    } else {
        
        echo "Contraseña incorrecta: $password<br>Contraseña correcta: $user[password_hash]<br> Ususario: $user[nombre]";
        /*header("Location: log-in.html?error=password");*/
    }
} else {
    echo "El usuario no existe";
   
}

$sql->close();

Cualquier ayuda sería bien recibida, gracias de antemano.

php mysql passwords password-encryption
© www.soinside.com 2019 - 2024. All rights reserved.