如何防止数据库向引号添加斜杠

时间:2012-06-20 01:12:13

标签: php mysql zend-framework hosting addslashes

我知道这听起来很普通而且非常微不足道,但我在这里遇到了挑战。我有一个Zend / Doctrine的网站,我使用ckeditor进行后端管理。上传网站后,我意识到在编辑测试期间,网站的外观和感觉都搞砸了。

在firebug的帮助下,我看到html上都有斜线。在内联版后,外观恢复正常。有这么多文件,我无法想到在从mysql输出数据之前做其他解码。

我有什么选择来解决这个问题。该网站已经上线,我觉得有点不自然。任何人都可以提示吗?感谢

5 个答案:

答案 0 :(得分:9)

可能是magic_quotes_gpc。你能证实它已经关闭了吗?

以下是关闭它的方法: http://php.net/manual/en/security.magicquotes.disabling.php

  

为GPC(Get / Post / Cookie)操作设置magic_quotes状态。当magic_quotes打开时,所有'(单引号),(双引号),\(反斜杠)和NUL都会自动转义为反斜杠。

另外,您使用预备语句吗? PHP PDO / MySQLI将自动为您转义。取决于您正在使用的查询类型。

答案 1 :(得分:5)

似乎您的数据在插入数据库之前会被双重转义。在将数据插入数据库之前,您使用的是mysql_real_escape_string还是addslashes?如果是这样,也许你想在插入数据之前使用stripslashes:

mysql_real_escape_string(stripslashes($data));

否则,从数据库中取出数据后理论上可以调用stripslashes:

stripslashes($data);

然而,第二种方法不太可取。将数据正确存储在数据库中会更好。

答案 2 :(得分:4)

我感谢每一个人的帮助。真正接受的解决方案应该是来自@Stanislav Palatnik的解决方案。只是因为它与我的.htaccess不起作用。托管服务器很好,可以将php.ini放在我的public_html中,允许我更改它。所以+1给@Stanislav Palatnik,因为他指出了这个问题。我还发现了一些有趣的信息,如果有人发现自己处于我的状况,我认为我会分享这些信息。

info from: http://support.godaddy.com/groups/web-hosting/forum/topic/how-to-turn-off-magic_quotes_gpc/
Yes – the solution below worked for me:

(1) First of all do not try to turn off the magic quotes in your .htaccess file, it won’t work on godaddy.
(2) Second, if you’re running PHP5 on your account, rename your php.ini file to php5.ini, make sure it’s in your root folder.
(3) Third, make sure all the lines in your php5.ini file end in a semi colon ;
(4) Fourth, add this line to your php5.ini file:
magic_quotes_gpc = Off;

在同一页上有人说它不应该只是magic_quotes_gpc而是其他的如下所示:

magic_quotes_gpc = Off;
magic_quotes_runtime = Off;
magic_quotes_sybase = Off;

希望这有助于某人。特别感谢@Stanislav Palatnik

答案 3 :(得分:2)

如果这是一个神奇的引号问题,并且我记得你只能访问你的application.ini,你可以添加以下内容并尝试一下

phpSettings.magic_quotes_gpc = 0
phpSettings.magic_quotes_runtime = 0

这仍然需要允许您的用户/用户组更改默认的php设置;)

答案 4 :(得分:0)

label.setIcon(image);  

将此添加到具有插入/更新查询的php页面:)