M
Macky25
Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Tengo un problema con la función password_verify() dentro de un código que valida si la contraseña ingresada dentro de un Log In y que la compara con la contraseña ingresada en el registro (la cual ya está ingresada en la base de datos) no funciona. Mostrando un mensaje de error sobre si el usuario y el password están incorrectos.
Según el ejemplo de php.net sobre esta función:
Funciona correctamente en mi servidor. Pero me di cuenta que empieza con '$BCryptRequires22Chrctee' después de unas letras.
He probado con password_default y con password_bcrypt mediante un ejemplo similar.
Funcionan ambos correctamente, pero el problema está en este código:
Ayer durante toda la tarde (enserio) estuve tratando de ubicar el error, que hasta el momento pienso que se encuentra en password_verify. En algunos sitios web dicen que el hash (contraseña encriptada/hasheada) tiene que ir con comillas simples. Con el segundo código que les mostré cuando puse comillas dobles solamente mostraba el password_default. Entonces intente registrando un usuario con password_default pero igual me responde con el error de que el usuario o el password son incorrectos.
Por favor necesito saber que debo hacer, porque el password_verify funciona con el ejemplo del segundo código, pero cuando intento compararlo desde la base de datos, es decir, comparando una contraseña ingresada con la contraseña de la base de datos (con el tercer código) me lanza error.
Agradecería mucho sus respuestas :s !!
Según el ejemplo de php.net sobre esta función:
PHP:
<?php
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';
if (password_verify('rasmuslerdorf', $hash)) {
echo 'La contraseña es válida!';
} else {
echo 'La contraseña no es válida.';
}
?>
Funciona correctamente en mi servidor. Pero me di cuenta que empieza con '$BCryptRequires22Chrctee' después de unas letras.
He probado con password_default y con password_bcrypt mediante un ejemplo similar.
PHP:
<?php
$linux = 'skylinux';
$hashe = '$2y$10$4ib8PbBTRqUW5kYItj.aXucwfycL9E2yF0/N3c65ULueCJYXCTSO.';
$hache = '$2y$10$wVmDBXYbfxAGeEKVR4wr7eKpI9jUS48HjmVd7eCbLHSkgh6ESXplK';
if (password_verify($linux, $hashe))
{
echo "<font face='arial'><b>FUNCIONA EL PASSWORD DEFAULT</b></font><br><br>";
};
if (password_verify($linux, $hache))
{
echo "<font face='arial'><b>FUNCIONA EL PASSWORD BCRYPT</b></font>";
};
?>
Funcionan ambos correctamente, pero el problema está en este código:
PHP:
<?php
session_start();
?>
<?php
$bd_host = "********"; // Hosting (IP del servidor)
$bd_usuario = "********"; // Usuario con los permisos root
$bd_password = "********"; // Contraseña del usuario
$bd_base = "********"; // Base del usuario
$conexion = new mysqli($bd_host, $bd_usuario, $bd_password, $bd_base);
//Convierto las variables ingresadas en el Log In por aquí
$usuarioingresado = $_POST["usuarioingresado"];
$passwordingresado = $_POST["passwordingresado"];
$sql = "SELECT * FROM usuarios WHERE usuario='$usuarioingresado'";
$result = mysqli_query($conexion, $sql);
$row = mysqli_fetch_array($result);
$password = $row['password'];
if (password_verify($passwordingresado, $password))
{
$_SESSION['loggedin'] = true;
$_SESSION['usuario'] = $usuario;
echo "BIENVENIDO ".$_SESSION['usuario'];
echo "<br><br><a href='privado.php'>Sección Exclusiva</a>";
}else{
echo "<font face='arial' color='arial'><b>Usuario o Password incorrectos!<b></font><br>";
echo "<font face='arial' color='arial'>Si no es asi, recarga de nuevo la pagina, es solo un pinshi bug</font><br>";
};
mysqli_close($conexion);
?>
Ayer durante toda la tarde (enserio) estuve tratando de ubicar el error, que hasta el momento pienso que se encuentra en password_verify. En algunos sitios web dicen que el hash (contraseña encriptada/hasheada) tiene que ir con comillas simples. Con el segundo código que les mostré cuando puse comillas dobles solamente mostraba el password_default. Entonces intente registrando un usuario con password_default pero igual me responde con el error de que el usuario o el password son incorrectos.
Por favor necesito saber que debo hacer, porque el password_verify funciona con el ejemplo del segundo código, pero cuando intento compararlo desde la base de datos, es decir, comparando una contraseña ingresada con la contraseña de la base de datos (con el tercer código) me lanza error.
Agradecería mucho sus respuestas :s !!