【问题标题】:Showing the user that he has logged out向用户显示他已注销
【发布时间】:2017-10-13 22:17:32
【问题描述】:

我想要这个:如果用户注销(会话销毁),那么索引应该说:您已注销。

if (isset($_SESSION['user']) && $_SESSION['user'] == true) {
echo "Welcome on the users page!, " . $_SESSION['username'] . "!";
    } 
    elseif (!isset($_SESSION['user'])) {
    echo "You logged out..";}

我遇到的问题是,当您甚至还没有登录时,它也会显示您已注销,以便能够注销。我只希望它显示用户是否注销。

另外,我只希望“您已注销”出现一次。如果刷新页面,它应该消失了

【问题讨论】:

  • 如果您希望快速修复,您应该将 $_SESSION['user'] 默认设置为 false,然后在用户注销时取消设置。但它不是很干净......或者可能定义一个其他会话变量只弹出一次错误消息。

标签: php mysql session login logout


【解决方案1】:

而不是使用 php unset();销毁会话的函数,您实际上可以在 $_SESSION["user"]; 中保存布尔值 "false";

例如在你的登出页面:

设置会话为 false,而不是销毁

例如:

`` //注销时 $_SESSION["user"] = false;

//now to check if user logged out

if($_SESSION["user"] === false) {

echo "you logged out";

}elseif(!isset($_SESSION["user"])) {//when the session finally expires
echo " you haven't logged in";

}else{
echo "you are logged in";
}


 //to get rid of it after page reload,    you need to unset the SESSION


unset($_SESSION["user"]);

【讨论】:

  • 现在可以使用了,只需要在刷新的时候搞清楚怎么去掉。谢谢。
  • 您可以通过实际销毁 $_SESSION['user']; 来摆脱它检查更新的答案
【解决方案2】:

这是因为以下情况:

!isset($_SESSION['user']

无论用户是否登录都是如此。因此,您必须创建一些其他会话变量来检查用户是否已注销。这仅在用户注销时设置。

例如:

if( !isset($_SESSION['user'] && isset($_SESSION['logged_out']))
{
    // isset($_SESSION['user'] to check if user logged out and extra condition to check if user comes here after logged-out.
}

并在索引页面上检查。

【讨论】:

  • 我知道为什么我的代码是错误的,但是如何检查用户是否退出?
猜你喜欢
  • 2020-03-26
  • 2016-09-18
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 2020-09-06
  • 2018-07-16
  • 1970-01-01
  • 2014-11-18
相关资源
最近更新 更多