2013-08-02 84 views
-2

這是我的代碼的一部分:錯誤的mysql_real_escape_string()

if(!isset($_GET['username']) || !isset($_GET['sessionid'])) 
{ 
    $returning = array('error' => 'Invalid query'); 
    echo json_encode($returning); 
    break; 
} 
echo $_GET['username']; 
$z = mysql_real_escape_string($_GET['username']); 
echo $z; 

而且我的查詢:

tymonradzik.pl/THUNDER_HUNTER/thapi.php?q=xxx &用戶名= ty221 &的sessionid = JRHjYqeZKBPq1LPPck0XrnCwJU2UKnfufWNem1d7D3yEOnu0HvX9SAFCuIxe6MImJwA6xNdbQLPF9kGRPE0IeGkJoRXvEGRncrtKfGV6sLLB5ssV6sDk9X3xP13tHUQU

它只返回「ty221」,但應該是「ty221ty221」。錯誤在哪裏?

+0

您是否收到錯誤信息? – naththedeveloper

+0

在我的服務器上,錯誤消息被禁用,但是'php -l myfile.php',沒有給出錯誤 – TN888

+4

您沒有有效的數據庫連接,因此'mysql_real_escape_string'嘗試使用php中的配置值打開一個新的連接.ini,失敗。 – DCoder

回答

0

根據the documentation

如果不指定連接標識,假設由mysql_connect()打開的最後一個環節。如果沒有找到這樣的鏈接,它將嘗試創建一個,就像調用mysql_connect()時沒有參數一樣。如果未找到或建立連接,則會生成E_WARNING級別的錯誤。

返回轉義字符串或錯誤FALSE

受過教育的猜測是,你不必到數據庫的有效連接,因此mysql_real_escape_string試圖打開使用php.ini的配置值一個新的連接,這將失敗。


強制性安全公告:

您正在使用an obsolete database API,應使用a modern replacement。你也容易SQL injection attacks,一個現代的API會讓你更容易從defend