- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经在我的注册脚本中设置了password_hash。无法弄清楚如何正确使用password_verify登录我的网站。
数据库截图:https://i.imgur.com/hWjRiXN.png
登录代码(显示“登录错误,即使密码正确):
<?php
require 'db_connect.php';
if (isset($_POST['username']) and isset($_POST['password'])){
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM `member` WHERE username='$username'";
$result = mysqli_query($connection, $query) or die(mysqli_error($connection));
$count = mysqli_num_rows($result);
if (password_verify($_POST['password'],$hashword))
{
echo "Correct login";
}
else
{
echo "incorrect login";
}
}
?>
注册码(效果很好,数据库连接也没有问题):
<?php
require 'db_connect.php';
$email = $_POST['email'];
$username = $_POST['username'];
$password1 = $_POST['password1'];
$password2 = $_POST['password2'];
if($password1 != $password2)
header('Location: registration.html');
if(strlen($username) > 25)
header('Location: registration.html');
$hashword = password_hash($password,PASSWORD_DEFAULT);
$query = "INSERT INTO member ( username, password, email)
VALUES ( '$username', '$hashword', '$email');";
$result = mysqli_query($connection, $query) or die(mysqli_error($connection));
mysql_close();
header('Location: login.html');
?>
最佳答案
从您的代码来看,您似乎没有使用插入数据库的正确哈希词检查 $_POST['password']
。
变量$hashword
将没有任何内容,因此password_verify
失败。
获取存储在数据库中的密码值并将其存储在 $hashword
变量中,然后在 password_verify
函数中使用它,使其按预期工作。
示例
$row = mysqli_fetch_assoc($result);
$hashword = $row['password'];
使用
$result = mysqli_query($connection, $query) or die(mysqli_error($connection));
$count = mysqli_num_rows($result);
$row = mysqli_fetch_assoc($result);
$hashword = $row['password'];
if (password_verify($_POST['password'],$hashword))
{
echo "Correct login";
}
else
{
echo "incorrect login";
}
关于php - 无法让password_verify 工作(PHP、MYSQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48052605/
我的 Codeigniter(3.0 版)登录模块中有这个方法。它工作正常,但这安全吗?使用 PHP password_verify 检查登录名和密码是否有更好的解决方案?(PHP 5.6,MySQL
这个问题在这里已经有了答案: PHP password_verify not working against database (1 个回答) 关闭 5 年前。 这应该非常简单:我正在生成一个散列密
我的 Codeigniter(3.0 版)登录模块中有这个方法。它工作正常,但这安全吗?使用 PHP password_verify 检查登录名和密码是否有更好的解决方案?(PHP 5.6,MySQL
这个问题在这里已经有了答案: PHP password_verify not working against database (1 个回答) 关闭 5 年前。 这应该非常简单:我正在生成一个散列密
我正在尝试创建一个更安全的页面,我从密码加密部分开始。我正在尝试实现 password_hash + password verify,但到目前为止,我一直未能使整个工作正常进行。所以,它在我的登录区域
这里是登录代码,我试图让密码验证工作,但它不想。似乎这个 count($sql->fetchAll()) > 0 是问题所在,或者我调用了错误的变量给 password_verify()。 $
我使用 PHP 和 mySQLi 编写了简单的登录脚本。问题是 password_verify() 函数返回空变量。我已经仔细检查了所有内容,但我没有看到它。哪里有问题 ? session_start
我将用户名和加密密码存储在 mysql 数据库中。仅出于测试目的,我还将密码以未加密的形式存储在数据库中。 在下面的代码中,我从数据库中获取散列密码和未加密密码。然后我加密未加密的密码。 给定的密码未
好的,我已经在我的一个页面上使用了 password_hash。 我想知道如何将 password_verify 应用于以下代码: 函数 selectUser($conn, $username, $p
尝试从数据库验证散列密码,用户通过 POST 输入。经过一些简短的研究,这个问题似乎与无法将 mysqli_query 转换为字符串有关,尽管我不知道如何正确地做到这一点,因此我从另一个 SO 问题中
我一直在努力查找有关 password_verify() 是否使用长度常数时间比较来避免定时攻击的信息。 现在,简单的例子: $hash = '$2y$10$HH3906lfby7HOy1N3duQh
我通过 password_hash 散列我插入的密码。我使用 password_verify 验证它们。 然而,当我在我的数据库中插入一个散列密码并尝试验证它时,两个输出总是彼此不同。 我的页面如下,
函数password_verify()在新的 PHP 密码 API 中检查密码是否对应于哈希。哈希由 password_hash() 生成,默认情况下使用随机盐和 cost = 10。 我一直认为(尽
我已经为此挠头 2 个多小时了。我研究过关于 stackoverflow 的文章,包括: Issue with Bcrypt not verifying correctly php password_
我的注册脚本接受用户密码,然后使用 PHP 的 password_hash 函数对密码进行加密,然后将其放入数据库中。当我使用刚创建的用户登录时,出现检查密码是否相同的错误。就我而言,他们不是。我在登
我正在制作一个登录和注册系统。该系统可以正常工作,所以现在我必须为数据库存储的散列密码添加安全性。但是,当我从数据库中检索散列密码并将其与用户输入的密码进行比较时,它不起作用。 所以当我尝试
我正在尝试在某人登录我的网站之前检查他们的密码和用户名。密码都存储在 password_hash($password1, PASSWORD_BCRYPT); 我不确定我做错了什么。目前,无论我输入什么
我正在尝试做一个简单的登录操作,如果您可以调用的话。我正在使用MySQLi,到目前为止看起来还不错。 escape_string($myusername); $link->escape
这个问题在这里已经有了答案: php password_verify() hash and pass won't match (1 个回答) 关闭 5 年前。 $query = "SELECT *
我对这个主题进行了广泛的搜索,但没有人遇到过我能找到的相同问题。 我在 MySQL 表中创建一个用户,使用强度为 10 的 password_hash 的散列。 我一直在努力验证它,并制作了一个测试脚
我是一名优秀的程序员,十分优秀!