制作生成静态页面的新闻系统

利用PHP生成静态HTML页面的好处很多:

   1.静态页面不需要Web服务器解释执行,用户打开网页的速度会快些;

   2.打开静态页面时,Web服务器不需要访问数据库,减轻了对数据库访问的压力;

   3.静态HTML页面对搜索引擎更加友好,使网站在搜索引擎中的排名能够上升。

原理:利用fopen()方法创建文本文件,再用fwrite()方法向文件中写入符合HTML格式的字符串。

        因此,用户在后台添加一条新闻后,PHP程序一方面将这条新闻作为一条记录添加到数据库中;另一方面根据这条新闻创建一个静态的HTML页面。

创建HTML页面的过程:首先制作一个新闻页面的模板,然后将这条新闻的各个字段替换掉模板页中的标志内容。最后将替换后的模板页用fwrite()方法写入到创建的文件中。

 1.数据库的设计

CREATE TABLE  `news` (
id INT PRIMARY KEY AUTO_INCREMENT ,
title VARCHAR( 30 ) ,
content TEXT,
author VARCHAR( 200 ) ,
TIME DATETIME,
bigclass VARCHAR( 200 ) ,
filepath VARCHAR( 100 )
) ENGINE = INNODB DEFAULT CHARSET = utf8

可以看出,与普通的news表相比,生成静态页面的新闻系统主要多了一个filepath字段,用于将生成的HTML文件的文件名和路径名保存到news表中,便于在新闻表页能建立到这些HTML文件的链接。

2.新闻模板页的制作

在数据库中再建一个表moban,用来保存模板页的HTML代码,之所以要将模板页的代码保存到数据库中,是为了方便能够通过新闻系统后台对模板页的代码进行修改,还能在MOBAN表中保存多个模板页,让用户从后台发布新闻时可以选择任意一套模板。

CREATE TABLE  `moban` (
id INT PRIMARY KEY AUTO_INCREMENT ,
html TEXT
) ENGINE = INNODB DEFAULT CHARSET = utf8

 

新闻添加页面的程序制作

1.制作新闻添加的前台页面addnews.php

<?php
/*
 * 
 * @Authors peng--jun 
 * @Email   1098325951@qq.com
 * @Date    2015-11-11 13:24:24
 * @Link    http://www.cnblogs.com/xs-yqz/
 * @version $Id$
 ==========================================
 */
 header("Content-type: text/html; charset=UTF-8"); 

?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加页面</title>
</head>
<body>
    <h2 align="center">添加新闻页面</h2>
    <form action="add.php" method="post">
        <table>
            <tr>
                <td width="125">新闻标题:</td>
                <td width="475"><input type="text" name="title"></td>
            </tr>
            <tr>
                <td width="125">发布者:</td>
                <td width="475"><input type="text" name="author"></td>
            </tr>
            <tr>
                <td width="125">所属栏目:</td>
                <td width="475"><input type="text" name="lanmu"></td>
            </tr>
            <tr>
                <td width="125">新闻内容:</td>
                <td width="475"><textarea name="content" id="" cols="30" rows="3"></textarea></td>
            </tr>
            <tr>
                <td width="125"></td>
                <td width="475"><input type="submit" name="submit" value="提交"></td>
            </tr>
        </table>
    </form>
</body>
</html>

2.保存新闻到news表的程序(add.php)

