我有一些存储在数据库中的页面。出于安全考虑,所有页面在保存到数据库之前都会进行转义,但是当我打印页面时,HTML标记仍然会被转义。喜欢这个
<a href=\"mypage.se\" alt=\"\">Link</a>
显然,这不是很好,所以我如何浏览页面? 我已尝试使用html_entity_decode而没有任何成功。
答案 0 :(得分:10)
虽然数据在将数据插入数据库之前应该进行转义,但在取出数据时仍不应对其进行转义。问题的根本原因是它在收集之间被两次转义,并在数据库出来后进行检查。
你应该追踪它为什么被转义两次并修复它。
这可能会使现有数据失效(这取决于数据是否在途中被转义两次,或者是否在使用magic_quotes_runtime从数据库中转出时被转义)。如果是这样,您需要清理它。这种转义形式与HTML无关,可以通过stripslashes
反转。
清理将类似于:
stripslashes
,将数据传递给准备好的语句答案 1 :(得分:4)
使用stripslashes()
:http://uk3.php.net/manual/en/function.stripslashes.php
答案 2 :(得分:0)
使用stripslashes($str)
检索内容并删除在插入内容期间添加到数据库中的斜杠。
感谢
答案 3 :(得分:-3)
mysql数据库输入字符串应该总是使用mysql_real_escape_string()进行转义,当它们出来时,它们应该使用stripslashes()进行非转义。 对于像id这样的数字,应该使用int()转换为整数然后检查范围:例如,默认情况下,像id的AUTO_INCREMENT列以1开头。所以对从$ _GET []或$ _POST获得的任何内容进行验证检查[],检查你的int()'ed编号是&gt; = 1。 通过int()过滤所有整数。 通过doubleval()过滤所有实数,除非你使用货币值并且你有自己的十进制数字类 - 浮点数可以赚钱。