[英]Showing the user that he has logged out
I want this: If the user logs out(session destroy) then index should say: You are logged out. 我想要这样:如果用户注销(会话销毁),则索引应显示:您已注销。
if (isset($_SESSION['user']) && $_SESSION['user'] == true) {
echo "Welcome on the users page!, " . $_SESSION['username'] . "!";
}
elseif (!isset($_SESSION['user'])) {
echo "You logged out..";}
The problem I am having is that it also shows you logged out when you haven't even logged in to be able to log out. 我遇到的问题是,即使您没有登录才能注销,它也会显示您已注销。 I only want it to show if the user logs out.
我只希望它显示用户是否注销。
Also I only want "You are logged out" to show up once. 另外,我只希望“您已注销”出现一次。 If you refresh the page, it should be gone
如果刷新页面,该页面应该消失了
That is because of the following condition: 这是由于以下情况:
!isset($_SESSION['user']
This is true whether the user logged-in or not. 无论用户是否登录,都是如此。 So you have to make some other session variable to check for the user logged out.
因此,您必须设置其他会话变量以检查注销的用户。 And that is only set when the user logged out.
并且仅在用户注销时设置。
Ex: 例如:
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.
}
and check this on index page. 并在索引页面上检查。
Instead of using php unset(); 而不是使用php unset(); function to destroy a session, you can actually save boolean "false" in the $_SESSION["user"];
函数销毁会话,实际上可以在$ _SESSION [“ user”]中保存布尔值“ false”;
For example, in you logout page: 例如,在您的注销页面中:
Instead of destroying, set session to false 将会话设置为false而不是销毁
Ex: 例如:
`` //When logging out $_SESSION["user"] = 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"]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.