我有一個奇怪的事情發生了,bingbot是蜘蛛我的網站,以及一個這樣的URL看起來像這樣:URL請求參數在PHP中未檢測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;
}
}
調試()函數的郵件我的錯誤,每15分鐘,當微軟蜘蛛的網站,我得到:請註明一個id - /programme.php?action=view & id = 2233:msnbot-NewsBlogs/2.0b(+ http://search.msn.com/msnbot.htm):Array()USERID:-1
你可以從URL中看到它有一個id,但PHP完全忽略它。這對谷歌蜘蛛來說很好。
任何想法會發生什麼,以及如何解決它?
只是一個供參考,而不是檢查$ _GET和$ _POST,您可以用$ _REQUEST:HTTP:// WWW .php.net/manual/en/reserved.variables.request.php 另外,我想你的意思是使用elseif。你的代碼看起來應該是這樣,但實際上並不是這樣。最後一個else僅用於'isset($ _ POST [$ value])'部分。 最後,您期望的輸出是什麼? – 2012-01-11 15:55:08
謝謝 - 我已經使用了REQUEST,直到我發現這個奇怪的東西,所以一直在嘗試各種! – 2012-01-11 18:07:17
糟糕 - 輸入提交,抱歉。 (blar.php?id = 1,然後getNumericValue('id')獲得valueof $ _GET ['id']的值 - 但是,它並不認爲它是在請求參數,因爲它正在觸及ELSE子句 – 2012-01-11 18:09:14