[請益] textarea中的html標籤(emoji)
標題想很久不知道怎麼下……
想請教各位前輩們,
小弟目前在做一個發表留言的功能,
目前希望能做到的就是純文字 + 表情符號(emoji),
未來可能會有放圖片連結然後產生預覽,不過這不是現在需要做的範圍。
環境是php + mysql
目前做到的是,可以辨識出直接輸入emoji,會以unicode儲存,
然後取出來的時候會用文字的方式顯示。
問題點在於,我有找到一個js的插件,
可以讓我在textarea裡面輸入例如「:smile:」,然後他會自動轉成
這樣子:「<span>...略...</span>」的HTML標籤,
透過這個標籤可以用CSS將APPLE emoji的"圖片"顯示出來。
然而,為了安全起見,我在儲存textarea文字時,
已經將「<」、「>」、「/」...等字眼轉存成HTML代碼了,例如:「<」
所以上面那個js插件會變成我在文字框輸入:「:smile:」
結果顯示在網頁時,卻如實顯示「<span>...</span>」
不知道有沒有辦法只讓這個插件的HTML標籤可以順利轉換,
使用者輸入的標籤則一律如實顯示?
附帶一問,
因為小弟第一次寫php網頁,
不知道有沒有什麼比較安全的防止使用者在文字輸入處做攻擊?
目前作法是使用 $text = sub_replace("<", "<", $text);
這樣子,將幾個特殊字元替換掉,
包括:<、>、\、&、\n、空白及雙引號(")
不知道這樣夠不夠安全……
簡單整理一下問題:
1. 有沒有什麼辦法可以讓使用者輸入特定的文字安全的存進資料庫,
並在取出時將該特定文字以HTML標籤方式呈現,其他非特定文字
則如實呈現?
2. 不知道是否有比單純在存進資料庫前把特殊字元replace掉更好的做法?
補充:
目前已改成在寫入資料庫前這樣做:$text = htmlspecialchars($text);
然後會以ajax的方式,將文章用json格式丟回來,稍微測試過,
感覺上應該ok?(原本replace方式後來發現完全不行……)
第一次發文有點囉嗦,先感謝各位前輩的指導! <(_ _)>
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.191.4
※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1468937000.A.AB5.html
※ 編輯: chris07 (42.72.191.4), 07/19/2016 22:07:30
※ 編輯: chris07 (42.72.191.4), 07/20/2016 00:33:08
推
07/20 04:35, , 1F
07/20 04:35, 1F
→
07/20 04:36, , 2F
07/20 04:36, 2F
推
07/20 13:16, , 3F
07/20 13:16, 3F
→
07/20 13:16, , 4F
07/20 13:16, 4F
→
07/20 13:17, , 5F
07/20 13:17, 5F
→
07/20 13:17, , 6F
07/20 13:17, 6F
→
07/20 13:28, , 7F
07/20 13:28, 7F
→
07/20 13:30, , 8F
07/20 13:30, 8F
→
07/20 13:30, , 9F
07/20 13:30, 9F
推
07/20 15:19, , 10F
07/20 15:19, 10F
→
07/20 15:19, , 11F
07/20 15:19, 11F
推
07/20 15:22, , 12F
07/20 15:22, 12F
→
07/20 15:22, , 13F
07/20 15:22, 13F
推
07/20 17:38, , 14F
07/20 17:38, 14F
推
07/20 18:18, , 15F
07/20 18:18, 15F
→
07/20 18:30, , 16F
07/20 18:30, 16F
→
07/20 18:30, , 17F
07/20 18:30, 17F
→
07/20 18:30, , 18F
07/20 18:30, 18F
→
07/20 18:34, , 19F
07/20 18:34, 19F
→
07/20 18:34, , 20F
07/20 18:34, 20F
推
08/04 10:45, , 21F
08/04 10:45, 21F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
PHP 近期熱門文章
PTT數位生活區 即時熱門文章