长沙网站开发_TP3.2读取数据库时显示HTML实体

发布日期:2016-12-02 15:57

最近在练习TP3.2制作个人博客时,在后台中使用ueditor发布文章并保存在数据库中。

如下图,文章内容非常简单一段文字加一个图片,后台中可以对文章进行修改:传入文章ID->读取数据库->在ueditor中显示,这些操作都没有问题。

在前台调用时却发现文章内容未正常显示--显示成了HTML实体的形式。考虑到文章内容在后台中显示正常,区别在于有无有使编程器。所以问题可能是编辑器保存数据时可能与通常形式不一样。

通过查看数据库中文章内容保存的结果得知,编辑器将HTML标签进行了转义后再保存,而输出到HTML页面中时,标签被转义回单独的字符直接显示成了HTML代码。这样处理的优点是可以避免sql注入;缺点是不能直接读取数据。

知道了原因,那么问题解决起来就容易多了。1.高手可以对ueditor数据处理方式进行修改(时间成本高,可能导致sql注入的漏洞);2.可以将文章内容先读取在ueditor中,再把ueditor中的内容显示在页面上(过程复杂,但简单有效);3.读取数据时先处理后,再在模板中进行显示(简单实用)。

这里简单说明下第三种方法:在读取数据后使用html_entity_decode函数把文章内容从 HTML 实体转换为字符。

    public function index() {

        $id = I('get.id', '', 'intval');

    $field = array('id', 'title', 'time', 'content', 'cid', 'click');

        $blog = M('blog')->field($field)->find($id);

        $blog['content'] = html_entity_decode($blog['content']);

        $blog['click'] += 1;

        $where = array('id' => $id);

        M('blog')->where($where)->setInc('click');

        $this->assign('blog', $blog);

        $this->display();

}

通过以上处理后,文章内容就可以在前台正常使用了。

以上信息由长沙网站建设--长沙蒲公英网络收集与整理,禁止用于任何商业行为