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

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生成静态原理程序.rar

    本压缩包文件"静态生成\php生成静态原理程序.rar"包含了名为"php生成静态原理程序.php"的文件,这很可能是用PHP语言实现的一个静态页面生成器的源代码示例。现在我们将深入探讨PHP如何实现静态页面的生成及其背后的...

    把php生成静态(html)页面程序类.zip

    标题提到的“把php生成静态(html)页面程序类.zip”是一个压缩包,其中包含了一个PHP类,用于将动态生成的PHP页面转换为HTML静态文件。这一过程通常被称为静态化。 首先,我们来看PHP动态页面和静态HTML页面的区别。...

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

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

    PHP生成静态页 整站源码 适合新手

    当我们谈论"PHP生成静态页"时,我们指的是通过PHP脚本动态生成HTML页面,然后将其保存为静态文件,以便后续的用户请求可以直接访问这些预先生成的页面,而无需每次请求都执行PHP代码。这种方法可以提高网站的加载...

    最简单的php生成静态页的类

    首先,我们需要理解PHP生成静态页面的基本原理。在动态网站中,每次有用户访问时,服务器都会运行PHP脚本来生成HTML页面并发送给浏览器。而在静态页面生成技术中,PHP脚本会在用户请求之前或后台自动运行,将动态...

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

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

    PHP 生成静态页类

    总的来说,PHP生成静态页类是结合了PHP的动态处理能力与静态页面的性能优势。通过这样的方式,开发者可以构建既快速又可扩展的网站。在`writehtml.php`中,我们可以期待看到一个实现这一功能的简单但实用的类示例。...

    PHP实例开发源码—PHP生成静态页面小程序.zip

    以下是关于PHP生成静态页面这一技术的详细知识讲解。 首先,了解PHP的基本概念。PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,尤其适用于Web开发,可以嵌入到HTML中执行。它支持多种数据库,如...

    自动生成静态页面

    自动生成静态页面是一种提高网站性能和安全性的重要技术。在现代Web开发中,静态页面是指HTML、CSS和JavaScript等文件在用户请求之前就已经存在于服务器上,而不是由动态脚本(如PHP、Python或Ruby)实时生成。这种...

    通过URL生成静态页面

    在IT行业中,生成静态页面是一种常见的优化网站性能和提高用户体验的技术。标题“通过URL生成静态页面”揭示了这个话题的核心,即利用特定的URL来创建HTML文件,这些文件不依赖服务器端的动态处理,而是预先生成并...

     PHP生成静态页面并不是指PHP的动态解析,输出HTML页面,而是指用PHP创建HTML页面。

    **PHP生成静态页面**并不是指PHP动态解析并输出HTML页面,而是指利用PHP脚本来创建HTML文件。这种做法的优点在于能够减轻服务器压力、提高网站访问速度,并且对搜索引擎更加友好。但同时也存在一定的缺点,比如维护...

    利用PHP生成静态html页面的原理

    总结来说,利用PHP生成静态HTML页面的原理主要包括:读取模板文件、动态替换内容、写入新的HTML文件。这种方法能够有效减少服务器处理动态请求的负担,提升网站的响应速度,尤其适用于访问量大的网站。通过理解并...

    PHP生成静态页面123.pdf

    PHP生成静态页面是一种常见的优化网站性能的技术,它涉及到动态脚本、静态页面的概念以及模板解析的原理。以下将详细阐述这些知识点。 首先,PHP脚本是一种服务器端的编程语言,用于创建动态网页。动态页面是通过...

    mysql-php生成静态网页实例.doc

    PHP生成静态网页是一种常见的优化网站性能的技术,它可以将动态内容转换为静态HTML文件,从而减少服务器负担,提高页面加载速度,尤其在高访问量的情况下更为显著。以下是关于PHP生成静态网页的详细说明: 1. **PHP...

    PHP实例开发源码-PHP生成静态页面小程序.zip

    【PHP生成静态页面小程序】是一种常见的网站优化技术,它通过将动态内容转化为静态HTML文件,提高了网站的访问速度和搜索引擎的友好性。在本实例中,我们将会探讨PHP如何实现这个功能,以及它背后的原理。 PHP是一...

    PHP生成静态页面小程序.7z

    PHP生成静态页面是一种常见的优化网站性能的技术,它通过在服务器端执行PHP脚本,将动态内容转化为HTML文件,然后提供给客户端下载和浏览。这种方式可以减轻服务器负担,提高页面加载速度,尤其对于访问量大的网站...

    PHP实例开发源码—网址导航系统3号(php生成静态).zip

    4. 探究PHP生成静态页面的原理和方法。 5. 研究前端模板引擎,如Smarty,如何与PHP配合生成静态HTML。 通过这个实例,开发者不仅可以提升PHP编程技能,还能深入理解Web开发流程,同时对于静态化技术的掌握,有助于...

    生成新闻静态页(列表和单页).rar

    对于.NET爱好者来说,这个项目提供了一个实践生成静态页的机会,可以深入理解动态网站与静态页面的转换过程,以及如何在.NET环境中实现这一功能。通过阅读和运行源代码,可以提升对ASP.NET MVC或ASP.NET Core的工作...

Global site tag (gtag.js) - Google Analytics