如何设置cookie用于用户下线


How to set a cookie to log user out

我正在学习cookie章节,需要一些帮助来理解何时使用它们。在这个例子中,我想让用户输入他的信息,然后点击提交。然后,将显示他的信息。然后我有一个注销按钮,当他按下这个按钮时,我希望显示信息回到默认值。

(这是不完整的)但到目前为止,我只在test.php文件中编写了以下内容:

<?php
    session_start();
    if(isset($_GET['submit'])) {
        $fn = $_GET['fname'];
        $ln = $_GET['lname'];
        $stunum = $_GET['stunum'];
        $_SESSION['firstname'] = $fn;
        $_SESSION['lastname'] = $ln;
        $_SESSION['studentNumber'] = $stunum;
    }
    setcookie ('logout', "Logout", time()-3600);
    session_destroy();
?>
<html>
   <body>
       <form action ="message.php" method="get">
           Firstname:<br><input type="text" name="fname"><br>
           Lastname:<br><input type="text" name="lname"><br>
           Student ID:<br><input type="number" name="stunum"><br>
           <input type="submit" name="submit">
       </form>
    </body>
</html>

在message.php中:

<?php
    include('test.php');
    $firstname = $_SESSION['firstname'];
    $lastname = $_SESSION['lastname'];
    $studentNumber = $_SESSION['studentNumber'];
    echo "Hi " . $firstname . " " . $lastname . "." . "Your student number is " . $studentNumber;
    setcookie('logout', "Logout", time() + 3600);
    if (isset($_COOKIE['logout'])) {
        setcookie('logout', "Logout", time() - 3600);
        session_destroy();
    }
    ?>
    <html>
        <body>
            <button name="logout">Logout</button>
        </body>
    </html>

您根本不需要这个"logout" cookie。您的用户通过会话登录,因此session_destroy();就足够了。好的做法是只"销毁"(取消设置)你已经定义的会话变量('firstname', 'lastname', 'studentNumber'),而不是销毁整个会话,可以包含来自其他脚本的数据。

所以如果你想注销用户,在你的"注销"按钮周围做一个表单并通过POST发送一些变量:

<form action="" method="post">
<button name="logout">Logout</button>
<input type="hidden" name="logout" value="true" />
</form>

如果用户提交表单,则取消设置会话变量:

if(isset($_POST['logout'])) {
   unset($_SESSION['firstname']);
   unset($_SESSION['lastname']);
   unset($_SESSION['studentNumber']);
}

这不是一个很好的代码示例,但我希望它能对你的教育有所帮助。