动态页面生成静态页面的类
动态页面生成静态页面的类
PHP代码:--------------------------------------------------------------------------------
<?php
/*
*类名 StaticPage
*功能 生成静态页面
*版本 1.0
*日期 2003-11-5
*作者 Double_ycn
*版权 Double_ycn
*说明 请在php文件第一行写上ob_star()
*/
class StaticPage{
var $fileName; //静态页面的文件名
var $root; //存放静态页面的目录
var $page; //静态页面内容
/*
*方法 staticPage
*功能 构造函数
*参数 $f
$r
*返回 无
*/
function StaticPage($f,$r='.',$mode=0700){
$this->fileName=$f;
$this->root=$this->setRoot($r,$mode);
}
/* ==========> 设定部分<============= */
/*
*方法 setRoot
*功能 建立目录
*参数 $path:目录
$mode:格式
*返回 str
*/
function setRoot($path,$mode=0700) {
//$path=str_replace("/","\",$path);
$dirs = explode("\",realpath($path));
$path = $dirs[0];
for($i = 1;$i < count($dirs);$i++) {
$path .= "/".$dirs[$i];
if(!is_dir($path))
mkdir($path,$mode);
}
if(is_dir($path)){
return $path;
}
else{
echo "无法建立目录";
exit;
}
}
/*
*方法 setPage
*功能 建立目录
*参数 $p:静态页面内容
*返回 str
*/
function setPage($p=''){
if(empty($p)){
if(!$p=ob_get_contents()){
echo "页面设置有错误";
exit;
}
}
$this->page=$p;
}
/* ==========>取得部分<============= */
/*
*方法 getRoot
*功能 得到目录
*参数 $num:从第几个数组开始取
*返回 str
*/
function getRoot($num=1){
$dirs = explode("/",$this->root);
for($i=$num;$i<count($dirs);$i++){
$path .= "/".$dirs[$i];
}
return $path;
}
/*
*方法 getFile
*功能 得到文件名
*参数 无
*返回 str
*/
function getFile(){
return $this->fileName;
}
/*
*方法 getFullName
*功能 得到目录+文件名
*参数 $num:截取第几个目录
*返回 str
*/
function getFullName($num=1){
return $this->getRoot($num)."/".$this->fileName;
}
/* ==========>建立部分<============= */
/*
*方法 setHtml
*功能 生成静态页面
*参数 无
*返回 无
*/
function setHtml(){
$fp = fopen($this->root."/".$this->fileName, "w");
fwrite($fp, $this->page);
fclose($fp);
}
}
/*
$sp=new StaticPage($id.".html","../page/help/".date("Y-m-d"));
echo $sp->getFullName(3);
$sp->buildPage();
unset($sp);
*/
?>
--------------------------------------------------------------------------------
例子
PHP代码:--------------------------------------------------------------------------------
<?php
ob_start();
......
require_once("../class/staticPage.inc");
/*
说明:变量全部由省略的程序得到
$id是要生成静态页面的数据库里的唯一标识.作为文文件名(也可以用日期,只要是唯一的值就可以)
$riqi:作为目录名.数据库中的日期
*/
$sp=new StaticPage($id.".shtml","../page/help/".$riqi);
$sp->setPage();
$sp->setHtml();
unset($sp);
?>
--------------------------------------------------------------------------------
怎么应用!让地址挂上静态页面
通过上面生成静态页面后
PHP代码:--------------------------------------------------------------------------------
<?php
.....
/* =======>最新招聘信息<======== */
$sql="select z.id,companyName as cop,job,xueLi,z.riqi from ".TB_ZPINF." z left join ".TB_USER." u on z.userName=u.name where z.nominate!=0 order by z.id desc limit 0,10";
$db->query($sql);
while($db->next_record()){
$riqi=$db->f("riqi");
$id=$db->f("id");
if(file_exists("../page/dcrc/qzxx/".$riqi."/".$id.".shtml"))
$url="../page/dcrc/qzxx/".$riqi."/".$id.".shtml";
else
$url="zpxx.php?navId=34&id=$id";
$t->set_var(array("zpxxUrl"=>$url,
"cop"=>$db->f("cop"),
"job"=>$db->f("job"),
"xueLi"=>$db->f("xueLi"),
"riqi"=>$riqi));
$t->parse("zpxx","ZhaoPinXinXi",true);
}
/* =======>结束最新招聘信息<======== */
....
?>
--------------------------------------------------------------------------------
主要看这部分.
PHP代码:--------------------------------------------------------------------------------
<?PHP
if(file_exists("../page/dcrc/qzxx/".$riqi."/".$id.".shtml"))
$url="../page/dcrc/qzxx/".$riqi."/".$id.".shtml";
else
$url="zpxx.php?navId=34&id=$id";
?>