在我的代碼我使用addslashes轉義某些字符時,將它們插入到數據庫中,當我發送一些信息時,我使用stripslashes刪除這些斜線,情況是stripslashes功能刪除所有斜線,所以如果我需要發送任何反斜線的字符串也會被刪除。我如何保留那些所需的斜槓。跳轉使用斜線,然後使用stripslashes PHP
任何幫助將不勝感激。
在我的代碼我使用addslashes轉義某些字符時,將它們插入到數據庫中,當我發送一些信息時,我使用stripslashes刪除這些斜線,情況是stripslashes功能刪除所有斜線,所以如果我需要發送任何反斜線的字符串也會被刪除。我如何保留那些所需的斜槓。跳轉使用斜線,然後使用stripslashes PHP
任何幫助將不勝感激。
您可能想嘗試使用mysql_real_escape_string。您不必非要使用它,並且它對數據庫的使用是安全的。
更重要的是,使用prepared statements
感謝您的投入,在代碼廣泛使用addslashes的情況下,必須保持與MSSQL和MYSQL的兼容性,mysql_real_escape_string仍然可以工作嗎?我認爲它會,因爲它是PHP的功能,只是想確認。也建議使用str_replace(「\\」,「\」,stripslashes($ string))等編碼函數。請指教。 – pks83 2009-08-17 07:09:01
我會看看準備好的陳述。因爲如果你把準備好的陳述放進去,你會得到同樣的東西。意思是說,如果你不想立即重做整個系統,它不會破壞你當前的一些東西。如果您使用PDO庫來準備語句,您將與任何數據庫兼容。 – 2009-08-17 14:46:55
我認爲這是更好地使用htmlspecialchars轉義數據進行數據庫存儲。從數據庫獲取數據後,您不必擔心恢復它們,因爲它們將被瀏覽器正確處理。
您可以嘗試在插入到數據庫時使用PDO準備的語句,因此您無需擔心會轉義任何內容。
在我的代碼我使用和addslashes而將它們插入到數據庫逃避某些字符,當我發送一些信息出來我用stripslashes,以消除那些斜線......
你做它錯了。將其嵌入查詢中時,必須轉義字符串。 你做而不是從數據庫中回來的數據。沒有刪除的斜線。它們只存在於查詢中 - 不在數據庫中。
除此之外,綁定參數/準備語句好得多,正如本主題中其他人已經提到的。
**不要**使用'addslashes()',這是很多努力,但甚至不工作。查看Chacha102或iandc76的答案。 – 2009-08-17 06:39:51