以下是用户可以在我的网站上使用的工作流程示例:
创建一个包含内容的任务:我
htmlentities
用来对内容进行编码并将其存储在我的数据库中(是的,我决定存储编码的内容);用户稍后返回并单击以查看任务。问题是,内容的预览是在禁用的文本区域中完成的。
我尝试
htmlentities_decode
在 textarea 中打印内容时使用(如果用户输入了不好的东西,XSS 问题);我只是打印编码的文本,一切都很好。
用户点击EDIT,这将使
textarea
可编辑用户点击SAVE。
这是我的主要问题,因为我在打印之前没有解码文本,它仍然是编码的,当用户保存它时,它会被重新编码。所以,前面的内容是双重编码的。
因此,如果用户第一次输入如下内容:
blablabla </textarea/> yeah!
然后,它被编码,结果是:
blablabla </textarea/> yeah!
然后,当我显示它时,它会显示为用户之前输入的内容,但如果他保存它,结果是:
blablabla &lt;/textarea/&gt; yeah!
因此,如果他再次显示它,它不会很好地显示(并且随着用户不断编辑他的任务,它也会在我的数据库中占用越来越多的空间)。
好吧,我相信这是很多人都遇到过的问题,但我找不到任何好的解决方案。
顺便说一句,我正在使用htmlentities
with ENT_QUOTES
。