在写入数据库之前清理数据的更好方法
我正在使用 PHP 和 MySQL 来支持一个基本论坛。当用户使用撇号 (') 或在帖子中插入链接时,mysql_real_escape_string 函数会将 \ 添加到文本中。显示帖子时,链接不起作用,并且所有撇号前面都有一个 \。
问题是我在输出文本之前没有做任何事情,还是我在写入 MySQL 之前没有正确清理数据?
I'm using PHP and MySQL to power a basic forum. When users use the apostrophe (') or insert links into their post, the mysql_real_escape_string function is adding \ to the text. When displaying the post, the links don't work, and all the apostrophe's have a \ before it.
Is the problem that I am not doing something before outputting the text or is the issue that I'm not cleaning the data properly before writing to MySQL?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
魔法引用开启了吗?您可以通过创建一个 PHP 页面来快速检查,如下所示:
如果页面显示类似
int(1)
的内容,那么罪魁祸首不是mysql_real_escape_string
,而是 PHP 本身。这是一项安全功能,但不是很安全,而且大多很烦人。在清理每个变量之前,首先需要使用 stripslashes 撤消削减。Are magicquotes turned on? You can check quickly by creating a PHP page like so:
If the page says something like
int(1)
, then the culprit isn'tmysql_real_escape_string
, but PHP itself. It was a security feature, but not very secure, and mostly just annoying. Before you sanitize each variable, you first need to undo the slashing with stripslashes.您还可以使用以下方法关闭魔术引号:
当您的服务器运行任何低于 5.3.0 的 php 版本时,它将关闭魔术引号。
You can also turn off magic quotes by using this:
It will turn magic quotes off when your server is running any version of php less than 5.3.0.