例如,當在文本字段中鍵入'時,PHP會在其之前放置\。PHP在插入到MySQL時將字符串添加到字符中
我使用過濾以下:
$comment_body = $_POST['comment_body'];
$comment_body = nl2br(htmlspecialchars($comment_body));
$comment_body = mysqli_real_escape_string($db_conx,$comment_body);
如何阻止出現這種斜線?
例如,當在文本字段中鍵入'時,PHP會在其之前放置\。PHP在插入到MySQL時將字符串添加到字符中
我使用過濾以下:
$comment_body = $_POST['comment_body'];
$comment_body = nl2br(htmlspecialchars($comment_body));
$comment_body = mysqli_real_escape_string($db_conx,$comment_body);
如何阻止出現這種斜線?
這是mysqli_real_escape_string所做的。這應該只在將數據放入數據庫時使用。如果您打算輸出$ comment_body,則只需放棄代碼片段的最後一行。如果發生雙重轉義,可能是magic quotes配置指令的結果。
我知道這一點,但我在其他網站上使用過它,而\並未發佈到數據庫中。有沒有辦法阻止它被髮布或阻止它與\顯示的方式,而不刪除mysqli_real_escape_string?我實際上是通過 – James
@James看到編輯插入到數據庫中......它可能是魔術引號咬你。 – Orangepill
這就是發生了什麼,服務器更新到最新版本的PHP。有沒有辦法在查詢數據庫時隱藏\ \? – James
你應該用消毒至於背景:
當保存到數據庫中只使用mysqli_real_escape_string()。當輸出變量爲HTML時,只需使用htmlspecialchars()。
自動斜線的加入可能是由於magic_quotes_gpc的,這是在PHP的新版本已經撤走了,但你可以在的phpinfo檢查設置();
我同意你不想存儲htmlspecialchars和nl2br的結果。 – Orangepill
這大概可能是因爲你有魔術引號:magic_quotes_gpc的 如果是這樣,你可以使用this
的'mysqli_real_escape_string'函數調用逃逸單引號用反斜槓來防止SQL注入禁用的情況下。 – TMKCodes
這就是你的mysqli_real_escape_string正在做的事情。它應該是這樣的 – Jacob
我知道,但我已經在其他網站上使用它,而\不會發布到數據庫中。有沒有辦法阻止它被髮布或阻止它與\顯示的方式,而不刪除mysqli_real_escape_string? – James