gpt4 book ai didi

php - 验证登录数据 PDO PHP

转载 作者:行者123 更新时间:2023-12-04 05:09:07 24 4
gpt4 key购买 nike

我正在尝试将我的代码从 mysql_connect 更改为 PDO,但遇到了一些问题。我是 PHP 新手,有人告诉我 mysql_connect 很旧,所以这是我的代码。我似乎无法验证用户。即使我输入了错误的用户,它也不会输出无效的用户。

     $_GET['errorCode'];

$errors = array(
1 => 'Invalid User',
2 => 'Incorrect Password');

if(isset($_GET['errorCode'])){
$code = $_GET['errorCode'];
print isset($errors[$code]) ? $errors[$code] : 'Unknown error';
}


if($_SERVER['REQUEST_METHOD']== 'POST'){


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




if(isset($_POST['username']) && isset($_POST['password'])){


$stmt = $dbh->prepare("SELECT password, salt FROM user WHERE username = :user_name");
$stmt->execute(array(':user_name' => "$username"));
$stmt->bindParam(':user_name', $username, PDO::PARAM_STR);


if(!$stmt->rowCount() > 0)

{
header('Location: index.php?errorCode=1');

exit;

}
$result = $stmt->fetch(PDO::FETCH_ASSOC);

$hash = hash('sha256', $result['salt'] . hash('sha256', $password) );
if($hash != $result['password']) //incorrect password
{

header('Location: index.php?errorCode=2');

exit;
}
else
{
validateUser(); //sets the session data for this user
Header("Location: index.php");
exit;
}
}
}

最佳答案

除了失踪execute声明,这永远不会奏效:

Header("Location: index.php");
$errmessage = "Invalid user";
print "<p id\"errmessage\"> $errmessage </p>";
exit;

一旦你重定向,浏览器就会加载 index.php所以你永远不会看到你的错误信息。您应该 重定向 显示错误消息,但不能同时显示。

关于php - 验证登录数据 PDO PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15116629/

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