require_once "require.php";
$con = new mysqli($hn,$un,$pas,$db);
if ($con->connect_error)
{
die("Unbale to connect to the Server");
}
if (isset($_POST["login"]))
{
$uname = $_POST["uname"];
$lpass = $_POST["lpass"];
$query = "SELECT PASSWORD FROM users WHERE username='$uname'";
$result = $con->query($query);
$dpass = $result->fetch_assoc()['password'];
if ($dpass==$lpass)
{
echo "Passwords Match";
}
}
我正在尝试匹配用户输入的密码和数据库中的密码,我不知道我使用的方式是否是获取密码的正确方法,任何帮助都将不胜感激。< / p>
答案 0 :(得分:1)
require_once "require.php";
$con = new mysqli($hn,$un,$pas,$db);
if ($con->connect_error)
{
die("Unbale to connect to the Server");
}
if (isset($_POST["login"]))
{
$uname = $_POST["uname"];
$lpass = $_POST["lpass"];
$query = "SELECT PASSWORD FROM users WHERE username='$uname'";
$result = $con->query($query);
$dpass = $result->fetch_assoc()['password'];
$newhash = password_hash($dpass, PASSWORD_DEFAULT);
if (password_verify($lpass, $newhash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
}
尝试这样...密码验证是一种更好的做法
答案 1 :(得分:1)
请阅读评论。纯文本密码真的不好 理念)。我只是在学习目的上回答你。不要在真实的现场制作中做到这一点!
但要继续你的代码。 $result->fetch_assoc()
返回一个数组。所以你必须循环或正确解决它。此示例需要查询结果。所以你必须检查结果,否则你会收到错误。
查看您的查询LIMIT 1
和
$result->fetch_assoc()
然后是$dpass[0]['password']
<?php
require_once "require.php";
$con = new mysqli($hn, $un, $pas, $db);
if ($con->connect_error) {
die("Unbale to connect to the Server");
}
if (isset($_POST["login"])) {
$uname = $_POST["uname"];
$lpass = $_POST["lpass"];
// LIMIT1
$query = "SELECT passwordFROM users WHERE username='$uname' LIMIT 1";
$result = $con->query($query);
// fetch all
$dpass = $result->fetch_assoc();
// Check there is 1 result
if ($result->num_rows == 1) {
// check your password
if ($dpass == $lpass[0]['password']) {
echo "Passwords Match";
} else {
echo "Wrong Password";
}
// No User match
} else {
echo "No User foound";
}
} else {}
我没有尝试过这个例子,但它应该有效。
了解更多相关信息:
答案 2 :(得分:0)
您可以使用password_hash()生成并使用password_verify()来验证密码。
注意:始终保持对来自第三方的每个数据进行验证,清理和转义的习惯。 您可以从此WordPress文章中获取有关此主题的概念 https://codex.wordpress.org/Validating_Sanitizing_and_Escaping_User_Data https://vip.wordpress.com/2011/10/13/key-differences-between-validation-and-sanitization/
由于