天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

比較詳細(xì)PHP生成靜態(tài)頁面教程

一,php腳本與動(dòng)態(tài)頁面。
  php腳本是一種服務(wù)器端腳本程序,可通過嵌入等方法與HTML文件混合,也可以類,函數(shù)封裝等形式,以模板的方式對(duì)用戶請(qǐng)求進(jìn)行處理。無論以何種方式,它的基本原理是這樣的。由客戶端提出請(qǐng)求,請(qǐng)求某一頁面 -----> WEB服務(wù)器引入指定相應(yīng)腳本進(jìn)行處理 -----> 腳本被載入服務(wù)器 -----> 由服務(wù)器指定的php解析器對(duì)腳本進(jìn)行解析形成HTML語言形式 ----> 將解析后的HTML語句以包的方式傳回給瀏覽器。由此不難看出,在頁面發(fā)送到瀏覽器后,php就不存在了,已被轉(zhuǎn)化解析為HTML語句。客戶請(qǐng)求為一動(dòng)態(tài)文件,事實(shí)上并沒有真正的文件存在在那里,是php解析而成相對(duì)應(yīng)的頁面,然后發(fā)送回瀏覽器。這種頁面處理方式被稱為“動(dòng)態(tài)頁面”。
二,靜態(tài)頁面。
  靜態(tài)頁面是指在服務(wù)器端確實(shí)存在的僅含HTML以及JS,CSS等客戶端運(yùn)行腳本的頁面。它的處理方式是。由客戶端提出請(qǐng)求,請(qǐng)求某一頁面 ----> WEB服務(wù)器確認(rèn)并載入某一頁面 ----> WEB服務(wù)器將該頁面以包的形式傳遞回瀏覽器。由這一過程,我們對(duì)比一下動(dòng)態(tài)頁面,即可方現(xiàn)。動(dòng)態(tài)頁面需由WEB服務(wù)器php解析器進(jìn)行解析,而且通常還需連接數(shù)據(jù)庫,進(jìn)行數(shù)據(jù)庫存取操作,然后才能形成HTML語言信息包;而靜態(tài)頁面,無須解析,無須連接數(shù)據(jù)庫,直接發(fā)送,可大大減輕服務(wù)器壓力,提高服務(wù)器負(fù)載能力,大幅提供頁面打開速度和網(wǎng)站整體打開速度。但其缺點(diǎn)是,不能動(dòng)態(tài)地對(duì)請(qǐng)求進(jìn)行處理,服務(wù)器上必須確實(shí)存在該文件。
三,模板及模板解析。
  模板即尚未填充內(nèi)容html文件。例如:
 temp.html
Code:
復(fù)制代碼 代碼如下:
<HTML>
<TITLE>{ title }</TITLE>
<BODY>
this is a { file } file's templets
</BODY>
</HTML>
php處理:
 templetest.php
Code:
$title = "拓邁國際測(cè)試模板";
$file = "TwoMax Inter test templet,
author:Matrix@Two_Max";
 $fp = fopen ("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$content .= str_replace ("{ file }",$file,$content);
$content .= str_replace ("{ title }",$title,$content);
echo $content;
?>

  模板解析處理,即將經(jīng)php腳本解析處理后得出的結(jié)果填充(content)進(jìn)模板的處理過程。通常借助于模板類。目前較流行的模板解析類有phplib,smarty,fastsmarty等等。模板解析處理的原理通常為替換。也有些程序員習(xí)慣將判斷,循環(huán)等處理放進(jìn)模板文件中,用解析類處理,典型應(yīng)用為block概念,簡單來說即為一個(gè)循環(huán)處理。由php腳本指定循環(huán)次數(shù),如何循環(huán)代入等,再由模板解析類具體實(shí)施這些操作。
  好了,對(duì)比過靜態(tài)頁面與動(dòng)態(tài)頁面各自的優(yōu)劣,現(xiàn)在我們就來說說,如何用php生成靜態(tài)文件。
  php生成靜態(tài)頁面并不是指php的動(dòng)態(tài)解析,輸出HTML頁面,而是指用php創(chuàng)建HTML頁面。同時(shí)因?yàn)镠TML的不可寫性,我們創(chuàng)建的HTML若有修改,則需刪掉重新生成即可。(當(dāng)然你也可以選擇用正則進(jìn)行修改,但個(gè)人認(rèn)為那樣做倒不如刪掉重新生成來得快捷,有些得不償失。)
  言歸正傳。用過php文件操作函數(shù)的php FANS知道,php中有一個(gè)文件操作函數(shù)fopen,即打開文件。若文件不存在,則嘗試創(chuàng)建。這即是php可以用來創(chuàng)建HTML文件的理論基礎(chǔ)。只要用來存放HTML文件的文件夾有寫權(quán)限(即權(quán)限定義0777),即可創(chuàng)建文件。(針對(duì)UNIX系統(tǒng)而言,Win系統(tǒng)無須考慮。)仍以上例為例,若我們修改最后一句,并指定在test目錄下生成一個(gè)名為test.html的靜態(tài)文件:
