阻止用户查看需要会话的页面

时间:2013-04-12 15:17:27

标签: php

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

logout.php

<?php

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

?>

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

5 个答案:

答案 0 :(得分:3)

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

此外,您可以在此特定代码段中添加一些禁用缓存标头。

答案 1 :(得分:1)

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

应该是:

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

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

修改

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

Somenthing like:

 if(!isset($_SESSION))
 {
     header("Location:http://example.com/login.php");
 }

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

<?php
    session_start();
    session_unset();
    session_destroy();
    session_write_close();
    setcookie(session_name(),'',0,'/');
    session_regenerate_id(true);
?>

来源:Manual

答案 4 :(得分:1)

如果用户已登录

,请尝试检查每个页面
if (!$_SESSION['logged_in']) { //you would have to make $_SESSION['logged_in'] when they login
header('location: login.php');
}

如果没有设置$ _SESSION ['logged_in'],请将它们重定向到登录页面。

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