如何使用php制作涉及会话cookie的注销页面?

Posted

技术标签:

【中文标题】如何使用php制作涉及会话cookie的注销页面?【英文标题】:How to make logout page that involves session cookie using php? 【发布时间】:2014-05-19 16:56:31 【问题描述】:

我想创建一个 logout.php 以便它记住 login.php 中的用户名。

我想使用 $_GET 方法,以便它从登录中获取会话用户名,当我们注销时,cookie 会话被注销。如果没有设置 cookie 会话,则会出现一个错误,指出没有人登录,所以 log gout 不起作用。

login.php 确实登录了用户并设置了我从浏览器设置中检查的 cookie。

登录.php

<?php 

require"connection.php";
if (!isset($_POST['submit']))
    $user = $_POST['username']; 
    $password = $_POST['password'];  

  if ($user) 
        if ($password) 

setcookie('username', '$user', time()+3600); 
setcookie('password', '$password', time()+3600);       

          //make sure login info correct
            $query = mysql_query("SELECT * FROM users WHERE username = '$user'"); 
                $numrows = mysql_num_rows($query); 

            if ($numrows == 1) 
                $row = mysql_fetch_assoc($query); 
                 $dbuser = $row['username']; 
                 $dbpass = $row['password']; 

        echo '<script type="text/javascript">alert("Welcome, '.$user.'. A cookie session  has been created.");</script>'; 
        elseecho "Please enter valid username or password";
        else echo "Your password didn't match. Please try again";
        else echo "Your username didn't match. Please try again";
        else echo "Please enter username and password";
?> 

【问题讨论】:

在注销页面上简单检查会话,如果没有设置特定会话,你可以给出错误。您不需要使用会话 cookie。 ..并且不要忘记在将 POST 数据插入 SQL 之前对其进行转义。 【参考方案1】:

试试这样的..

if(isset($_COOKIE['username']) && !empty($_COOKIE['username'])) 
    // Bye $_COOKIE['username'], you are logged out.
    setcookie('username', '', time() - 3600);
 else 
    // no user logged in

【讨论】:

您知道如何回显已登录的用户名并说例如“Bye Alex,您已注销”。我们需要 $_GET 命令吗?

以上是关于如何使用php制作涉及会话cookie的注销页面?的主要内容,如果未能解决你的问题,请参考以下文章

PHP - 为啥我不能摆脱这个会话 id cookie?

在从 php 会话注销期间取消设置 cookie 有啥意义?

在我单击注销按钮之前,如何在 php 中保持会话? [复制]

正确的注销PHP SESSION

使用 cookie 时注销

擦除 websphere 中的 cookie - 如何注销