Code:
復(fù)制代碼 代碼如下:
<?php
$title = "拓邁國際測(cè)試模板";
$file = "TwoMax Inter test templet,
author:Matrix@Two_Max";
 $fp = fopen ("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$content .= str_replace ("{ file }",$file,$content);
$content .= str_replace ("{ title }",$title,$content);
// echo $content;
$filename = "test/test.html";
$handle = fopen ($filename,"w"); //打開文件指針,創(chuàng)建文件
/*
 檢查文件是否被創(chuàng)建且可寫
*/
if (!is_writable ($filename)){
die ("文件:".$filename."不可寫,請(qǐng)檢查其屬性后重試!");
}
if (!fwrite ($handle,$content)){ //將信息寫入文件
die ("生成文件".$filename."失敗!");
}
fclose ($handle); //關(guān)閉指針
die ("創(chuàng)建文件".$filename."成功!");
?>

  實(shí)際應(yīng)用中常見問題解決方案參考:
  一,文章列表問題:
  
  在數(shù)據(jù)庫中創(chuàng)建字段,記錄文件名,每生成一個(gè)文件,將自動(dòng)生成的文件名存入數(shù)據(jù)庫,對(duì)于推薦文章,只需指向存放靜態(tài)文件的指定文件夾中的該頁面即可。利用php操作處理文章列表,存為字符串,生成頁面時(shí)替換此字符串即可。如,在頁面中放置文章列表的表格加入標(biāo)記{ articletable },而在php處理文件中:
Code:
復(fù)制代碼 代碼如下:
<?php
$title = "拓邁國際測(cè)試模板";
$file = "TwoMax Inter test templet,
author:Matrix@Two_Max";
 $fp = fopen ("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$content .= str_replace ("{ file }",$file,$content);
$content .= str_replace ("{ title }",$title,$content);
// 生成列表開始
$list = '';
$sql = "select id,title,filename from article";
$query = mysql_query ($sql);
while ($result = mysql_fetch_array ($query)){
$list .= ''.$result['title'].'';
}
$content .= str_replace ("{ articletable }",$list,$content);
//生成列表結(jié)束
// echo $content;
$filename = "test/test.html";
$handle = fopen ($filename,"w"); //打開文件指針,創(chuàng)建文件
/*
 檢查文件是否被創(chuàng)建且可寫
*/
if (!is_writable ($filename)){
die ("文件:".$filename."不可寫,請(qǐng)檢查其屬性后重試!");
}
if (!fwrite ($handle,$content)){ //將信息寫入文件
die ("生成文件".$filename."失敗!");
}
fclose ($handle); //關(guān)閉指針
die ("創(chuàng)建文件".$filename."成功!");
?>

  二,分頁問題。
  如我們指定分頁時(shí),每頁20篇。某子頻道列表內(nèi)文章經(jīng)數(shù)據(jù)庫查詢?yōu)?5條,則,首先我們通過查詢得到如下參數(shù):1,總頁數(shù);2,每頁篇數(shù)。第二步,for ($i = 0; $i < allpages; $i++),頁面元素獲取,分析,文章生成,都在此循環(huán)中執(zhí)行。不同的是,die ("創(chuàng)建文件".$filename."成功!";這句去掉,放到循環(huán)后的顯示,因?yàn)樵撜Z句將中止程序執(zhí)行。例:
Code:
復(fù)制代碼 代碼如下:
$fp = fopen ("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$onepage = '20';
$sql = "select id from article where channel='$channelid'";
$query = mysql_query ($sql);
$num = mysql_num_rows ($query);
$allpages = ceil ($num / $onepage);
for ($i = 0;$i<$allpages; $i++){
if ($i == 0){
$indexpath = "index.html";
} else {
$indexpath = "index_".$i."html";
}
$start = $i * $onepage;
$list = '';
$sql_for_page = "select name,filename,title from article where channel='$channelid' limit $start,$onepage";
$query_for_page = mysql_query ($sql_for_page);
while ($result = $query_for_page){
$list .= ''.$title.'';
}
$content = str_replace ("{ articletable }",$list,$content);
if (is_file ($indexpath)){
@unlink ($indexpath); //若文件已存在,則刪除
}
$handle = fopen ($indexpath,"w"); //打開文件指針,創(chuàng)建文件
/*
  檢查文件是否被創(chuàng)建且可寫
*/
if (!is_writable ($indexpath)){
echo "文件:".$indexpath."不可寫,請(qǐng)檢查其屬性后重試!"; //修改為echo
}
if (!fwrite ($handle,$content)){ //將信息寫入文件
echo "生成文件".$indexpath."失敗!"; //修改為echo
}
fclose ($handle); //關(guān)閉指針
}
fclose ($fp);
die ("生成分頁文件完成,如生成不完全,請(qǐng)檢查文件權(quán)限系統(tǒng)后重新生成!");
?>

  大致思路如此,其中如其它數(shù)據(jù)生成,數(shù)據(jù)輸入輸出檢查,分頁內(nèi)容指向等可酌情在頁面中加入。
  在實(shí)際文章系統(tǒng)處理過程當(dāng)中,還有許多問題有待考慮,與動(dòng)態(tài)頁面不同之處,需注意的地方還有很多。但大致思路即是如此,其它方面可舉一反三而得。
php制作靜態(tài)網(wǎng)站的模板框架
 模板能夠改善網(wǎng)站的結(jié)構(gòu)。本文闡述如何通過php 4的一個(gè)新功能和模板類,在由大量靜態(tài)HTML頁面構(gòu)成的網(wǎng)站中巧妙地運(yùn)用模板控制頁面布局。
提綱:
===================================
分離功能和布局
避免頁面元素重復(fù)
靜態(tài)網(wǎng)站的模板框架
===================================
分離功能和布局
   首先我們來看看應(yīng)用模板的兩個(gè)主要目的:
分離功能(php)和布局(HTML)
避免頁面元素重復(fù)
   第一個(gè)目的是談?wù)摰米疃嗟哪康模O(shè)想的情形是:一組程序員編寫用于生成頁面內(nèi)容的php腳本,同時(shí)另一組設(shè)計(jì)人員設(shè)計(jì)HTML和圖形以控制頁面的最終外觀。分離功能和布局的基本思想就是使得這兩組人能夠各自編寫和使用獨(dú)立的一組文件:程序員只需關(guān)心那些只包含php代碼的文件,無需關(guān)心頁面的外觀
;而頁面設(shè)計(jì)人員可以用自己最熟悉的可視化編輯器設(shè)計(jì)頁面布局,無需擔(dān)心破壞任何嵌入到頁面的php代碼。
   如果你曾經(jīng)看過幾個(gè)關(guān)于php模板的教程,那么你應(yīng)該已經(jīng)明白模板的工作機(jī)制。考慮一個(gè)簡單的頁面局部:頁面的上方是頁頭,左邊是導(dǎo)航條,其余部分是內(nèi)容區(qū)域。這種網(wǎng)站可以擁有如下模板文件:
復(fù)制代碼 代碼如下:
<!-- main.htm -->
<html>
<head><title>模板示例</title></head>
<body>
<table><tr><td>{HEADER}</td></tr>
<tr><td>{LEFTNAV}</td><td>{CONTENT}</td></tr>
</table>
</body></html>

<!-- header.htm -->
<img src="sitelogo.jpg">
<!-- leftnav.htm -->
<br><a href="foo">Foo</a>
<br><a href="bar">Bar</a>
   可以看出頁面如何由這些模板構(gòu)造而成:main模板控制著整個(gè)頁面的布局;header模板和leftnav模板控制著頁面的公共元素。花括號(hào)“{}”里面的標(biāo)識(shí)符是內(nèi)容占位符。使用模板最主要的好處在于界面設(shè)計(jì)者能夠按照自己的意愿編輯這些文件,比如設(shè)置字體、修改顏色和圖形,或者完全地改變頁面的布局。界面設(shè)計(jì)者可以用任何普通HTML編輯器或者可視化工具編輯這些頁面,因?yàn)檫@些文件都只包含HTML代碼,沒有任何php代碼。
  php代碼全部保存到單獨(dú)的文件中,這個(gè)文件也就是由頁面URL實(shí)際調(diào)用的文件。Web服務(wù)器通過php引擎解析該文件,然后把結(jié)果返回給瀏覽器。一般地,php代碼總是動(dòng)態(tài)地生成頁面內(nèi)容,比如查詢數(shù)據(jù)庫或者執(zhí)行某種計(jì)算等。下面是一個(gè)例子:
