2017-10-18 118 views
0

在我的PHP代碼中,我傳遞了一個ID爲PHP從SQL服務器獲取信息。 它似乎很好地工作,但每當我有一個「&」的名字,這是行不通的作品「2017_test ID」SQL注入ID名稱包含'&'

http://localhost/php/single-entry.php?document_id=2017_test%20id 

這裏的ID的更多

$doc_info = array(); 
$id = "ID not set"; 
if(isset($_GET['document_id'])) { 
    $id = $_GET['document_id']; 
    $id = str_replace('___', '&', $id); 
    $doc_info = get_document_info($id); 
    $doc_info['dummy'] = " "; 
} 

例子我知道正確的信息。一個ID的

例如不工作 「2017_e &我EDV」

http://localhost/php/single-entry.php?document_id=2017_e&i%20EDV 

在這裏,我讓PHP警告:未定義指數。儘管數據在數據庫中。

我將id傳遞給另一個函數,該函數使用此ID獲取存儲在數據庫中的信息數組。 在第一個例子中我得到的數據,但如果名下有「&」我得到未定義指數

+0

「不起作用」究竟意味着什麼? – zerkms

+1

瞭解url編碼,因爲像'?','='和'&'這樣的特定字符在URL中具有特殊含義作爲GET參數分隔符 –

+0

$ _GET中的&是一個特殊字符。從G_GET轉換爲$ _POST,看看是否有幫助 – jeff

回答

0

您可以使用以下方法:

進行urlencode($ DOCUMENT_ID) - 在發送請求你的PHP腳本
並在註釋部分指出的,$ _GET [「DOCUMENT_ID」]會給 你已經解碼值

,並使用解碼值插件tead在你的PHP腳本中。

+0

你不需要'urldecode',它會自動完成。 – zerkms

+0

不,'urldecode($ _ GET [「document_id」])'是完全多餘的(可能有害)。 – zerkms

+0

@zerkms爲什麼它是有害的,請解釋。 – Tarun