Laravel模板實體轉義帶來的坑

問題

最近在Laravel項目中用到了百度編輯器,插入到數據庫我保存的是原始的html標籤代碼,沒有進行實體轉義。然後在修改的時候,需要讀取到數據庫中的數據,進行回顯,這時候竟然在編輯器裏面顯示html標籤代碼<p>123</p>,這讓我很尷尬,因爲以前在tp框架中也是這樣寫的,但是沒有問題。

搜索之路

在知道問題之後,我就開始找百度了,因爲一開始的時候我並不知道是框架的原因,我以爲是百度編輯器版本的原因,然後收到了許多答案,都是圍繞着htmlentitieshtml_entity_decode這兩個函數搞來搞去。我都有試過,但是都沒有用,然後這個問題就放下了。

正確方法

第二天我起來,感覺這個問題一定要解決,然後就搜索了看了Laravel官網的api,然後扎到blade模板這一節,看到這個。

Blade {{ }} statements are automatically sent through PHP's htmlspecialchars function to prevent XSS attacks.

意思是:使用{{}}會自動使用php中的htmlspecialchars方法來轉義成實體,然後輸出。

顯示未轉義數據

Hello, {!! $name !!}.

然後試了一下,大功告成!

總結

雖然知識大家都懂,但是如果知識換一種方式來考驗我們,我們可能一下子並不能濾清思緒,總的來說還是基礎比較差,還得補補啊。

發佈了122 篇原創文章 · 獲贊 40 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章