5

我有一个登录页面,然后我创建了一个指向名为 logout 的页面的链接,它包含以下代码:

注销.php

<?php

session_unset();
session_destroy();
header("Location:");

?>

然而,当我注销然后点击后退按钮时,它会带我回来。如何更改它,以便在显示上一页之前要求您再次登录?

4

5 回答 5

3

在您要返回的页面(或与此相关的任何页面)上,您需要检查用户是否已登录(即具有有效会话),如果没有,则将其重定向到登录页面。

此外,向这段特定的代码添加一些无缓存标头可能会有所帮助。

于 2013-04-12T15:20:57.280 回答
1

您尚未设置任何要重定向到的位置。

应该:

 header("Location:http://example.com/login.php");

这样,当您注销时,它会将浏览器重定向到 login.php。

编辑:

此外,将会话验证条件添加到您的主页会有所帮助。

像这样的东西:

 if(!isset($_SESSION))
 {
     header("Location:http://example.com/login.php");
 }
于 2013-04-12T15:21:33.770 回答
1

如果用户已登录,请尝试检查每个页面

if (!$_SESSION['logged_in']) { //you would have to make $_SESSION['logged_in'] when they login
header('location: login.php');
}

所有这一切都是说如果 $_SESSION['logged_in'] 未设置将它们重定向到登录页面。

您还需要进行其他检查以确保其安全。

于 2013-04-12T15:30:28.433 回答
1

在加载每个页面(或至少每个 PRIVATE/RESERVED 页面)之前,您应该检查 $_SESSION 变量以确定用户是否合法登录。

如果您不执行此检查,那么每个人都可以访问您网站的每个页面,只要他们有指向它的直接链接。他们可能会看到页面的损坏版本,但仍然授予未登录用户访问权限。

于 2013-04-12T15:23:56.683 回答
1
<?php
    session_start();
    session_unset();
    session_destroy();
    session_write_close();
    setcookie(session_name(),'',0,'/');
    session_regenerate_id(true);
?>

来源:手册

于 2013-04-12T15:25:56.497 回答