1、做一個後台,用ajax來傳資料到php介面,然後對資料庫進行操作。假如新增一條資料為的時候,應該怎麼屏蔽呢?
2、試過在前台擷取資料的時候用將每個字串進行轉義,試過在後台用mysql_real_escape_string()。可是資料庫裡面存的還是角括弧格式,並且還是會有彈窗。
3、用的這個函數進行的轉義,然後網頁上讀取資料庫的時候,alert語句還是照常執行了,求大神指點一二~
function html_encode(str){ var s = ""; if (str.length == 0) return ""; s = str.replace(/&/g, ">"); s = s.replace(//g, ">"); s = s.replace(/ /g, " "); s = s.replace(/\'/g, "'"); s = s.replace(/\"/g, """); s = s.replace(/\n/g, "
"); return s; }
回複內容:
1、做一個後台,用ajax來傳資料到php介面,然後對資料庫進行操作。假如新增一條資料為的時候,應該怎麼屏蔽呢?
2、試過在前台擷取資料的時候用將每個字串進行轉義,試過在後台用mysql_real_escape_string()。可是資料庫裡面存的還是角括弧格式,並且還是會有彈窗。
3、用的這個函數進行的轉義,然後網頁上讀取資料庫的時候,alert語句還是照常執行了,求大神指點一二~
function html_encode(str){ var s = ""; if (str.length == 0) return ""; s = str.replace(/&/g, ">"); s = s.replace(//g, ">"); s = s.replace(/ /g, " "); s = s.replace(/\'/g, "'"); s = s.replace(/\"/g, """); s = s.replace(/\n/g, "
"); return s; }
a) php有個專門的函數用來將特殊字元轉換為實體字元的,htmlspecialchars()。
b) 其實比較省事的辦法就是在輸出的時候做轉義,比如smarty有 escape 之類的方法
c) 使用所見即所得 (WYSIWYG)編輯器,這種編輯器內建了script標記過濾
d) 如果只是不讓用script標籤,那麼存入資料庫之前preg_replace('/<(script\b[^>]*)>/i', '%lt;$1%gt;', $content)
也行
e) 如果前台沒有該問題的話,最省事的辦法是對背景操作人員加強教育,讓他們別亂搞。
你這個JS函數沒有什麼問題,看看是不是往資料庫裡存的時候在哪裡又給轉回來了
htmlspecialchars()