3 回答
TA贡献1876条经验 获得超6个赞
您已设置$_SERVER['PHP_SELF']. 这就是它重定向到同一页面的原因。你需要改变它,例如:login.php
if(isset($_GET['logout'])) {
unset($_SESSION['username']);// do not set it as empty, unset it
//header('Location: ' . $_SERVER['PHP_SELF']);//change this line to
header('Location: login.php');
}
另一个错误是在您将它重定向到的 else 条件中,index.php这就是未登录用户能够看到索引页面的原因。
else {
//header("Location: index.php");// change this to
header('Location: login.php');
}
注意:我只添加login.php了例如。将未登录的用户重定向到您想要的位置。
TA贡献1840条经验 获得超5个赞
首先,注销时销毁会话。并将其重定向到登录页面。假设 index.php 是登录页面。
if(isset($_GET['logout'])) {
session_start();
session_destroy();
header('Location: index.php');
}
在 sidebar.php 中,检查会话是否设置。如果未设置会话,则表示用户未登录。您可以通过将他们重定向到登录页面来阻止他们访问该页面
<?php
session_start();
if (!isset($_SESSION["username"]))
{
header("location: index.php");
} ?>
<ul>
<li class="dropdown profile_details_drop">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<div class="profile_img">
<div class="user-name">
<p>
<a href="?logout=1">Logout</p>
</div>
<div class="clearfix"></div>
</div>
</a>
</li>
</ul>
TA贡献1815条经验 获得超13个赞
首先,你的代码应该被我美化。
其次,您忘记关闭a href标签,因此您的$_GET陈述 isset 不是真的。因此,通过单击该链接,该页面将再次检查if(isset($_POST['username']))哪个是真的,并且您将被重定向到您的标题的原因。
考虑制定的logout.php,你使用session_destroy和session_unset你重定向你的用户login.php,例如:
登出.php:
<?php
session_start();
session_unset($_SESSION['username']);
session_unset();
session_destroy();
header('Location: login.php');
?>
最后,考虑不使用$_GET,而偏爱$_POST或$_SESSION变量,只是因为在 URL 上不可见的原因。
- 3 回答
- 0 关注
- 117 浏览
添加回答
举报