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

Php 如何防止数据库向引号中添加斜杠,php,mysql,zend-framework,hosting,addslashes,Php,Mysql,Zend Framework,Hosting,Addslashes,我知道这听起来很普通,很琐碎,但我在这里遇到了一个挑战。我有一个带有Zend/Doctrine的网站,我使用ckeditor进行后端管理。上传网站后,我意识到在编辑测试过程中,网站的外观和感觉是混乱的 在firebug的帮助下,我看到html上到处都是斜杠。内联版之后,外观和感觉恢复正常。有这么多的文件,我想不出在从mysql输出数据之前还要做其他解码 我有什么选择来解决这个问题。这个网站已经上线了,我觉得有点不对劲。有人能给个提示吗?谢谢可能是magic\u quotes\u gpc。你能确认

我知道这听起来很普通,很琐碎,但我在这里遇到了一个挑战。我有一个带有Zend/Doctrine的网站,我使用ckeditor进行后端管理。上传网站后,我意识到在编辑测试过程中,网站的外观和感觉是混乱的

在firebug的帮助下,我看到html上到处都是斜杠。内联版之后,外观和感觉恢复正常。有这么多的文件,我想不出在从mysql输出数据之前还要做其他解码


我有什么选择来解决这个问题。这个网站已经上线了,我觉得有点不对劲。有人能给个提示吗?谢谢

可能是
magic\u quotes\u gpc
。你能确认它已关闭吗

以下是一种关闭它的方法:

设置GPC(Get/Post/Cookie)操作的状态。启用magic_quotes时,所有“(单引号)、“(双引号)、\(反斜杠)和NUL将自动用反斜杠转义


另外,您是否使用准备好的语句?PHP PDO/MySQLI将自动为您转义。这取决于您使用的查询类型。

似乎您的数据在插入数据库之前得到了双重转义。在将数据插入数据库之前,您是使用
mysql\u real\u escape\u string
还是
addslashes
数据库?如果是这样,在插入数据之前,可能需要使用斜杠,如下所示:

mysql_real_escape_string(stripslashes($data));
或者,理论上,您可以在从数据库中取出数据后调用stripslashes:

stripslashes($data);

不过,第二种方法不太可取。最好将数据正确地存储在数据库中。

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

phpSettings.magic_quotes_gpc = 0
phpSettings.magic_quotes_runtime = 0

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

我感谢所有人的帮助。实际上,接受的解决方案应该是来自@Stanislav Palanik的解决方案。只是它不适用于我的.htaccess。托管服务器很好,在我的公共html中放置了一个php.ini,允许我更改它。所以+1给@Stanislav Palanik,因为他指出了这个问题。我还发现了一些有趣的信息,我想我会分享,以防有人发现自己处于我的处境

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 Palanik


  <?php
     if (get_magic_quotes_gpc()) {
$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
while (list($key, $val) = each($process)) {
    foreach ($val as $k => $v) {
        unset($process[$key][$k]);
        if (is_array($v)) {
            $process[$key][stripslashes($k)] = $v;
            $process[] = &$process[$key][stripslashes($k)];
        } else {
            $process[$key][stripslashes($k)] = stripslashes($v);
        }
    }
}
unset($process);}
 ?>

将此添加到包含insert/update query的php页面:)

秘密忍者魔法格言战斗是php<5.4风格。您好。非常感谢您及时回复。不幸的是,将其添加到.htaccess内部服务器中。这里有zend专家吗?可以将其添加到应用程序中。ini?不,真的,这是共享主机服务器上的正确答案(像戈达迪一样)。工作起来很有魅力!