我发生了一件奇怪的事情,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完全忽略了它。谷歌蜘蛛很好。
任何想法可能会发生什么,以及如何解决它?
答案 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;
}