在写入数据库之前清理数据的更好方法

发布于 2024-10-13 09:13:01 字数 177 浏览 7 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

傾旎 2024-10-20 09:13:01

魔法引用开启了吗?您可以通过创建一个 PHP 页面来快速检查,如下所示:

<?php var_dump(get_magic_quotes_gpc()) ?>

如果页面显示类似 int(1) 的内容,那么罪魁祸首不是 mysql_real_escape_string,而是 PHP 本身。这是一项安全功能,但不是很安全,而且大多很烦人。在清理每个变量之前,首先需要使用 stripslashes 撤消削减。

Are magicquotes turned on? You can check quickly by creating a PHP page like so:

<?php var_dump(get_magic_quotes_gpc()) ?>

If the page says something like int(1), then the culprit isn't mysql_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.

留一抹残留的笑 2024-10-20 09:13:01

您还可以使用以下方法关闭魔术引号:

if ( version_compare(PHP_VERSION, '5.3.0', '<') ) {
    set_magic_quotes_runtime(0);
}

当您的服务器运行任何低于 5.3.0 的 php 版本时,它将关闭魔术引号。

You can also turn off magic quotes by using this:

if ( version_compare(PHP_VERSION, '5.3.0', '<') ) {
    set_magic_quotes_runtime(0);
}

It will turn magic quotes off when your server is running any version of php less than 5.3.0.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文