我是 php 新手。我有一个登录系统,现在我正在尝试实施一个禁止和用户激活系统,但我在登录脚本上有一些问题。这是我的脚本中的代码:
<?php
$query = "SELECT id, username, password, salt, email, firstname, lastname, active, banned FROM users WHERE username = :username ";
$query_params = array(
':username' => $_POST['username']
);
try
{
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch(PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
$row = $stmt->fetch();
$login_ok = false;
$login_match = false;
$login_active = false;
$login_banned = false;
if($row)
{
$check_password = hash('sha256', $_POST['password'] . $row['salt']);
if($check_password === $row['password'])
{
$login_match = true;
}
if($row['active'] == 1) {
$login_active = true;
}
if($row['banned'] == 1) {
$login_banned = true;
}
if($login_match && $login_active && !$login_banned) {
$login_ok = true;
}
}
if($login_ok)
{
unset($row['salt']);
unset($row['password']);
$_SESSION['user'] = $row;
header("Location: index.php");
die("Redirecting...");
}
else
{
if(!$login_match) { echo "Wrong username/pasword.";}
if(!$login_active) { echo "Account not activated, check your email";}
if($login_banned) { echo "Your account is banned";}
}
?>
在我的数据库中,我有 2 列活动和禁止,其中 0 表示帐户已激活且未禁止,1 表示帐户未激活或被禁止。
如何向用户显示不同的消息?如果用户输入了错误的用户名或密码,他将从最后的 else {} 中获得所有三个消息。我想像这样向用户显示消息:如果用户名或密码错误,则只显示错误的用户名/密码。并忽略 $login_active $login_banned。如果用户名/密码正常,但帐户未激活,帐户未激活,请检查您的电子邮件。并忽略 $login_banned 开关。如果用户名/密码正常,但帐户被禁止显示您的帐户被禁止并忽略 $login_active 开关。
如果我写的太多了,我很抱歉,我希望我解释得对。