看看这个简单的例子,因为经过几个小时的尝试,我无法让它发挥作用。
if(!isset($_SESSION['alien'])){
if(!isset($_SERVER['HTTP_REFERER']) &&
$_SERVER['HTTP_REFERER'] != 'http://www.alien-planet.com/'){
echo 'Go AWAY';
}else{
$_SESSION['alien'] = 'Yes';
}
}
目的是,如果有人来自alien-planet.com,则永远不会显示Go AWAY
消息。那是他/她登陆索引页面的时候。但如果该人来自该网站,则会初始化会话$_SESSION['alien'] = 'Yes';
,因此即使该人刷新该网页,或浏览该网站链接,他/她也不会看到该消息
问题首次访问该页面时,您没有看到Go AWAY
消息(意味着它有效,因为我来自alien-planet.com)但是,我转到其他页面,仍然在所有页面中包含session_start()
的同一站点,我以某种方式松开了消息,当我再次返回索引页面时,我看到了Go AWAY
消息。
我不明白造成这种情况的原因。页面中没有会话销毁/未设置。
答案 0 :(得分:1)
似乎所有请求的会话都不一样。也许你不告诉php用户会话是什么。有不同的方法,例如请求参数PHPSESSID或session cookies。
请确保您使用其中一种方法。您可以通过打印每个请求的当前会话ID来简单地测试它:
echo session_id();