2012-01-11 44 views
0

我有一個奇怪的事情發生了,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完全忽略它。這對谷歌蜘蛛來說很好。

任何想法會發生什麼,以及如何解決它?

+0

只是一個供參考,而不是檢查$ _GET和$ _POST,您可以用$ _REQUEST:HTTP:// WWW .php.net/manual/en/reserved.variables.request.php 另外,我想你的意思是使用elseif。你的代碼看起來應該是這樣,但實際上並不是這樣。最後一個else僅用於'isset($ _ POST [$ value])'部分。 最後,您期望的輸出是什麼? – 2012-01-11 15:55:08

+0

謝謝 - 我已經使用了REQUEST,直到我發現這個奇怪的東西,所以一直在嘗試各種! – 2012-01-11 18:07:17

+0

糟糕 - 輸入提交,抱歉。 (blar.php?id = 1,然後getNumericValue('id')獲得valueof $ _GET ['id']的值 - 但是,它並不認爲它是在請求參數,因爲它正在觸及ELSE子句 – 2012-01-11 18:09:14

回答

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; 
} 
+0

它不會是因爲它正在觸及ELSE子句,也就是說PHP不認爲REQUEST參數正在設置!但是感謝您的建議。 – 2012-01-11 18:10:04