`
hudeyong926
  • 浏览: 2020946 次
  • 来自: 武汉
社区版块
存档分类
最新评论

PHP生成静态HTML的技术原理

阅读更多

PHP页面的静态化很有必要,尤其是在CMS系统中,一些内容一旦生成,基本上不会有变化,这时如果用html将页面静态化,无疑会减少服务其解析PHP页面的负担。以下是看书学来的PHP静态化技术,记录之以备不时之需。
无论是利用框架还是简单的脚本,原理基本一致:就是利用PHP进行文件操作,替换html模板中的动态元素。

用Replace函数即php的str_replace函数将模版文件中读取的内容中的关键字替换成变量中的内容,从而实现简单的模板分离。

1.新增与回显

insert.htm文件代码:在标题和内容框中分别输入:“这是标题”和“这是内容”

<html>
<head>
<title>添加一条新记录</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
 <p><h1>添加一条新记录</h1></p>
 <form name="form1" method="post" action="insert.php">
   <table width="500" border="0" cellspacing="0" cellpadding="0">
     <tr>
       <td>标题</td>
       <td><input name="title" type="text" id="title"></td>
     </tr>
     <tr>
       <td>内容</td>
       <td><textarea name="body" cols="35" rows="5" id="body"></textarea></td>
     </tr>
     <tr>
       <td colspan="2"><input type="submit" name="Submit" value="Submit">
       <input type="reset" name="Submit2" value="Reset"></td>
     </tr>
   </table>
</form>
</body>
</html>
 

模板文件template.htm: 

<html> 
<head> 
<title>%title%</title> 
</head> 
<body> 
<H1>%title%</H1> 
<hr> 
<pre>%body%</pre> 
</body> 
</html>  

 php

<?php
//Replace函数用于将从模版文件中读取的内容中的关键字替换成变量中的内容
function Replace($row, $title='', $body='')
{
	//替换参数中的关键字
	$row   = str_replace("%title%", $title, $row);
	$row   = str_replace("%body%", $body, $row);
	//返回替换后的结果
	return $row;
}
//主程序开始
@mysql_connect("localhost", "root","1981427")				//选择数据库之前需要先连接数据库服务器
or die("数据库服务器连接失败");
@mysql_select_db("test")					//选择数据库mydb
or die("数据库不存在或不可用");
//将表单中的数据通过$_POST方式获取然后存储在相应的变量中
$title = $_POST['title'];
$body = $_POST['body'];

//生成文件名
$filename = 'S'.date("YmdHis").'.htm';
//执行SQL语句
$query = mysql_query("insert into news values('$title', '$body', '$filename')");
//根据SQL执行语句返回的bool型变量判断是否插入成功
if($query)
{
	//模版文件指针
	$f_tem = fopen("template.htm","r");
	//生成的文件指针
    $f_new = fopen('new.htm',"w");
	//$f_new = fopen($filename,"w");
	//循环读取模版文件,每次读取一行
	while(!feof($f_tem)) 
	{
	    $row = fgets($f_tem);
	    $row = Replace($row, $title, $body);			//替换读入内容中的关键字
	    fwrite($f_new, $row);			//将替换后的内容写入生成的HTML文件
	}
	//关闭文件指针
	fclose($f_new);
	fclose($f_tem);
	//提示
  echo "数据插入成功";
}
else
    echo "数据插入失败";
mysql_close();									//关闭与数据库服务器的连接
?>

 生成新的html页:new.html

<html> 
<head> 
<title>文章标题</title> 
</head> 
<body> 
<H1>文章标题</H1> 
<hr> 
<pre>这里是文章主体</pre> 
</body> 
</html> 

2.修改与回显edit.php

<?php
//主程序开始
@mysql_connect("localhost", "root","orbit")				//选择数据库之前需要先连接数据库服务器
or die("数据库服务器连接失败");
@mysql_select_db("test")					//选择数据库mydb
or die("数据库不存在或不可用");
$query = mysql_query("select * from news where title='这是标题'");
//根据SQL执行语句返回的bool型变量判断是否插入成功
$row = mysql_fetch_array($query);
?>
<html>
<head>
<title>修改一条新记录</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
 <p><h1>修改一条新记录</h1></p>
 <form name="form1" method="post" action="mdf_to_staitc.php">
   <table width="500" border="0" cellspacing="0" cellpadding="0">
     <tr>
       <td>标题</td>
       <td><input name="title" type="text" id="title" value="<?php echo $row['title']?>"></td>
     </tr>
     <tr>
       <td>内容</td>
       <td><textarea name="body" cols="35" rows="5" id="body"><?php echo $row['body']?></textarea></td>
     </tr>
     <tr>
	 <input name="filename" type="hidden" value="<?php echo $row['filename']?>">
       <td colspan="2"><input type="submit" name="Submit" value="Submit">
     </tr>
   </table>
</form>
</body>
</html>

php

<?php
//Replace函数用于将从模版文件中读取的内容中的关键字替换成变量中的内容
function Replace($row, $title='', $body='')
{
	//替换参数中的关键字
	$row   = str_replace("%title%", $title, $row);
	$row   = str_replace("%body%", $body, $row);
	//返回替换后的结果
	return $row;
}
//主程序开始
@mysql_connect("localhost", "root","orbit")				//选择数据库之前需要先连接数据库服务器
or die("数据库服务器连接失败");
@mysql_select_db("test")					//选择数据库mydb
or die("数据库不存在或不可用");

mysql_query("update news set title='".$_POST['title']."',body='".$_POST['body']."' where filename='".$_POST['filename']."' ");
$query = mysql_query("select * from news where filename='".$_POST['filename']."' ");
//根据SQL执行语句返回的bool型变量判断是否插入成功
while($record = mysql_fetch_array($query))
{
	echo "<pre>";
	print_r($record);
	//模版文件指针
	$f_tem = fopen("template.htm","r");
	//生成的文件指针
	$f_new = fopen($record['filename'],"w");
	//循环读取模版文件,每次读取一行
	while(!feof($f_tem)) 
	{
	    $row = fgets($f_tem);
	    $row = Replace($row, $record['title'], $record['body']);	//替换读入内容中的
	    fwrite($f_new, $row);			//将替换后的内容写入生成的HTML文件
	}
	//关闭文件指针
	fclose($f_new);
	fclose($f_tem);
}
mysql_close();									//关闭与数据库服务器的连接
?>

mysql_close();									//关闭与数据库服务器的连接
?>

3.一般的CMS都会记录内容被浏览的信息,例如浏览次数或者浏览者的IP信息等,静态页面要记录这些信息,可以在模板中加入一个长宽都为0的图片,指向计数脚本。

以记录浏览次数为例:
<img width='0' height='0' src='counter.php?fileID=S001' />
这样,计数操作可以放到counter.php中进行,又不会破坏网页的静态性。

<?php

$query = mysql_query("update counter set count+=1 where fileid='".$fileid."' ");
分享到:
评论

相关推荐

    PHP生成静态页面小程序 v1.1.zip

    前几天发表一个有关PHP生成静态HTML页面小程序,有朋友私下说能不能整理一下,把相关PHP生成静态HTML,原理性强的都写出来,适合PHP新手用到的一些方法,这里我在之前的哪个版本上面又进行了完善,把PHP新手朋友要求...

    PHP生成静态页面小程序 v1.1

    前几天发表一个有关PHP生成静态HTML页面小程序,有朋友私下说能不能整理一下,把相关PHP生成静态HTML,原理性强的都写出来,适合PHP新手用到的一些方法,这里我在之前的哪个版本上面又进行了完善,把PHP新手朋友要求...

    PHP批量生成静态HTML的简单原理和方法

    PHP生成HTML的技术要比ASP的技术相对来说要简单一点,下面简要说一下怎样用PHP批量生成HTML技术吧,先看一下面源码: 复制代码 代码如下:&lt;?php if($_POST){ $sql=”select * from doorsjk_about where id$db-&gt;...

    PHP生成静态页面小程序 1.1

    前几天发表一个有关PHP生成静态HTML页面小程序,有朋友私下说能不能整理一下,把相关PHP生成静态HTML,原理性强的都写出来,适合PHP新手用到的一些方法,这里我在之前的哪个版本上面又进行了完善,把PHP新手朋友要求...

    PHP生成静态页面小程序官方版 v1.1

    前几天发表一个有关PHP生成静态HTML页面小程序,有朋友私下说能不能整理一下,把相关PHP生成静态HTML,原理性强的都写出来,适合PHP新手用到的一些方法,这里我在之前的哪个版本上面又进行了完善,把PHP新手朋友要求...

    PHP动态变静态原理

    我们生成静态页面的方法,就是利用了这个函数。用这个方法的优点是,代码比较清晰,可读性好。 这里我用smarty做例子,说明如何生成静态页 复制代码 代码如下:&lt;?php require(‘smarty/Smarty.class.php’); $t...

    PHP模板引擎PHPnew v6.5 Professional.rar

    软件介绍 Phpnew 是一款简易而强大的模板引擎,它来自discuz的引擎原理,经过后期重组,演变为可以独立使用的模板化工具。经过长期的修整及重组,phpnew已经在人性化上更为...增加生成静态化技术. 扩展无限.

    PHP网络编程技术与实践 源码

    第9章 使用PHP生成静态页面 9.1 为什么要生成静态页面 9.2 静态技术介绍和使用 9.3 常见的模板技术模块 9.3.1 SMARTY模板技术 9.3.2 PHPLib模板技术 9.3.3 FastTemplate模板技术 9.4 本章小结 第10章 使用Socket编程...

    php课程(共100多节)

    15:PHP生成HTML文件原理 16:PHP小偷程序原理和实例 17:PHP面向对象开发的学习(一) 18:PHP面向对象开发的学习(二) 19:PHP面向对象开发的学习(三) 20:PHP面向对象开发的学习(四) 21:PHP面向对象开发的...

    php网络开发完全手册

    12.4 PHP动态生成JavaScript代码 193 12.4.1 多行输出 193 12.4.2 单行输出 194 12.4.3 PHP动态生成JavaScript的 12.4.3 实例——进度条 194 12.5 在JavaScript中调用PHP程序 196 12.5.1 页面的跳转 196 12.5.2 隐性...

    SSCMS内容管理系统1.0 build 0622

    SSCMS可以将网站内容全部生成静态HTML文件,这样可以极大地节约主机资源,提高系统性能,全静态处理技术是构建大型站点的必要条 件。 9、搜索引擎优化 借助高度可自定义的全静态发布技术,使您的网站出现...

    C-Blog V2.0

    可选择是否生成静态HTML页面 .生成纯静态 HTML 页面(可选) 加快浏览速度和并对搜索引擎进行了优化 .采用XHTML标准 通过W3c的xhtml验证与css验证 .全面兼容IE,Firefox与Opera等符合标准的浏览器 .提供2种编辑...

    PHP和MySQL Web开发第4版pdf以及源码

    1.3 在HTML中嵌入PHP 1.3.1 使用PHP标记 1.3.2 PHP语句 1.3.3 空格 1.3.4 注释 1.4 添加动态内容 1.4.1 调用函数 1.4.2 使用date()函数 1.5 访问表单变量 1.5.1 简短、中等以及长风格的表单变量 1.5.2 ...

    PHP和MySQL WEB开发(第4版)

    11.1 Web数据库架构的工作原理 11.2 从Web查询数据库的基本步骤 11.2.1 检查与过滤用户输入数据 11.2.2 建立一个连接 11.2.3 选择使用的数据库 11.2.4 查询数据库 11.2.5 检索查询结果 11.2.6 从数据库断开连接 ...

    Java-Web程序设计(PPT).pptx

    1.1.2 Web 应用程序的工作原理 随着网络技术的发展,基于 Internet 的 Web 应用程序也变得越来越复杂,更多的内容需根据用户的请求动态生成页面信息,即动态网站。 动态网站指在Html静态页面中嵌入Java、C#、Php等...

    PHP和MySQL Web开发第4版

    1.3 在HTML中嵌入PHP 1.3.1 使用PHP标记 1.3.2 PHP语句 1.3.3 空格 1.3.4 注释 1.4 添加动态内容 1.4.1 调用函数 1.4.2 使用date()函数 1.5 访问表单变量 1.5.1 简短、中等以及长风格的表单变量 1.5.2 ...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    功能点 站内搜索、栏目管理、视频播放(完全模仿优酷视频页面)、焦点图、静态页面生成(新浪、搜狐等大型网站普遍采用的技术)、文章管理、无刷新评论、评论的无刷新分页、敏感词过滤、用户管理、友情链接管理、...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    1、将业务层与表示层分离:使用JSP技术,网络开发人员可充分使用HTML来设计页面显示部分(如字体颜色等),并使用JSP指令或者JAVA程序片段来生成网页上的动态内容; 2、能够跨平台:JSP支持绝大部分平台,包括现在...

Global site tag (gtag.js) - Google Analytics