<?php
/*
 * 
 * @Authors peng--jun 
 * @Email   1098325951@qq.com
 * @Date    2015-11-11 13:30:53
 * @Link    http://www.cnblogs.com/xs-yqz/
 * @version $Id$
 ==========================================
 */
 header("Content-type: text/html; charset=UTF-8"); 
 require("include/conn.php");
 $title=$_POST["title"];
 $author = $_POST["author"];
 $lanmu = $_POST["lanmu"];
 $content = $_POST["content"];
 date_default_timezone_set('PRC');
 $time = date("Y-m-d H:i:s");
  //创建存放当天静态HTML文件
 $root = $_SERVER['DOCUMENT_ROOT'];
 $foldername = date("Y-m-d");
 $folderpath = "list/".$foldername;//目录形式2015-11-11
 if(!file_exists($folderpath))         //如果该目录不存在
    mkdir($folderpath);//创建该目录
    //用时间创建HTML文件的文件名
    $filename = date("H-i-s").".html";
    $filepath = $folderpath."/".$filename;

    if (!file_exists($filepath)) {
        //从模板中读取模板代码
        $sql = "select html from moban where id = 1";
        $rs = mysql_query($sql,$conn)or die("执行错误".mysql_error());
        $rows = mysql_fetch_row($rs);

        $moban = $rows[0];  //将模板页代码保存到$moban
        //替换模板页中相应的标识符
        $moban = str_replace("-lanmu-", $lanmu, $moban);
        $moban = str_replace("-title-", $title, $moban);
        $moban = str_replace("-time-", $time, $moban);
        $moban = str_replace("-content-", $content, $moban);
        $moban = str_replace("-author-", $author, $moban);

        $fp = fopen($filepath, "w");
        fwrite($fp, $moban);//将替换好的内容写入发到文件中
        fclose($fp);

        $filepath = $foldername."/".$filename;//保存生成的HTML文件的路径

        $sql = "insert into news(bigclass,title,content,filepath,author,time)values(
            '$lanmu','$title','$content','$filepath','$author','$time')";
        
        if (mysql_query($sql)) {
            echo "插入成功";
        }else{
            echo "<script>alert('添加失败');location.href='addnews.php';</script>";
        }
    }
?>

3.新闻管理后台系统admin.php

<?php
/*
 * 
 * @Authors peng--jun 
 * @Email   1098325951@qq.com
 * @Date    2015-11-11 15:13:39
 * @Link    http://www.cnblogs.com/xs-yqz/
 * @version $Id$
 ==========================================
 */
 header("Content-type: text/html; charset=UTF-8"); 
 require("include/conn.php");
 $sql = "select * from news order by id desc";
 $rs = mysql_query($sql,$conn)or die("数据库操作失败".mysql_errno());

 ?>
 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>新闻后台管理系统</title>
 </head>
 <body>
     <h2 align="center">新闻后台管理系统</h2>
     <p align="right"><a href="addnews.php">添加新闻</a></p>
     <table border="1">
         <thead>
             <tr>
                 <th>ID</th>
                 <th>新闻标题</th>
                 <th>发布者</th>
                 <th>发布时间</th>
                 <th>操作</th>
             </tr>
         </thead>
         <tbody>
             <?php
             while ( $rows = mysql_fetch_assoc($rs)) {
             ?>
                 <tr>
                     <td rowspan="2"><?= $rows['id']?></td>
                     <td><a href="list/<?= $rows['filepath']?>"><?= $rows['title']?></a></td>
                     <td><?= $rows['author']?></td>
                     <td><?= $rows['time']?></td>
                     <td rowspan="2">
                         <a href="editnews.php?id=<?= $rows['id']?>">编辑</a>
                         <a href="del.php?id=<?= $rows['id']?>">删除</a>    
                     </td>
                 </tr>
                 <tr><td colspan="3" align="center">内容:<?= $rows['content']?></td></tr>
             <?php         
             }
             ?>
         </tbody>
     </table>
 </body>
 </html>

该程序每条新闻的标题都是连接到生成的静态HTML文件的URL上($row['filepath']保存了静态文件的URL地址),这样用户才能通过链接打开这些HTML文件。

4.新闻修改页面的制作

(1)获取admin.php页传过来的ID值,根据ID读取原来的记录,显示在该页的表单中供用户修改。

(2)当用户提交修改页面之后,使用用户提交的信息更新news表中对应的记录。

