我正在研究一個涉及修改一些現有代碼的項目,並且存在一種對我來說毫無意義的行爲。我希望有人看到類似的東西,因此可以提供一些有關問題源於何處的見解。HTML實體轉換非常奇怪
最好的簡短的例子,我可以給如下:
A user enters "This & that" into a textarea on an input form and when saved
once it becomes: "This & that", when it is saved again it becomes:
"This & that", save it again and you get:
"This & that".
顯然問題繼續與各保存變得更糟。實際存儲在數據庫(MySQL)中的數據是上面顯示的文本,前端沒有用於轉換字符/實體的過濾器。很明顯,如果他們被正確存儲,它會很容易打電話給htmlspecialchars_decode()但這不是一個選項呢...
是否有一些前端檢查,我可以做,看看哪裏符號正在被破壞?我正在查看處理數據的控制器,它使用休息事件來做這件事,但是我沒有看到任何可以嘗試轉換HTML實體的東西,更不用說將不正確地轉換它們的東西了。
正如我在介紹中所說的那樣,我希望有人可能以前見過這個,並且可以幫助查明它可能發生的位置。這是使用PHP(Protean,MVC框架),Propel,patforms/smarty在後臺,MySQL(通過PDO)在後端,jQuery爲大多數JS相關的東西。
您究竟如何存儲數據並將其重新填充到文本輸入中?這實際上與Smarty有什麼關係,或者這個標籤對這個問題毫無意義? – 2012-01-16 22:19:26
使用休息事件(存儲發佈數據)存儲數據,然後smarty僅輸出數據庫中的內容。由於垃圾編碼在數據庫中,所以在數據被保存時發生的問題絕對是一個問題。 – 2012-01-16 22:23:32
奇怪的是,如果我輸出表單處理程序正在處理的內容「This&that」。變成「這&那。」這很棒,但數據庫顯示「This & amp; that。」 - >這聽起來像是發生在數據庫級別嗎? – 2012-01-16 22:26:14