復(fù)制代碼 代碼如下:
<?php
// example.php
require('class.FastTemplate.php');
$tpl = new FastTemplate('.');
$tpl->define( array( 'main' => 'main.htm',
'header' => 'header.htm',
'leftnav' => 'leftnav.htm' ) );
// 此處的php代碼設(shè)置$content使其包含合適的頁面內(nèi)容
$tpl->assign('CONTENT', $content);
$tpl->parse('HEADER', 'header');
$tpl->parse('LEFTNAV', 'leftnav');
$tpl->parse('MAIN', 'main');
$tpl->FastPrint('MAIN');
?>

   這里我們使用的是流行的FastTemplate模板類,但其基本思路對(duì)于其他許多模板類來說都一樣。首先你實(shí)例化一個(gè)類,告訴它到哪里去尋找模板文件以及哪一個(gè)模板文件與頁面的哪部分對(duì)應(yīng);接下來是生成頁面內(nèi)容,把結(jié)果賦予內(nèi)容的標(biāo)識(shí)符;然后,依次解析各個(gè)模板文件,模板類將執(zhí)行必要的替換操作;最后把解析結(jié)果輸出到瀏覽器。
   這個(gè)文件完全由php代碼構(gòu)成,不包含任何HTML代碼,這是它最大的優(yōu)點(diǎn)。現(xiàn)在,php程序員可以集中精力編寫生成頁面內(nèi)容的代碼,而不必為了如何生成HTML去正確地格式化最終頁面而擔(dān)心。
   你可以使用這種方法和上面的文件構(gòu)造出一個(gè)完整的網(wǎng)站。如果php代碼是以URL中的查詢字符串為基礎(chǔ)生成頁面內(nèi)容,例如http://www.foo.com/example.php?article=099,你可以據(jù)此構(gòu)造出一個(gè)完整的雜志網(wǎng)站。
   很容易看出采用模板還有第二個(gè)好處。如上例所示,頁面左邊的導(dǎo)航條單獨(dú)保存為一個(gè)文件,我們只需編輯這一個(gè)模板文件就可以改變網(wǎng)站所有頁面左邊的導(dǎo)航條。
