CodeIgniter xss_clean大量的html问题[在firefox中]

时间:2014-11-10 12:30:58

标签: php html codeigniter google-chrome firefox

我在控制台上收到以下错误:

<p>Severity: 8192</p>
<p>Message:  preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead</p>
<p>Filename: core/Security.php</p>
<p>Line Number: 512</p>

其中涉及Core / Security line 512中的功能:

public function entity_decode($str, $charset='UTF-8'){
    if (stristr($str, '&') === FALSE)
    {
        return $str;
    }

    $str = html_entity_decode($str, ENT_COMPAT, $charset);
    $str = preg_replace('~&#x(0*[0-9a-f]{2,5})~ei', 'chr(hexdec("\\1"))', $str);
    return preg_replace('~&#([0-9]{2,4})~e', 'chr(\\1)', $str);
}

这是因为我将大量HTML(纯HTML)插入数据库。

public function add($data){
    $this->security->xss_clean($data);
    $this->db->insert('covers', $data);

    return $this->db->insert_id();
}

如果我删除了行$this->security->xss_clean($data);,那就完美了。

奇怪的是,它可以在Chrome上运行,但只要我在Firefox上测试它就会停止在Chrome上运行(版本32.0.1)。在Firefox中测试并收到错误后如果我去Chrome并再次测试我在Chrome中也有同样的问题。

编辑:即使出现此错误,即使启用了行$this->security->xss_clean($data);,信息也会存储在数据库中,但警告会显示在控制台中。

2 个答案:

答案 0 :(得分:0)

在您的代码中使用error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);这将抑制错误

答案 1 :(得分:0)

解决。

我去了Ellislab支持,他们告诉我该功能已不再使用。 https://support.ellislab.com/bugs/detail/20646/the-e-modifier-is-deprecated-use-preg_replace_callback-instead

我复制新的core/Security.php并粘贴到我的上面,现在它正在运行。