我已经创建了一个登录和注册系统,它运行完美,我感到非常自豪,但我似乎无法使用注销功能。
我的登录系统基本上是对数据库进行扫描并查找指定了用户名和密码的行,如果有,则会使$ _SESSION ['loggedin'] = 1;如果失败则使其等于0.
用户完成后,他/她点击重定向到logout.php的链接,这就是问题的开始。我把session_start();在每个页面的开头,但session_destroy,session_unset和两者的组合似乎无法杀死会话。
所以我想知道,有没有办法在加载logout.php时,它将$ _SESSION ['loggedin]设置为0,然后重定向回index.php(我的主页)?这意味着它不会杀死会话,但它会有效地将用户注销。任何帮助表示赞赏。
答案 0 :(得分:1)
如果session_destroy不起作用,请改为使用:
取消设置($ _ SESSION ['将你的会话放在这里']);
答案 1 :(得分:1)
我建议你有3个文件 1)login.php
session_start();
/*if user $_POST username and password is correct then*/
$_SESSION['loggedin'] = 1;
?>
2)logout.php
<?php
session_start();
unset($_SESSION['loggedin']);
$_SESSION['loggedin'] = 0;
?>
3)checkLogin.php
<?php
session_start();
if ( isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == 0 )
{
echo "<script type='text/javascript'>alert('You need to login !')</script>";
echo '<meta http-equiv="Refresh" content="0;URL=index.php" />';
flush();
exit();
}
?>
有3个文件,如果你想在访问之前控制一些需要登录的页面,你只需要包含(checkLogin.php);
e.g。 index.php不需要登录然后不包括(checkLogin.php);
但是memberProfile.php需要登录才能包含(checkLogin.php);
答案 2 :(得分:0)
// 1. Find the session
session_start();
// 2. Unset all the session variables
$_SESSION = array();
// 3. Destroy the session cookie
if(isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
// 4. Destroy the session
session_destroy();
答案 3 :(得分:0)
// logout.php
session_start();
if(isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == 1) {
$_SESSION['loggedin'] = 0;
header('Location: index.php');
}
如果index.php
等于$_SESSION['loggedin']
,它会将用户重定向到1
,并将$_SESSION['loggedin']
设置为0
。