用户将在textarea中输入文本。然后将其直接插入mySQL数据库。我在它上面使用trim,htmlentities,mysql_real_escape_string,并启用了魔术引号。在将数据输出回textarea时,我应该如何清理它?
感谢您的帮助。我从来都不太确定这样做的正确方法......
答案 0 :(得分:14)
保存时不应使用htmlentities
。显示时应使用htmlentities
。经验法则是在您需要之前不对数据进行编码/清理。如果您在保存时对其htmlentities
进行了保存,那么当用户想要编辑输入时,您必须对文本执行html_entity_decode
。所以你要消毒你需要的东西,仅此而已。保存时,您需要清理SQL注入,因此mysql_real_escape_string
它。显示时,您需要清理XSS,因此htmlentities
。
另外,我不确定你是否看过Darryl Hein的评论,但你真的不想启用magic_quotes。 They are a bad, bad, thing并且自PHP 5.3起已被弃用,并且将在PHP 6中完全消失。
答案 1 :(得分:2)
除了Paolo关于何时使用htmlentities()
的答案之外,除非您使用的是旧版本的PHP,否则清理插入mysql数据库的正确方法是使用Prepared Statements mysqli extension的一部分。这取代了使用mysql_real_escape_string()
的任何需要。
除此之外,我认为你已经完成了任务。