(3)使用用户提交的信息替换模板页中的相应字符,再重新生成同名的HTML文件。

 

<?php
/*
 * 
 * @Authors peng--jun 
 * @Email   1098325951@qq.com
 * @Date    2015-11-11 15:54:50
 * @Link    http://www.cnblogs.com/xs-yqz/
 * @version $Id$
 ==========================================
 */
 header("Content-type: text/html; charset=UTF-8"); 
 require("include/conn.php");
 $id = $_GET["id"];//获取当前文件的id

 if ($_POST["submit"]) {
     $title=$_POST["title"];
     $author = $_POST["author"];
     $lanmu = $_POST["lanmu"];
     $content = $_POST["content"];
     $path = $_POST['path'];
     $time = $_POST["time"];

      //创建存放当天静态HTML文件
 $root = $_SERVER['DOCUMENT_ROOT'];
  $filepath = "list/$path";
   if (file_exists($filepath)) {
        //从模板中读取模板代码
        $sql = "select html from moban where id = 1";
        $rs = mysql_query($sql,$conn)or die("执行错误".mysql_error());
        $rows = mysql_fetch_row($rs);

        $moban = $rows[0];  //将模板页代码保存到$moban
        //替换模板页中相应的标识符
        echo $moban;
        $moban = str_replace("-lanmu-", $lanmu, $moban);
        $moban = str_replace("-title-", $title, $moban);
        $moban = str_replace("-time-", $time, $moban);
        $moban = str_replace("-content-", $content, $moban);
        $moban = str_replace("-author-", $author, $moban);

        $fp = fopen($filepath, "w");
        fwrite($fp, $moban);//将替换好的内容写入发到文件中
        fclose($fp);


        $sql = "update `news` set bigclass = '$lanmu',title = '$title',content ='$content' ,author = '$author' where id = $id";
        
        if (mysql_query($sql)) {
            echo "<script>alert('修改成功');location.href='admin.php'</script>";
        }else{
            echo "<script>alert('修改失败');location.href='addnews.php';</script>";
        }
    }
 }



 $sql = "select * from news where id = $id";
 $result = mysql_query($sql)or die("操作数据库失败".mysql_errno());
 $rows = mysql_fetch_assoc($result);
 ?>
 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>新闻修改页面</title>
 </head>
 <body>
     <h3>新闻修改页面</h3>
     <form action="?id=<?= $rows['id']?>" method="post">
         <table>
             <tr>
                 <td width="125">新闻标题:</td>
                 <td width="475"><input type="text" name="title" value="<?= $rows['title']?>"></td>
             </tr>
             <tr>
                 <td width="125">发布者:</td>
                 <td width="475"><input type="text" name="author" value="<?= $rows['author']?>"></td>
             </tr>
             <tr>
                 <td width="125">所属栏目:</td>
                 <td width="475"><input type="text" name="lanmu" value="<?= $rows['lanmu']?>"></td>
             </tr>
             <tr>
                 <td width="125">新闻内容:</td>
                 <td width="475"><textarea name="content" id="" cols="30" rows="3"><?= $rows['content']?></textarea></td>
             </tr>
             <tr>
                 <td> <input type="hidden" name="time" value="<?= $rows['time']?>"> </td>
                 <td> <input type="hidden" name="path" value="<?= $rows['filepath']?>"> </td>
             </tr>
             <tr>
                 <td width="125"></td>
                 <td width="475"><input type="submit" name="submit" value="提交"></td>
             </tr>
         </table>
     </form>
 </body>
 </html>

5.页面的删除系统del.php

   该页面的删除也分为两个部分,其一是将这条新闻的记录从news表中删除;其二是删除该新闻对应的静态HTML文件,这是必要的,否则浏览者还可以通过直接输入html文件的URL访问到该新闻页面。

