只有在设置了确定的PHP会话后才需要缓存页面 为此,我使用以下代码:
session_start();
if(isset($_SESSION['bot'])){
$etagFile = md5_file(__FILE__);
header("Expires: " . gmdate("D, d M Y H:i:s", time() + 31556926) . " GMT");
header("Etag: $etagFile");
header('Cache-Control: private');
die('You\'ve been banned.');
}
echo 'Some content';
问题在于,当会话到期时,用户会看到“一些内容”,而他应该会看到“你被禁止了”一年。
error_reporting(E_ALL);
不返回任何内容
可能是什么问题?
答案 0 :(得分:1)
代码中没有错误,但存在逻辑缺陷。你是如何实现“会话到期”行为的?
当您使用PHP会话时,您基本上使用cookie。如果用户删除了cookie,或者如果您通过销毁它来结束会话,则会失去对用户的跟踪。会话已经消失了所有会话变量,您将需要以某种方式重新创建它。
如果不知道自己想做什么,我说不出多少。但是要禁止用户,您需要使用登录系统。
更新:似乎你正试图禁止机器人。你不应该使用session。您最好的选择是使用IP地址并检查请求的标头以获取机器人标识符(如果它是一个礼貌的机器人,它将识别自己)