避免頁面元素重復(fù)
   “這確實(shí)不錯(cuò)”,你也許會(huì)想,“我的網(wǎng)站主要就是由大量的靜態(tài)頁面構(gòu)成。現(xiàn)在我可以從所有頁面中刪除它們的公共部分,要更新這些公共部分實(shí)在太麻煩了。以后我就可以用模板制作出很容易維護(hù)的統(tǒng)一頁面布局。”但事情并非這么簡單,“大量的靜態(tài)頁面”道出了問題的所在。
   請(qǐng)考慮上面的例子。這個(gè)例子實(shí)際上只有一個(gè)example.php頁面,它之所以能夠生成整個(gè)網(wǎng)站的所有頁面,是因?yàn)樗昧薝RL中的查詢字符串從數(shù)據(jù)庫之類的信息源動(dòng)態(tài)地構(gòu)造出頁面。
   我們之中的大多數(shù)人所運(yùn)行的網(wǎng)站并不一定都有數(shù)據(jù)庫支持。我們的網(wǎng)站大多數(shù)由靜態(tài)頁面構(gòu)成,然后用php在這里、那里加上一些動(dòng)態(tài)功能,比如搜索引擎、反饋表單等。那么,如何在這種網(wǎng)站上應(yīng)用模板呢?
   最簡單的方法是為每一個(gè)頁面復(fù)制一份php文件,
