将html存储在数据库中以便用户可以编辑它是一个坏主意吗?

时间:2013-02-15 16:23:37

标签: php mysql

我只是希望了解我计划如何应对这种情况。

情况:我正在开发一个学校的网站,其中严格的教育委员会政策不允许任何人让我访问该网站的FTP。但是,学校将在一个“网页”课程中有一组六名学生来管理需要经常更新的10-12页。

页面看起来完全相同:标题,导航,侧面导航(针对特定部分(体育,学术等))和主要内容

主要内容由div“content”提供,所以我想要做的只是从用另一个文件编辑的Mysql数据库加载所有#content的内容(我非常承诺使用预准备语句) )。

您对此有何看法,或者可能是更好的方法?谢谢!

2 个答案:

答案 0 :(得分:2)

当您在数据库中加密标记时,为了得到您需要的标记:

  1. 解析配置文件(如果有)并建立连接
  2. 查询并获取数据
  3. 附加结果
  4. 当您将标记保存在文件中时,您需要做的就是通过require()语言构造包含该标记

    修改

    非常具体 - 请注意,将动态HTML内容存储在表格中并不是一个坏主意。这是常规练习。但是,如果您还在每个页面的表格中存储标题,导航等静态内容,则只会导致数据重复

    我个人会存储我从未在文件中更改过的部分。倾向于“动态”的部分我将存储在一个表中。我将使用jquery-ajax通过TinyMCE添加/编辑它们。

    我如何做到这一点的一个例子:

    档案:page_view.php

    <?php
    
    class Page_View // <- This isn't MVC
    {
        private $data = array();
    
        public function render()
        {
            include('page_template.phtml');
            exit();
        }
    
        private function getTitle()
        {
           return $this->data['title'];
        }
    
        private function getBody()
        {
            return $this->data['body'];
        }
    
        private function getStaticBlock($file)
        {
            include($file);
        }
    
        public function setBody($body)
        {
           $this->data['body'] = $body;
        }
    
        public function setTitle($title)
        {
           $this->data['title'] = $title;
        }
    }
    

    文件:page_template.phtml ?&GT;

    <!DOCTYPE html>
    <html>
    <head>
    <title><?php echo $this->getTitle(); ?></title>
    
    <?php $this->getStaticBlock('/templates/blocks/header.phtml'); ?> 
    
    <body>
     <div id="navigation">
      <?php $this->getStaticBlock('/templates/blocks/navigation.phtml'); ?>
     </div>
    
       <div id="content"><?php echo $this->getBody(); ?></div>
    
    </body>
    </head>
    </html>
    

    使用示例:

    <?php
    
    
    // $data is what you got from a table
    
    
    $page = new Page_View();
    $page->setTitle($data['title']);
    $page->setBody($data['body']);
    
    $page->render();
    

答案 1 :(得分:1)

是的,在数据​​库中存储任意HTML是一个噩梦来维护和保护。在设计新解决方案之前,我会更仔细地研究您要完成的任务。

我强烈推荐内容管理系统。他们有能力处理这类工作,从头开始重建工作毫无意义。

如果所选学生经常更新网站,请考虑将网站的该部分分开。

例如,如果主网站是静态的,但经常更新的部分是博客,请设置静态网站以及子域或带有wordpress博客的子目录。

如果学生要编辑页面的实际内容,像Drupal这样的CMS对这项任务来说更有效。