2013-02-06 34 views
0

直到現在,在處理來自HTML表單的輸入時,我一直在使用預處理語句和real_escape_string。例如:使用HTML表單和PHP預處理語句

$var1 = $dbconnection->real_escape_string($_POST['varFromForm']); 

if ($insert = $dbconnection->prepare("INSERT etc.. ")) { 
    $insert->bind_param('s', $var1); 
    and so on.. 

雖然,通過輸出顯示所存儲的數據時,此弄亂格式化\ r \ n當新換行符在輸入的文本區域中使用。這是因爲它顯然已經逃過了兩次輸入。

所以我想確保我沒有誤解準備語句的處理,並且下面的代碼通過使用準備好的語句而不是逃避SQL注入是安全的?

$var1 = $_POST['varFromForm']; 

if ($insert = $dbconnection->prepare("INSERT etc.. ")) { 
    $insert->bind_param('s', $var1); 
    and so on.. 
+0

你是如何設置數據庫連接的? – PeeHaa

+0

On準備語句http://stackoverflow.com/a/8265319/285587 –

+1

轉義(和HTML表單)http://stackoverflow.com/a/9296858/285587 –

回答

1

準備語句的sql查詢執行計劃不能被參數改變,只能插入參數。所以你不需要逃避變量。

+0

所以我認爲我很安全。感謝您的時間。 – Markus