然后在每一個(gè)頁面中把php代碼里代表內(nèi)容的變量設(shè)置成合適的頁面內(nèi)容。例如,假設(shè)有三個(gè)頁面,它們分別是主頁(home)、關(guān)于(about)和產(chǎn)品(product),我們可以用三個(gè)文件分別生成它們。這三個(gè)文件的內(nèi)容都類如:
復(fù)制代碼 代碼如下:
<?php
// home.php
require('class.FastTemplate.php');
$tpl = new FastTemplate('.');
$tpl->define( array( 'main' => 'main.htm',
'header' => 'header.htm',
'leftnav' => 'leftnav.htm' ) );
$content = "<p>歡迎訪問</p>
<img src=/"demo.jpg/">
<p>希望你能夠喜歡本網(wǎng)站</p>";
$tpl->assign('CONTENT', $content);
$tpl->parse('HEADER', 'header');
$tpl->parse('LEFTNAV', 'leftnav');
$tpl->parse('MAIN', 'main');
$tpl->FastPrint('MAIN');
?>

   顯然,這種方法有三個(gè)問題:我們必須為每一個(gè)頁面復(fù)制這些復(fù)雜的、牽涉到模板的php代碼,這與重復(fù)公共頁面元素一樣使得頁面難以維護(hù);現(xiàn)在文件又混合了HTML和php代碼;為內(nèi)容變量賦值將變得非常困難,因?yàn)槲覀儽仨毺幚砗么罅康奶厥庾址?
   解決這個(gè)問題的關(guān)鍵就在于分離php代碼和HTML內(nèi)容,雖然我們不能從文件中刪除所有的HTML內(nèi)容,但可以移出絕大多數(shù)php代碼。
靜態(tài)網(wǎng)站的模板框架
   首先,我們象前面一樣為所有的頁面公用元素以及頁面整體布局編寫模板文件;然后從所有的頁面刪除公共部分,只留下頁面內(nèi)容;接下來再在每個(gè)頁面中加上三行php代碼,如下所示:
復(fù)制代碼 代碼如下:
<?php
<!-- home.php -->
<?php require('prepend.php'); ?>
<?php pageStart('Home'); ?>
<h1>你好</h1>
<p>歡迎訪問</p>
<img src="demo.jpg">
<p>希望你能夠喜歡本網(wǎng)站</p>
<?php pageFinish(); ?>
?>

   這種方法基本上解決了前面提到的各種問題。現(xiàn)在文件里只有三行php代碼,而且沒有任何一行代碼直接涉及到模板,因此要改動(dòng)這些代碼的可能性極小。此外,由于HTML內(nèi)容位于php標(biāo)記之外,所以也不存在特殊字符的處理問題。我們可以很容易地將這三行php代碼加入到所有靜態(tài)HTML頁面中。
   require函數(shù)引入了一個(gè)php文件,這個(gè)文件包含了所有必需的與模板相關(guān)的php代碼。其中pageStart函數(shù)設(shè)置模板對(duì)象以及頁面標(biāo)題,pageFinish函數(shù)解析模板然后生成結(jié)果發(fā)送給瀏覽器。
   這是如何實(shí)現(xiàn)的呢?為什么在調(diào)用pageFinish函數(shù)之前文件中的HTML不會(huì)發(fā)送給瀏覽器?答案就在于php 4的一個(gè)新功能,這個(gè)功能允許把輸出到瀏覽器的內(nèi)容截獲到緩沖區(qū)之中。讓我們來看看prepend.php的具體代碼:
