Текст не пропадает при обновлении страницы
Вот есть страничка логина, на ней есть вывод сообщнния о не правильном логине или пароле. Оно успешно выводится. Вот только при перезагрузке странички оно не исчезает. Помогите дураку) и да, я знаю что код фиговый.
<?php
session_start();
$login_stat = 'hide';
$users = 'admin';
$pass = '8546b20033603ae2f1aa61881b36befc';
if($_POST['submit']){
if($users == $_POST['user'] AND $pass == $_POST['pass'])
{
$_SESSION['admin'] = $users;
header("Location: index.php");
exit;
}
elseif ($_POST['user']!= '' AND $_POST['pass'] != '') {
$login_stat = 'false';
}
}
if($_GET['do'] == 'logout'){
unset($_SESSION['admin']);
session_destroy();
}
?>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="assets\css\mousefollow.css">
<link rel="stylesheet" href="assets\css\login.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0-2/css/all.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" charset="utf-8"></script>
<title>Логин</title>
</head>
<body>
<div class="content">
</div>
<div class="cursor"></div>
<div class="cursor2"></div>
<script>
var cursor = document.querySelector(".cursor");
var cursor2 = document.querySelector(".cursor2");
document.addEventListener("mousemove",function(e){
cursor.style.cssText = cursor2.style.cssText = "left: " + e.clientX + "px; top: " + e.clientY + "px;";
});
</script>
<div class="login-box">
<h1>Авторизация</h1>
<form method="post">
<div class="textbox">
<i class="fas fa-user"></i>
<input type="text" name="user" placeholder="Логин">
</div>
<div class="textbox">
<i class="fas fa-lock"></i>
<input type="password" name="pass" placeholder="Пароль">
</div>
<input type="submit" name="submit" class="btn" value="Войти">
</form>
<div class="msg_box"> <?php
if ($login_stat == 'false') {
//function false () {
echo '<p class="msg">Не правильный логин или пароль!</p>';
}
// if ($_SESSION['message'] == 'false') {
// echo '<p class="msg"> ' . $_SESSION['message'] . ' </p>';
//unset($_SESSION['message']);
?>
</div>
</div>
</body>
</html>
Ответы (1 шт):
Автор решения: cy4oHok
→ Ссылка
- Ваша ошибка -
ANDи&&довольно-таки сильно разные вещи - Немного
улучшилВаш код.
//Проверяем, что пользователь уже не залогинен т.к пользователь мог закрыть страницу
//потом снова открыть - не заставлять же его снова вводить логин и пароль,
//но тут есть `дыра` в безопасности т.к это мог быть
//компьютер в общественном месте и пользователь не разлогинился, а просто
//закрыл страницу и следующий пользователь этого компьютера просто открыл
//этот же сайт - сессия еще не истекла и он сразу попал в админку
if ( count( $_SESSION ) > 0 && isset( $_SESSION['admin'] ) && $_SESSION['admin'] == $users ) {
header("Location: index.php");
exit;
}
//Проверяем что через POST нам что-то передали
if ( count( $_POST ) > 0 ) {
//Зачем проверять `$_POST['submit']` если мы сразу можем проверить
//что передали логин и пароль
if ( isset( $_POST['user'] ) && isset( $_POST['pass'] ) ) {
//И вот только тут проверяем, логин и пароль на совпадение
if ( $_POST['user'] == $users && $_POST['pass'] == $pass ) {
//Если правильно ввели логин и пароль - переходим в админку
$_SESSION['admin'] = $users;
header("Location: index.php");
exit;
}
//Иначе был неверный ввод логина и пароля
$authError = true; //флаг, что ошибка авторизации
}
}
if( count( $_GET ) > 0 && isset( $GET['do'] ) && $_GET['do'] == 'logout' ) {
unset($_SESSION['admin']);
session_destroy();
}
?>
Далее внутри Вашей страницы авторизации заменяете
if ($login_stat == 'false') {
...
}
на
if ( isset( $authError ) ) {
...
}