我正在开发一个涉及修改现有代码的项目,并且正在进行的行为对我来说完全没有意义。我希望有人看到类似的东西,因此可以提供一些关于问题源自何处的见解。
我能给出的最好的简短例子如下:
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".
显然,每次保存问题都会继续恶化。实际存储在DB(MySQL)中的数据是上面显示的文本,前端没有用于转换字符/实体的过滤器。显然,如果它们被正确存储,那么打一个htmlspecialchars_decode()的调用就很容易了,但这还不是一个选择......
我是否有一些前端检查可以查看符号被损坏的位置?我正在查看处理数据的控制器,并且它正在使用rest事件来执行此操作,但是我在哪里看不到任何甚至会尝试转换HTML实体的内容,更不用说会错误地转换它们的内容。
正如我在介绍中所说,我希望有人可能已经看过这个,并且可以帮助确定它可能发生的位置。这是使用PHP(Protean,MVC框架),Propel,patforms / smarty在后端构建,MySQL(通过PDO)在后端,jQuery用于大多数JS相关的东西。
答案 0 :(得分:0)
您的数据过多htmlentities()
次。这是一个常见的,noobish错误,通常涉及在发送到数据库之前对数据进行urlencoding,并在检索时再次对其进行编码。一旦(在输出上)就足够了。你永远不应该编码它。
答案 1 :(得分:0)
我不想在这里回答我自己的问题,但它实际上是埋在框架中的一个set方法的双重产品,导致了双重编码。我稍微更改了数据流,现在所有内容都正确存储,我现在可以在输出周围抛出一个htmlspecialchars_decode(),生活很美好。
感谢大家的建议!
- N