作为这个php登录和重定向软件的一部分,我有一段代码需要添加到每个页面的开头以确保安全。如果用户拥有有效的用户登录信息,它会让用户完全登录,但如果他们转到另一个"安全"页面并试图重新访问原始页面(或者只是将其地址复制并粘贴到新的选项卡中进行访问),则会转到拒绝访问屏幕。
出现此错误是因为会话缓存标头有问题,还是更深层次的问题
目前看起来是这样的:
<?php
session_start();
session_cache_limiter();
header("Expires: Sat, 01 Jan 2000 00:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: post-check=0, pre-check=0",false);
require('config.php');
require('functions.php');
//this is group name or username of the group or person that you wish to allow access to
// - please be advise that the Administrators Groups has access to all pages.
if (allow_access(Users) != "yes")
{
include ('/home/folder/public_html/members/no_access.php');
exit;
}
?>
我试过改变别人问题的标题等,但这并不能改变问题。我还查看了任何相关链接,并确保它们没有被破坏等。
允许访问功能似乎是这样的:
function allow_access($group)
{
if ($_SESSION[group1] == "$group" || $_SESSION[group2] == "$group" || $_SESSION[group3] == "$group" ||
$_SESSION[group1] == "Administrators" || $_SESSION[group2] == "Administrators" || $_SESSION[group3] == "Administrators" ||
$_SESSION[user_name] == "$group")
{
$allowed = "yes";
}else{
$allowed = "no";
}
return $allowed;
}
您不需要:
session_cache_limiter();
header("Expires: Sat, 01 Jan 2000 00:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: post-check=0, pre-check=0",false);
可能是真正造成问题的原因。
你可以告诉我们什么来改进这个答案:
allow_access
是。当然,使用布尔值而不是文本yes
或no
。
什么是Users
?它不是我所看到的一个常数吗?它不是我眼中的一个物体吗?它也不是一个变量。。。那是什么?