我需要计算从页面命中的url的命中次数,但为此,我需要检测url是从页面命中还是简单地复制粘贴。
有人能建议我在方法中选择什么吗:
1. Using $_SERVER['HTTP_REFERER']
2. Using sessions
3. IP matching
$_SERVER['HTTP_REFERER']似乎是自然的选择,然而http://php.net/manual/en/reserved.variables.server.php有一些有趣的东西要说:
"HTTP_REFERER"引用用户代理到当前页面。这是由用户代理设置的。不是全部用户代理将对此进行设置,有些代理提供修改的能力HTTP_REFERER作为一个功能。简言之,它不能真正被信任。
一种更可靠的方法是,当点击页面时,将一些数据动态编码到URL中,比如当前的UTC日期时间。然后,服务器端检查接收到的时间戳是否在当前时间的1或2秒内。如果有复制和粘贴,要么没有时间戳,要么时间戳是错误的。
客户可能会选错时间,但现在不太可能。为了更加确定,您需要从服务器发送一个时间戳,并将其用作生成日期时间的基础。
以下评论:
同意,时间戳可能会受到网络波动的影响。用Javascript(服务器可以验证)在一次性cookie中编码一些数据(即立即过期)怎么样。你不能复制粘贴饼干!