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.