嘿所以我認爲我的問題相當簡單,但我似乎無法找到解決問題的正確方法。打破用戶輸入的單引號和雙引號
我有一個表格,用戶應該填充它,然後插入到數據庫,它可以稍後檢索,它工作正常,直到測試時,我用引號......當使用引號(單或雙)字符串關閉,並且只插入字符串的第一部分。
例如,如果他寫道:「傑夫的房子」,唯一的事情,我得到的是「傑夫\」
怎麼辦?
嘿所以我認爲我的問題相當簡單,但我似乎無法找到解決問題的正確方法。打破用戶輸入的單引號和雙引號
我有一個表格,用戶應該填充它,然後插入到數據庫,它可以稍後檢索,它工作正常,直到測試時,我用引號......當使用引號(單或雙)字符串關閉,並且只插入字符串的第一部分。
例如,如果他寫道:「傑夫的房子」,唯一的事情,我得到的是「傑夫\」
怎麼辦?
您遇到的問題是用戶可能使用MySQL injection影響您的數據庫。
對PDO Prepared statements讀以避免用戶能夠使用單/雙引號,他們的優勢打破了串並命令直接發送到您的SQL數據庫,影響您的數據。
它通過將字符串從SQL語句中分離出來以使其不是數據庫指令的一部分。 (使用這個系統也意味着你的數據庫將能夠存儲整個字符串,而不管引號是什麼 - 但是它們在每一個存儲之前都會有一個斜線(\)。這些可以在顯示時刪除數據使用stripslashes
命令。)
使用mysql_escape_string()函數在INSERT查詢中使用它之前過濾字符串。
更多的幫助看到此鏈接http://php.net/manual/en/function.mysql-escape-string.php
這意味着你應該尋找在移動儘快使用預處理語句和綁定變量。 – andrewsi
[大逃避現實(或:你需要知道如何處理文本中的文本)](http://kunststube.net/escapism/) – deceze
閱讀關於sql注入和應用程序安全的一般問題 – user466764