gpt4 book ai didi

php - PDO 返回结果,但 else 语句不起作用

转载 作者:行者123 更新时间:2023-11-29 16:32:03 26 4
gpt4 key购买 nike

我已经被这个问题困扰了一段时间,但我似乎无法弄清楚问题出在哪里。我正在为我的项目制作一个非常简单、基本的登录页面,但是我似乎无法让“else”语句发挥作用。

当用户名和密码输入正确时,我可以成功显示登录消息,但是如果我输入的用户名和密码不正确,我希望没有结果,但仍然显示“用户名或密码不正确”消息它始终显示为空白。

PS:我了解 session 和其他内容,我只是想在尝试处理这些问题之前先对其进行排序。

过去几个小时我查看了其他地方,但找不到任何可以帮助我排除故障的帮助。

$user_name = $_POST['username'];
$user_password = $_POST['password'];


if (isset($_POST["username"], $_POST["password"])) {

$results = $pdo->query("SELECT user_name, user_password FROM users WHERE user_name = '" . $user_name . "' AND user_password = '" . $user_password . "'");

foreach ($results as $result) {

$result = $pdo->query("SELECT COUNT(*) FROM users WHERE user_name = '" . $user_name . "' AND user_password = '" . $user_password . "'")->fetchColumn();

//var_dump($result);

if ($result > 0){
echo "Signed In";
} else {
echo "Incorrect Username or Password!";
}
}

}

最佳答案

您的第一个 PDO 不正确。

密码应该 always be hashed 。去做吧。

您需要更改为:

 $results = $pdo->prepare("SELECT user_name, user_password FROM users 
WHERE user_name = :user ");
$results->execute(['user' => $user_name]);
$found = $results->fetch();
print_r("found row: ".$found);

请阅读thisthis改进 PHP 中的 SQL 处理。

另请阅读this (尤其是 this answer )并阅读有关探索 PHP error logs 的内容.

当您使用Vagrant并错误地提到Vagrant不提供错误日志时,请Google this information发现 Vagrant 确实 提供 PHP 错误日志。您需要使用它们。

几乎代码的每个部分都不是最佳实践,需要大力改进。

<小时/>

完整修复代码

假设用户名是唯一值

if (!empty($_POST["username"]) && !empty($_POST["password"]))  {

$results = $pdo->prepare("SELECT user_name, user_password FROM users
WHERE user_name = :user");
$results->execute([':user' => $_POST["username"] ]);
$foundRow = $results->fetchAll();

if(count($foundRow) < 1){
// no user found
echo "Incorrect Username or Password!";
}
elseif(password_verify($_POST["password"],$foundRow['user_password']) !== true){
// bad password given
echo "Incorrect Username or Password!";
}
else {
echo "Signed In";
}

}

关于php - PDO 返回结果,但 else 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53804214/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com