在PHP中未检测到bingbot的URL请求参数

时间:2012-01-11 15:52:14

标签: php apache web-crawler

我发生了一件奇怪的事情,bingbot正在抓住我的网站,其中一个这样的网址如下:

https://xxxxx/programme.php?action=view&id=2233

在我的代码中,我有这个功能:

function getNumericValue($value) {
    if (is_numeric($value)) {
            return mysql_escape_string($value);
    }
    if (isset($_GET[$value])) {
            if (!is_numeric($_GET[$value])) {
                    echo "$value must be numeric.";
                    exit;
            }
            return mysql_escape_string($_GET[$value]);
    } if (isset($_POST[$value])) {
            if (!is_numeric($_POST[$value])) {
                    echo "$value must be numeric.";
                    exit;
            }
            return mysql_escape_string($_POST[$value]);
    } else {
            echo "Please specify a $value";
            debug("Please specify a $value - " .$_SERVER['REQUEST_URI'].' : '.$_SERVER['HTTP_USER_AGENT'].' : '.print_r($_POST, true).' USERID: '.getUserid());
            exit;
    }

}

debug()函数每15分钟向我发送一次错误,当微软蜘蛛网站时,我得到:请指定一个id - /programme.php?action=view&id=2233:msnbot-NewsBlogs / 2.0b (+ http://search.msn.com/msnbot.htm):Array()USERID:-1

你可以从URL看到它有一个id,但PHP完全忽略了它。谷歌蜘蛛很好。

任何想法可能会发生什么,以及如何解决它?

1 个答案:

答案 0 :(得分:0)

疯狂猜测 - 也许在ID号后面有一个额外的空格,is_numeric(' 2233')返回false。尝试修剪从$ _GET / $ _ POST(或$ _REQUEST)获取的值:

function getNumericValue($value) {
    if (is_numeric($value)) {
            return mysql_escape_string($value);
    }

    if (isset($_REQUEST[$value])) {
            $request_value = trim($_REQUEST[$value]);
            if (!is_numeric($request_value)) {
                    echo "$value must be numeric.";
                    exit;
            }
            return mysql_escape_string($request_value);
    }

    echo "Please specify a $value";
    debug("Please specify a $value - " .$_SERVER['REQUEST_URI'].' : '.$_SERVER['HTTP_USER_AGENT'].' : '.print_r($_POST, true).' USERID: '.getUserid());
    exit;
}