Я новичок в 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.
Извините, если много написал, надеюсь правильно объяснил.
"=="
— логический оператор.$login_active == true;
так что это не имеет смысла. попробуй$login_active = true;
- person SchautDollar   schedule 07.03.2013