復(fù)制代碼 代碼如下:
<?php
require('class.FastTemplate.php');
function pageStart($title = '') {
GLOBAL $tpl;
$tpl = new FastTemplate('.');
$tpl->define( array( 'main' => 'main.htm',
'header' => 'header.htm',
'leftnav'=> 'leftnav.htm' ) );
$tpl->assign('TITLE', $title);
ob_start();
}
function pageFinish() {
GLOBAL $tpl;
$content = ob_get_contents();
ob_end_clean();
$tpl->assign('CONTENT', $content);
$tpl->parse('HEADER', 'header');
$tpl->parse('LEFTNAV', 'leftnav');
$tpl->parse('MAIN', 'main');
$tpl->FastPrint('MAIN');
}
?>

  pageStart函數(shù)首先創(chuàng)建并設(shè)置了一個(gè)模板實(shí)例,然后啟用輸出緩存。此后,所有來自頁面本身的HTML內(nèi)容都將進(jìn)入緩存。pageFinish函數(shù)取出緩存中的內(nèi)容,然后在模板對(duì)象中指定這些內(nèi)容,最后解析模板并輸出完成后的頁面。
   這就是整個(gè)模板框架全部的工作過程了。首先編寫包含了網(wǎng)站各個(gè)頁面公共元素的模板,然后從所有頁面中刪除全部公共的頁面布局代碼,代之以三行永遠(yuǎn)無需改動(dòng)的php代碼;再把FastTemplate類文件和prepend.php加入到包含路徑,這樣你就得到了一個(gè)頁面布局可以集中控制的網(wǎng)站,它有著更好的可靠性和可維護(hù)性,而且網(wǎng)站級(jí)的大范圍修改也變得相當(dāng)容易。
   本文下載包包含
了一個(gè)可運(yùn)行的示例網(wǎng)站,它的代碼注釋要比前面的代碼注釋更詳細(xì)一些。FastTemplate類可以在http://www.thewebmasters.NET/找到,最新的版本號(hào)是1.1.0,那里還有一個(gè)用于保證該類在php 4中正確運(yùn)行的小補(bǔ)丁。本文下載代碼中的類已經(jīng)經(jīng)過該補(bǔ)丁的修正。
php簡易生成靜態(tài)頁面
復(fù)制代碼 代碼如下:
<?php
/*
* 文件名:index.php
*/
require "conn.php";
$query = "select * from news order by datetime desc";
$result = mysql_query($query);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=??????">
<title>NEWS</title>
</head>
<body>
<table width="500" border="1" align="center">
<tr>
<td>標(biāo)題</td>
<td width="200">發(fā)布時(shí)間</td>
</tr>
<?
while($re = mysql_fetch_array($result)){
?>
<tr>
<td><a href="<?= $re["newsid"].".html"?>"><?= $re["title"]?></a></td>
<td><?= $re["datetime"]?></td>
</tr>
<?
}
?>
<tr>
<td> </td>
<td><a href="addnews.php">添加新聞</a></td>
</tr>
</table>
</body>
</html>

復(fù)制代碼 代碼如下:
<?php
/*
文件名:AddNews.php
簡易動(dòng)態(tài)添加生成靜態(tài)新聞頁面
#
# 表的結(jié)構(gòu) `news`
#
CREATE TABLE `news` (
`newsid` int(11) NOT NULL auto_increment,
`title` varchar(100) NOT NULL default '',
`content` text NOT NULL,
`datetime` datetime NOT NULL default '0000-00-00 00:00:00',
KEY `newsid` (`newsid`)
) TYPE=MyISAM AUTO_INCREMENT=11 ;
*/
?>


php生成靜態(tài)網(wǎng)頁的兩個(gè)函數(shù)
在最近幾年,萬維網(wǎng)(也稱環(huán)球信息網(wǎng),即WWW)不斷改變信息處理技術(shù)的面貌。WEB已經(jīng)快速地成為一種有效的媒介,并適合人們和商業(yè)溝通和協(xié)作。幾乎所有的信息技術(shù)領(lǐng)域都普遍受到WEB的影響。Web訪問帶來更多用戶和更多數(shù)據(jù),這意味著給服務(wù)器和數(shù)據(jù)庫更多壓力和最終用戶得到越來越慢的響應(yīng)速度。與不斷靠增加CPU,磁盤驅(qū)動(dòng)器及內(nèi)存來跟上這種增長的需求相比, WEB動(dòng)態(tài)網(wǎng)頁面靜態(tài)化應(yīng)該是一個(gè)更實(shí)用,更經(jīng)濟(jì)的選擇。

