【发布时间】:2015-11-03 18:03:43
【问题描述】:
我目前正在使用 PHP 登录,密码在另一个文件上使用 password_hash('password',PASSWORD_BCRYPT) 加密,我实际上是从 mySQL 检索数据,并从 AJAX 调用中获取数据,但我已经声明了变量来显示我的问题:
<?php
require "modulos/conexion.php";
session_start();
if (!isset($_SESSION['username']) && !isset($_SESSION['userid'])) {
$usuario = "mariano overs";
$pass = "1234";
$passdb = '$2y$10$A1nr4od4OjP0N1hNoB9Seur3OsWzU3ufT4G82XNTLV3'; // equivalent of password_hash('1234',PASSWORD_BCRYPT), this is value from DB
$sql = 'SELECT id_usua, co_usua, ds_pass FROM dbfar_cabusuarios WHERE co_usua="' . $usuario . '" LIMIT 1';
if ($res = mysqli_query($GLOBALS['conexion'],$sql)) {
if (mysqli_num_rows($res) == 1) {
$usuario = mysqli_fetch_array($res, MYSQLI_ASSOC);
echo "Contrasena guardada: ". $pass . "<br />Contrasena de la base: " . $usuario['ds_pass'] . "<br />";
if (password_verify($pass, $passdb)){
$_SESSION['username'] = $usuario['co_usua'];
$_SESSION['userid'] = $usuario['id_usua'];
echo "INICIO SESION CORRECTAMENTE";
}
else{
echo "INICIO SESION NO CORRECTO";
}
} else {
echo "REGISTROS NO CORRECTOS";
}
} else {
echo "USUARIO NO EXISTE";
}
}
因为我知道我从数据库中获得了正确的值,所以问题不在于那里,而在于 password_verify 函数。它们没有得到正确验证。我需要在password_verify 中添加其他值吗?
【问题讨论】:
-
不,您使用正确。您的错误日志中是否存在 aqy 错误?
-
密码列的长度和类型是多少?
-
“我有钱买那个 Sam” ^ @JayBlanchard 想要 10 比 1 的赔率? ;-)
-
对我来说拉尔夫听起来不错! @Fred-ii-
-
我可能不得不像现在这样从 Sam @JayBlanchard 身上拿一些炸鸡。
标签: php mysql password-hash