如何防止数据库斜线添加到报价(how to prevent database to add slas

2019-06-25 14:34发布

我知道这听起来很常见的,那么微不足道,但是,我在这里有一个挑战。 我有一个网站与Zend /教义和我使用的CKEditor的后台管理。 上传网站后,我已经意识到,编辑测试网站的外观和感觉过程中搞砸了。

与萤火虫的帮助下,我已经看到了有斜杠遍布HTML。 在线版之后,在外观和感觉又回到了正常。 有这么多的文件,我不认为从MySQL输出数据之前做其他的解码。

做什么选择,我必须解决这个问题。 该网站是起来了,我觉得有点unconfortable这一点。 谁能给一个提示? 谢谢

Answer 1:

这可能是magic_quotes_gpc 。 您可以验证它关闭?

这里有一个方法来关闭它: http://php.net/manual/en/security.magicquotes.disabling.php

为GPC(GET / POST / Cookie的)操作magic_quotes的状态。 当magic_quotes的是,所有'(单引号),“(双引号),\(反斜线)和NUL的用一个反斜杠自动转义。

此外,您使用的预处理语句? PHP PDO /库MySQLi将自动为您逃脱。 取决于你使用的查询类型。



Answer 2:

好像你的数据被插入到你的数据库之前得到双重逃脱。 您是否使用mysql_real_escape_stringaddslashes将数据插入到数据库之前? 如果是这样,也许你想你插入你的数据像这样前用stripslashes:

mysql_real_escape_string(stripslashes($data));

否则理论上你就可以打电话的stripslashes你把数据从数据库中后:

stripslashes($data);

第二种方法是不太理想的,虽然。 这将是最好有适当的存储在数据库中的数据。



Answer 3:

我感谢每一个帮助。 真正接受的解决方案应该是从@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



Answer 4:

如果这是一个神奇的报价问题,我记得你只能够访问你的application.ini,您可以添加以下,并给它一试

phpSettings.magic_quotes_gpc = 0
phpSettings.magic_quotes_runtime = 0

这仍然需要用户/用户组被允许更改默认PHP设置;)



Answer 5:

  <?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);}
 ?>

这种添加到具有插入/更新查询您的PHP页面:)



文章来源: how to prevent database to add slash to quotes