mysql - 富文字編輯器與php後台開發是怎麼結合使用的呢?

來源:互聯網
上載者:User
我所知道的富文字編輯器就是像DZ論壇那樣,所見所得那樣的。

1:但是我一直有個疑問,不是說用戶端提交的資料要過濾嗎,不然不就是XXS嗎,DZ是UBB的方式處理的是嗎?

2:那些富文字編輯器,最後提交到伺服器後,那些包含html代碼的,能直接存到資料庫裡面嗎,肯定不能允許使用者這樣吧?

3:還有比如SF的這個Markdown編輯器原理是什麼呢,它後台資料庫有沒有儲存我們輸入的html,js代碼呢?

4:還有像DZ論壇這樣的使用者發帖,投票什麼的,這個編輯器內部是怎麼樣的,搞不懂,找處理的源碼又找不到……

我之前一直使用text文字框的,後台就直接過濾所有標籤,就這麼簡單,但是這樣就只能有普通的文本了,沒有DZ那樣使用者發帖那樣強大,現在想用一個富文字編輯器,但是不知道php後台該怎與富文字編輯器對接,比如百度的那個,或者SF的這個編輯器。

然後那個富文字編輯器插入圖片,那個是上傳圖片,然後返回圖片地址,插入到內容中嗎,那DZ的那個上傳附件呢,文章中的圖片還會惰性載入呢,這個是怎麼實現的呢,如果是直接img標籤插入到內容了實現不了吧,或者是用一個什麼圖片預留位置什麼的,然後js操作附件資料……

搞不懂,希望高手給我解釋一下,我知道原理再去看代碼應該會簡單許多,謝謝了!

回複內容:

我所知道的富文字編輯器就是像DZ論壇那樣,所見所得那樣的。

1:但是我一直有個疑問,不是說用戶端提交的資料要過濾嗎,不然不就是XXS嗎,DZ是UBB的方式處理的是嗎?

2:那些富文字編輯器,最後提交到伺服器後,那些包含html代碼的,能直接存到資料庫裡面嗎,肯定不能允許使用者這樣吧?

3:還有比如SF的這個Markdown編輯器原理是什麼呢,它後台資料庫有沒有儲存我們輸入的html,js代碼呢?

4:還有像DZ論壇這樣的使用者發帖,投票什麼的,這個編輯器內部是怎麼樣的,搞不懂,找處理的源碼又找不到……

我之前一直使用text文字框的,後台就直接過濾所有標籤,就這麼簡單,但是這樣就只能有普通的文本了,沒有DZ那樣使用者發帖那樣強大,現在想用一個富文字編輯器,但是不知道php後台該怎與富文字編輯器對接,比如百度的那個,或者SF的這個編輯器。

然後那個富文字編輯器插入圖片,那個是上傳圖片,然後返回圖片地址,插入到內容中嗎,那DZ的那個上傳附件呢,文章中的圖片還會惰性載入呢,這個是怎麼實現的呢,如果是直接img標籤插入到內容了實現不了吧,或者是用一個什麼圖片預留位置什麼的,然後js操作附件資料……

搞不懂,希望高手給我解釋一下,我知道原理再去看代碼應該會簡單許多,謝謝了!

html代碼直接存資料庫,使用者寫的什麼就存什麼。
各種編輯器都是產生html代碼,然後點擊提交html的代碼。
這有什麼好疑問的嗎?
html有個pre標籤,你造嗎?

要防止JS注入。
很簡單的啊,PHP輸出到前端之前,用str_replace函數,把<替換成& lt;(去掉空格),把>替換成& gt;(去掉空格)等等。
請百度“HTML特殊字元編碼”。
保證標籤不會起作用,JS代碼不會執行就完了。

防禦XSS攻擊,最簡單粗暴的做法就是用htmlspecialchars把特殊字元(&,",',<,>)替換為HTML實體(&"'<>)後輸出.

$html = str_replace(array("\r\n", "\r", "\n"), '
', $html);echo $htm;

上面這種實現非常簡單,而且安全,顯示也非常清爽.編輯器就一個普通的文字框textarea就好了.

防禦XSS攻擊,最複雜的做法就是自己寫正則過濾,不過還好有HTMLPurifier庫,除了能過濾XSS代碼,還能把不完整的標籤補全或者去掉.

purify($html);

可以通過BBCode或者Markdown標記定義一些HTML功能,比如BBCode:

[b]粗體文字[/b][color=#FF0000]紅色文字[/color][img=PunBB bbcode test]http://127.0.0.1:8080/punbb/img/test.png[/img] [url=http://127.0.0.1:8080/punbb/]PunBB forum[/url]

使用者在文字框裡輸入BBCode標籤,頁面輸出時把BBCode正則替換成HTML,經過HTMLPurifier過濾後安全輸出.

SF的編輯器是markdown文法編輯器,原始碼在此:

一個結構清晰的,易於維護的,現代的PHP Markdown解析器

我還看到網上有那種編輯器,糾結

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.