向用户显示他已注销
Posted
技术标签:
【中文标题】向用户显示他已注销【英文标题】: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,然后在用户注销时取消设置。但它不是很干净......或者可能定义一个其他会话变量只弹出一次错误消息。 【参考方案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.
并在索引页面上检查。
【讨论】:
我知道为什么我的代码是错误的,但是如何检查用户是否退出?以上是关于向用户显示他已注销的主要内容,如果未能解决你的问题,请参考以下文章
想要向新用户显示欢迎页面,并在 Flutter Firebase 中向登录用户显示主屏幕