我的问题是,当用户注销时。正在调用登录页面并显示索引页面但是网址正在显示
https://mysite/logout.php
而不是
https://mysite/index.php
这意味着我的javascript文件包含在index.php中,因此无法再次登录而无需手动刷新页面。
在home.php中链接登录后到达的页面
<p class="mc-top-margin-1-5"><a href="logout.php">Logout</a></p>
我有以下注销页面(logout.php)
<?php
session_start();
require_once 'php/class/class.user.php';
$user = new USER();
if(!$user->is_logged_in())
{
$user->redirect('index.php');
exit;
}
if($user->is_logged_in()!="")
{
$user->logout();
$user->redirect('index.php');
exit;
}
?>
我的用户功能如下(class.user.php)
public function is_logged_in()
{
if(isset($_SESSION['userSession']))
{
return true;
}
}
public function redirect($url)
{
header("Location: $url");
}
public function logout()
{
session_destroy();
}
我错过了什么?
答案 0 :(得分:0)
您的函数is_logged_in()
返回一个布尔值TRUE,但您正在检查返回值:
if($user->is_logged_in()!="")
即检查它是否为空字符串。
此外,更重要的是,如果用户未登录,is_logged_in()
不会返回任何内容。该功能应该是这样的:
public function is_logged_in()
{
if(isset($_SESSION['userSession']))
{
return true;
}
else { return false; }
}
检查应该是这样的:
if(!$user->is_logged_in())
答案 1 :(得分:0)
所以我最终找到了一个不太好的解决方案:
我更改了home.php中的链接
`<p class="mc-top-margin-1-5"><a href="logout.php">Logout</a></p> `
到按钮
<button id="btn-logout">Logout</button>
并在jquery函数中添加了它的功能
$(function(){
$("#btn-logout").bind('click', function () {
window.location.href = "http://example.com/logout.php";
})
});
我的logout.php最终看起来像
<?php
session_start();
unset($_SESSION['user_session']);
session_destroy();
?>
<html>
<head>
<script>
window.location.href = "https://example.com/index.php";
</script>
</head>
<body>
</body>
</html>
所以从使用标题的php中的刷新页面开始。我最终得到了js和jquery。它不是一个很好的解决方案,但它的工作原理!