网站警告页面的两个主要功能: 1)在用户拥有cookie之前(从接受T& C,所有深层URL链接重定向到警告/门口页面。 2)每页上的额外逻辑,以确定机器人/蜘蛛 - &如果是的话,让他们进去。
使用Matt Geri中的一些代码进行机器人检测。
我可以让两个方面分开工作,但不能相互结合 - 一个与另一个相冲突(逻辑明智 - 我相信)。
每个页面上的代码(用于检查它是否是机器人+检查用户是否在其计算机上有验证cookie):
<?php
session_start();
function check_if_spider()
{
// Add as many spiders you want in this array
$spiders = array('Googlebot', 'Yammybot', 'Openbot', 'Yahoo', 'Slurp',
'msnbot', 'ia_archiver', 'Lycos', 'Scooter', 'AltaVista', 'Teoma',
'Gigabot', 'Googlebot-Mobile');
// Loop through each spider and check if it appears in
// the User Agent
foreach ($spiders as $spider)
{
if (eregi($spider, $_SERVER['HTTP_USER_AGENT']))
{
return TRUE;
}
}
return FALSE;
}
// SECTION BELOW IS what seems to be causing the issue. I've tried all manner of
// logic (do/while, etc).
if (check_if_spider()!=true)
{
// Not a spider but could be a validated user
if (empty($_COOKIE["ageverify"])) {
// code if empty
$_SESSION["page_address"] = $_SERVER["PHP_SELF"];
header("Location: http://www.domain.com/warning.shtml");
exit;
}
}
?>
用于创建cookie的代码是:
<?php
session_start();
//Expire 1 days in the future
//seconds * minutes * hours * days + current time
$inoneday = 60 * 60 * 24 * 1 + time();
setcookie('ageverify', date("G:i - m/d/y"), $inoneday);
header("Location: http://www.domain.com/index.php");
?>