<?php
/*
 * 
 * @Authors peng--jun 
 * @Email   1098325951@qq.com
 * @Date    2015-11-11 16:41:58
 * @Link    http://www.cnblogs.com/xs-yqz/
 * @version $Id$
 ==========================================
 */
 header("Content-type: text/html; charset=UTF-8"); 
 require("include/conn.php");
$id=$_GET["id"];
    $sql="select * from news where id=$id";
    $rs=mysql_query($sql);
    $rows=mysql_fetch_assoc($rs);
    $path=$rows["filepath"];    //找到待删除新闻对应的静态html文件的url
    $root=$_SERVER['DOCUMENT_ROOT'];
    $filepath="list/".$path;
    if(file_exists($filepath))
            unlink($filepath);    //删除静态html文件
    
    $path=substr($path,0,10);    //找到为存放静态html文件而创建的目录
    $folderpath="list/$path";
    $folder=opendir($folderpath);    //打开该目录
    $n=0;
    while($f=readdir($folder))    {
        if($f<>"."&&$f<>"..")    //如果目录中还有其他文件
            $n++;
    }
    closedir();
    if($n==0)    //目录中已经没有任何文件
        rmdir($folderpath);    //删除该目录
    $sql="delete from news where id=$id";    //删除数据表中的记录
    
    if(mysql_query($sql))
        echo "<script language=javascript>alert('删除成功!');window.location='admin.php'</script>";
    else
        echo "<script language=javascript>alert('操作错误!');window.location='admin.php'</script>";
?>

 

