PHP: выход пользователя из системы
У меня есть форма, которая позволяет пользователям вводить свои данные. Затем он проверяет эти данные в базе данных, чтобы увидеть, существует ли пользователь. Если да, то он регистрирует их на определенной странице.
Затем я хотел бы разрешить им выйти из системы (таким образом, чтобы у них больше не было доступа к этой определенной странице). С этой целью я создал "выход из системы.php " документ, в котором я пытаюсь Очистить данные для входа.
Однако, сделав это, если я попытаюсь загрузить страницу входа, она вернет меня на страницу входа в систему.
Вот мой код (логин.php - создание формы и вход пользователя в систему):
<?php  //Start the Session
session_start();
require('connect.php');
if (isset($_POST['username']) and isset($_POST['password']))
{
    //3.1.1 Assigning posted values to variables.
    $username = $_POST['username'];
    $password = $_POST['password'];
    //3.1.2 Checking if the values exist in the database
    $checkLogin = $connection->query("SELECT * FROM users 
        where (username='$username' && password='$password')");
    $numRows = $checkLogin->fetchColumn();
    //3.1.2 If the posted values are equal to the database values, then session will be created for the user.
    if ($numRows >= 1){
        $_SESSION['username'] = $username;
    }else{
        //3.1.3 If the login credentials doesn't match, he will be shown with an error message.
        echo '<script>window.alert("Invalid Login Credentials")</script>';
    }
}
//3.1.4 if the user is logged in Greets the user with message
if (isset($_SESSION['username'])){
$username = $_SESSION['username'];
echo "Hi " . $username . "
";
echo "This is the Members Area";
echo "<a href='logout.php'>Logout</a>";
echo $username;
}else{
//3.2 When the user visits the page first time, simple login form will be displayed.
?>
<!DOCTYPE html>
 <head>
<title>CodingCyber - Simple Login Script</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<!-- Form for logging in the users -->
<div class="register-form">
<?php
    if(isset($msg) & !empty($msg)){
        echo $msg;
    }
 ?>
<h1>Login</h1>
<form action="login.php" method="POST">
    <p><label>User Name : </label>
    <input id="username" type="text" name="username" placeholder="username" /></p>
     <p><label>Password   : </label>
     <input id="password" type="password" name="password" placeholder="password" /></p>
    <a class="btn" href="register.php">Signup</a>
    <input class="btn register" type="submit" name="submit" value="Login" />
    </form>
</div>
<?php } ?>
</body>
</html>
" require ('подключение.php')"; просто подключается к моей базе данных MySQL. Этот код все, кажется, работает нормально, в том, что он действительно регистрирует пользователей, после проверки. Я просто включил его для полноты w. r. t.проблемы.
Как вы можете видеть, после входа в систему он отображает текст, говорящий "область участника", с гиперссылкой выхода из системы.
Вот мой выход из системы.php код (который я хотел бы удалить доступ к область пользователя и вернуть пользователя на страницу входа):
<?php
    session_start();
    $username = '';
    $password = '';
    $confirmPassword = '';
    $email = '';
    echo $username;
    unset($_POST['username']);
    unset($password);
?>
Этот второй бит кода находится там, где, честно говоря, я действительно не уверен, что я должен сделать, чтобы удалить права доступа.
Я просмотрел несколько других вопросов, но, похоже, не могу найти решение.Любая помощь была бы потрясающей! Пожалуйста, дайте мне знать, если есть подобная тема или если вам нужна дополнительная информация.
Спасибо!
2 ответа:
Вам нужно уничтожить переменные сеанса:
// Unset all of the session variables. $_SESSION = array(); // If it's desired to kill the session, also delete the session cookie. // Note: This will destroy the session, and not just the session data! if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"] ); } // Finally, destroy the session. session_destroy(); $url = 'http://example.com'; header( "Location: $url" ); exit();