站点警告页面的逻辑也允许机器人/蜘蛛

时间:2013-02-02 23:53:36

标签: php

网站警告页面的两个主要功能: 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");
    ?>

0 个答案:

没有答案