转载于:https://www.cnblogs.com/xs-yqz/p/4951214.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
网站演示:http://qywz.wrzc.net 界面预览:http://down.wrzc.net/qywzwrzcnet.jpg 软件介绍:公司网站管理系统商业版源码下载,中文版免费企业网站管理系统,生成静态html文件的漂亮蓝色风格网页模板免费下载,企业网站模板,公司网站模板下载,公司网页模板,后台地址/admin/Login.asp,后台帐号admin密码为admin 网软志成企业网站管理系统V2030生成HTML静态页面版新增功能: 1.全站使用DIV+CSS排版,极大提升网站速度,更有利于搜索引擎收录数量和网店排名; 2.能在后台自动生成前台静态html网页,提升网站访问速度,兼容目前主流浏览器,提高搜索引擎收录数量和网店排名; 3.全站使用UTF-8国际编码,不管在国内的中文环境还是在国外的英文环境,网站都能正常显示; 4.使用了全新的产品图片浏览效果; 5.新增企业视频广告功能; 6.前后台进行了全新的优化和美化,更加适合当前主流的高分辨率显示; 7.更新了在线资讯功能,除了QQ增加了MSN,淘宝旺旺,同时都可在后台管理; 8.网站搜索功能进行了整合; 9.首页模板布局了全新的调整; 10.新增企业地址导航地图; 11.后台新增网站推广功能,更有利于企业网站的排名和收录; 12.对全站进行了SEO优化; 13.修复了以往发现的BUG. 网软志成中英文双语企业网站管理系统,生成静态html文件的企业门户网站系统免费下载,后台自动生成前台静态html网页,公司网站主页模板,企业网站首页模板下载,asp生成html的,网软志成企业网站管理系统生成html正式版源码下载,有宣传,介绍,展示,推广,销售公司企业的产品与服务,开展企业网上电子商务业务的,实现营利,是整站系统设计功能的最终目标.可自助建立栏目菜单,可无限制扩展栏目分类的企业网站后台管理系统,咨询服务公司,中介公司,教育公司有限公司,公司注册公司,企业认证,商标专利公司整站代码,金融,保险,中介公司网站系统,维修安装,装饰公司网站asp版本,餐饮公司,展览公司,翻译公司网页模版,会计公司,软件公司网站生成html静态全站程序,公司网站自助建站程序,任意设置的会员级别和浏览权限精确到每条记录,这对于希望不同内容针对不查看对象开放来讲,无疑是最佳解决方案。企业网站智能建站系统,独具创意的其他信息无限扩展栏,对于希望发布固定栏目无法归类的其他信息,将是非常棒的途径。公司门户网站系统,公司网站内容管理系统商业版,完善的网站子模块,如企业简历,企业文化,企业新闻,业内资讯,产品展示,下载中心,企业荣誉,营销网络,人才招聘,客户留言,会员中心,充分考虑了公司,企业中英文网站管理系统的通用需求.网软志成提供的企业网站系统是采用全后台管理方式,后台功能齐全,使用维护方便.asp生成html版本,以及php生成html照明工业公司网站管理系统中文版,企业网站管理系统简体版,utf-8国际通用编码的企业网站整站程序,让全世界浏览网站的用户畅通无阻,交通运输企业整站程序,安防公司免费三语版整站程序,包装印刷公司,环保设备,中英文模具加工公司网站繁体商业版下载,服装公司,服饰公司网站免费下载,礼品公司,中文,英文适用的家居用品公司,电子公司网站模板,汽车公司网站系统,最专业的软件公司,多年开发经验,全国知名美工制作模板,标准化设计的企业门户网站建站管理系统,完全免费的灯饰企业公司网站源码,安防公司网站模板,生成html的包装公司网站模板,印刷厂网站源码,机床公司网站模板,家居装饰公司网站建设,网软志成企业网站管理系统生成html中文正式版源码下载,化妆品网站模板公司网站源码,礼品公司网站模板,DIV+CSS排版的手机公司企业网站管理系统,通讯公司,运动网站模板下载,家电公司网站模板正式版,数码公司网站源码完整版,网络公司网站模板下载,玩具公司网站模板,食品企业公司网站模板下载,办公设置公司网站,冶金矿产企业网站模板无限制版,纺织公司网站模板,农业林业公司网站模板,公司管理系统,政府网站管理系统,公司企业网站管理系统,电脑公司系统下载,个人网站系统,企业网站系统官方网站,asp网站管理系统,asp网站系统,网站生成系统,企业网站内容管理系统源码,网站源码下载无论是生产,销售,还是服务型的大中小型公司,企业的网站管理人员只要会打字,就会建起一个专业的公司,企业网站,随时管理网站内容.当企业信息介绍内容过长,需要多次滚屏时,可以考虑对内容内分页处理。流量统计信息可以清零重置。信息暂存功能,即对于某些临时不需要发布的内容暂存起来,不用删除,以后重新开放即可。所有前台提交表单防刷新处理,有效过滤垃圾信息提交。此系统是基于asp+mssql技术开发的企业级电子商务平台,运行安全,稳定,快速,全自动化、全智能的在线方式管理、维护、更新的企业网站管理系统。提供下载的整站,程序源码,功能完全,欢迎大家下载使用.企业网站管理系统功能将更加完全,真正的能为大家在建设公司,企业网站中带来安全,稳定,高效。 免费网站模板,蓝色公司网站模板,商业网站模板,asp网站模板,公司网站管理系统,网站管理系统,网站系统,企业网站管理系统,免费企业网站模板,企业静态网站模板,中文企业网站模板,优秀企业网站模板,中小企业网站模板,企业网站设计模板,asp企业网站模板,asp企业网站模板,简单企业网站模板,韩国企业网站模板,完善的网站子模块,如企业简历,企业文化,企业新闻,业内资讯,产品展示,下载中心,企业荣誉,营销网络,人才招聘,客户留言,会员中心,充分考虑了公司,企业中英文网站管理系统的通用需求.全后台管理方式,后台功能齐全,使用维护方便.无论是生产,销售,还是服务型的大中小型公司,企业的网站管理人员只要会打字,就会建起一个专业的公司,企业网站,随时管理网站内容.提供下载的整站,程序源码,功能完全,欢迎大家下载使用.企业网站管理系统功能将更加完全,真正的能为大家在建设公司,企业网站中带来安全,稳定,高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值