我正在将一些HTML插入MySQL数据库表中。但是当我把它拿回来时,许多角色都会受到损害。我注意到的两个具体案例是:
class='content-section developer-support'
的代码已转换为developer-support\="" class="\'content-section"
我明白这是一个逃避问题。在我将其推入数据库之前,我在字段上使用了mysql_real_escape_string。
避免此问题的正确方法是什么?
源:
$query = sprintf("insert into events (title, content) values('%s', '%s')",
mysql_real_escape_string($this->title, $conn),
mysql_real_escape_string($this->content, $conn)
);
我正在谈论的文字已插入字段content
。
我确实启用了magic_quotes。我会解决它。
答案 0 :(得分:0)
我认为您在PHP配置中启用了magic_quotes,而且似乎正在尝试清理HTML。你需要展示你的来源。
答案 1 :(得分:0)
值得一提的是,您应该考虑使用MySQLi或PDO的预处理语句。实质上,您所显示的内容与执行预准备语句非常相似,并且无需在用户提供的每一位数据上使用mysql_real_escape_string
。它还具有更安全的优势,可以提供更好的性能。
同样如上所述magic_quotes很可能是你的问题。