Codeigniter在数据库中存储html无法正常工作

时间:2013-05-12 10:09:11

标签: php html mysql codeigniter

我正在使用codeigniter处理CMS。用户应该知道HTML并自己构建页面。现在,我在数据库(mysql数据库)中存储一些标签时遇到了问题。

用户可以将图像上传到服务器,然后在代码中使用图像的路径。 代码在a中编辑。当我尝试将某个页面的代码更新为:

<img src="assets/fileserver/versje2.jpg"  alt="" />
一切正常。 但是当我对它应用内联样式时

<img style="width: 200px;" src="assets/fileserver/versje2.jpg"  alt="" />

它不起作用。它只是忽略了样式,以下内容存储在数据库中:

  <img src="assets/fileserver/versje2.jpg"  alt="" />

它只是删除了样式。这怎么可能?

我试过了:
-htmlspecialchars
-htmlentities

$config['global_xss_filtering'] = FALSE;
$config['global_xss_filtering'] = TRUE;

有关问题的建议吗?

3 个答案:

答案 0 :(得分:3)

也许你需要用htmlspecialchars($saveToDB)函数保存它,
在输入中编辑,例如:<input name="someHtmlCode" value="<?=$saveToDB;?>" />
而不是在网站上的html文件中使用htmlspecialchars_decode函数回显:
$html = htmlspecialchars_decode($dataFromDB)

答案 1 :(得分:2)

好像我已经发现了! 首先,我有

 $config['global_xss_filtering'] = TRUE;

然后,我将其设置为

$config['global_xss_filtering'] = FALSE;

但我仍然在表格验证上有XSS | clean!

$this->form_validation->set_rules('inhoud', 'inhoud', 'xss|clean');

这就是为什么它不起作用,现在,将样式写入数据库就好了!

答案 2 :(得分:0)

这对我有用。 (代码点火器 3)

保持真实:

<块引用>

$config['global_xss_filtering'] = TRUE;

您可以单独使用 FALSE xss 过滤器。

<块引用>

$this->input->post('input_filed_name', TRUE); // 使用 XSS 过滤器

$this->input->post('input_filed_name', FALSE); // 没有 XSS 过滤器

例如:

$this->input->post('description', FALSE); // without XSS filter