php實(shí)現(xiàn)WEB動(dòng)態(tài)網(wǎng)頁靜態(tài)化的具體實(shí)現(xiàn)函數(shù)如function gen_static_file()所示

復(fù)制代碼 代碼如下:
function gen_static_file($program, $filename)
{
$program 1= "/usr/local/apache/htdocs/php/" . $program;
$filename1 = "/usr/local/apache/htdocs/ static_html/" . $filename;
$cmd_str = "/usr/local/php4/bin/php " . $program1 . " } " . $filename1 . " ";
system($cmd_str);
echo $filename . " generated.〈br〉";
}


這個(gè)函數(shù)是實(shí)現(xiàn)靜態(tài)化的關(guān)鍵,即php動(dòng)態(tài)頁面程序不是被送到瀏覽器中,而是輸入到名為$filename的文件中去(如圖2)。兩個(gè)參數(shù)中$program是php動(dòng)態(tài)頁面程序,$filename是生成的靜態(tài)頁面的名字(可根據(jù)需要自己制定命名規(guī)則,這一點(diǎn)很重要,見下文),/usr/local/php4/bin/phpphp中具有把程序輸入文件功能的部分,System是php中執(zhí)行外部命令的函數(shù)。我們還可以看出所有生成動(dòng)態(tài)頁面的php程序需放在/php/目錄下,所有新產(chǎn)生的靜態(tài)頁面則會(huì)出現(xiàn)在/static_html/目錄下(這些路徑可以根據(jù)具體需要設(shè)置)。

下面讓我們舉個(gè)具體例子,看一下college_static.php的靜態(tài)頁面是怎樣生成的。

復(fù)制代碼 代碼如下:
function gen_college_static ()
{
for ($i = 0; $i 〈= 32; $i++〉
{
putenv("province_id=" . $i); //*.php文件從數(shù)據(jù)庫取數(shù)據(jù)時(shí)要用到。
$filename = " college_static". $i . ".html";
gen_static_file("college_static.php", $filename);
}


從這個(gè)函數(shù)我們可以看到通過調(diào)用函數(shù)gen_static_file(), college_static.php經(jīng)過靜態(tài)化,變成了33個(gè)靜態(tài)頁面college.static0.html~college.static33.html,其中$filename會(huì)隨著$I的變化而變化。當(dāng)然也可以從數(shù)據(jù)庫中直接取值,來控制生成的靜態(tài)頁面的個(gè)數(shù)和名字,其他程序?qū)ι傻撵o態(tài)頁面的調(diào)用應(yīng)和靜態(tài)頁面的命名規(guī)則一致。

php技術(shù)比較詳細(xì)PHP生成靜態(tài)頁面教程,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 午夜影院c绿象 | 九九在线精品视频 | 嫩草影院永久在线一二三四 | 99视频免费播放 | 久久草香蕉频线观 | av亚洲色天堂2017 | 伊人久久精品AV无码一区 | 99视频国产在线 | 曰本aaaaa毛片午夜网站 | 奶好大下面流了好多水水 | YELLOW视频直播在线观看高清 | 亚洲人成伊人成综合网久久久 | 久久精品国产在热亚洲完整版 | 孕交videosgratis乌克兰 | 免费国产麻豆传 | 友田真希息与子中文字幕 | 人驴交f ee欧美 | 歪歪漫画羞羞漫画国产 | 打扑克床上视频不用下载免费观看 | 日本一本在线播放 | 日韩吃奶摸下AA片免费观看 | 校园纯肉H教室第一次 | 国产熟妇无码一区二 | 免费看午夜高清性色生活片 | 在线高清视频不卡无码 | 成片免费观看视频在线网 | 色戒在线完整观看在线播放版 | 亚洲一区精品伊人久久伊人 | 色多多污网站在线观看 | 久久99热只有频精品 | 国产三级精品三级在线观看 | 97SE亚洲国产综合在线 | 成 人 动漫3d 在线看 | AV精品爆乳纯肉H漫网站 | 久久视热频国产这里只有精品23 | 热热久久超碰精品中文字幕 | 国内2018年午夜福利5678 | 欧美精品高潮呻吟AV久久 | 国产精品无码人妻在线 | 91精品免费久久久久久久久 | 亚洲 日韩 欧美 另类 蜜桃 |