前言:
目前網(wǎng)絡(luò)上好多網(wǎng)站的新聞發(fā)布系統(tǒng)都采用了動態(tài)服務(wù)器技術(shù)生成靜態(tài)HTML的做法,這樣做的好處是:一是能減輕其服務(wù)器的負(fù)擔(dān),二是因為生成了HTML靜態(tài)頁面,所以其網(wǎng)站被搜索引擎搜索到的機率更大一些。我曾經(jīng)使用這一動態(tài)技術(shù)來構(gòu)建網(wǎng)站新聞發(fā)布系統(tǒng),其原理也就是應(yīng)用了PHP生成HTML靜態(tài)頁面的技術(shù),相關(guān)平臺是XPSp2+php4.32+mysql,因此,在這里,想簡單地談一下這種做法的思路。這篇文章適合于對PHP+MYSQL操作,SQL語句以及網(wǎng)頁有點基礎(chǔ)的朋友,如果您是一個從頭開始學(xué)的朋友,那么請先打好基礎(chǔ)吧!到這里就不用往下看了。如果您都符合上述條件的話,那么恭喜您,請接著往下看。但是,在具體動手構(gòu)建之前,您還要做好以下幾點準(zhǔn)備工作。
一、具備本地調(diào)試PHP的功能
在WINDOWSXP操作系統(tǒng)下,你可以到網(wǎng)上下載一個PHP+MYSQL+APHCHE的服務(wù)器套裝,下載完后默認(rèn)安裝即可,這樣您就具備了在本地測試PHP的功能了,省去了很多手動配置的麻煩,怎么樣,簡單吧,OK,這僅僅只是第一步。
二、構(gòu)思新聞發(fā)布系統(tǒng)所具備的功能
首頁的新聞發(fā)布往往是通過后臺更新的,后臺的更新無非是由添加、編輯、刪除數(shù)據(jù)等基本的功能所實現(xiàn)的。在這里,你可以使用軟件來構(gòu)建你的想要的后臺界面,其功能的實現(xiàn)當(dāng)然是要用到PHP嘍。這一步建議您先想好新聞發(fā)布系統(tǒng)要有的功能。在這里,如何用PHP添加、編輯、刪除數(shù)據(jù)就不再重復(fù),因為重點是如何在這基礎(chǔ)上生成靜態(tài)技術(shù)。
#?p # 分頁標(biāo)題 # e #
require_once(“conn.php”);//引用conn.php,連接數(shù)據(jù)庫
$title=$_POST[“title”];
$content=$_POST[“content”];//獲得表單變量
well高級語言主要是相對于匯編語言而言,并不是特指某一種具體的語言,而是包括了很多編程語言,如流行的VB、VC、FoxPro、Delphi等,這些語言的語法、命令格式都各不相同。 像最簡單的編程語言PASCAL語言也屬于高級語言。高級語言所編制的程序不能直接被計算機識別,必須經(jīng)過轉(zhuǎn)換才能被執(zhí)行,按轉(zhuǎn)換方式可將它們分為兩類:
1)解釋類:執(zhí)行方式類似于我們?nèi)粘I钪械摹巴暦g”,應(yīng)用程序源代碼一邊由相應(yīng)語言[1] 的解釋器“翻譯”成目標(biāo)代碼(機器語言),一邊執(zhí)行,因此效率比較低,而且不能生成可獨立執(zhí)行的可執(zhí)行文件,應(yīng)用程序不能脫離其解釋器,但這種方式比較靈活,可以動態(tài)地調(diào)整、修改應(yīng)用程序。
2)編譯類:編譯是指在應(yīng)用源程序執(zhí)行之前,就將程序源代碼“翻譯”成目標(biāo)代碼(機器語言),因此其目標(biāo)程序可以脫離其語言環(huán)境獨立執(zhí)行,使用比較方便、效率較高。但應(yīng)用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標(biāo)文件(* .OBJ)才能執(zhí)行,只有目標(biāo)文件而沒有源代碼,修改很不方便。大多數(shù)的編程語言都是編譯型的,例如Visual C++、Visual Foxpro、Delphi等。
//以下建立一文本文檔,其值自動計數(shù)
$countfile=”count.txt”;
if(!file_exists($countfile))
{
fopen($countfile,”w”);//如果此文件不存在,則自動建立一個
}
$fp=fopen($countfile,”r”);
$num=fgets($fp,20);
$num=$num+1;//每次其值自動加一
fclose($fp);
$fp=fopen($countfile,”w”);
fwrite($fp,$num);//更新其值
fclose($fp);
[Ctrl+A全部選擇然后拷貝]
//利用上面自動計數(shù)的值獲得HTML的路徑$path
$houzui=”.html”;
$path=$num.$houzui;
//這樣形成的路徑是自動增長的,如1.html,2.html,3.html……….添加一條新聞便自動加上1
//以下用SQL語句添加數(shù)據(jù)至表news
$sql=”insertintonews(title,content,path)values(‘”.$title.”’,’”.$content.”’,’”.$path.”’)”;
$query=mysql_query($sql);
//以下為關(guān)鍵之處,把從表單獲得的數(shù)據(jù)替換模板中的{title},{content}標(biāo)記$fp=fopen(“model.htm”,”r”)//只讀打開模板
$str=fread($fp,filesize(“mode.htm”));//讀取模板中內(nèi)容
$str=str_replace(“{title}”,$title,$str);
$str=str_replace(“{content}”,$content,$str);//替換內(nèi)容
fclose($fp);
$handle=fopen($path,”w”);//寫入方式打開新聞路徑
fwrite($handle,$str);//把剛才替換的內(nèi)容寫進生成的HTML文件
fclose($handle);
代碼拷貝框
[Ctrl+A全部選擇然后拷貝]
//收尾工作:
echo“<ahref=$pathtarget=_blank style=”margin: 0px; padding: 0px;”>查看剛才添加的新聞”;
代碼拷貝框
[Ctrl+A全部選擇然后拷貝]
OK,整個生成HTML的示例源碼就到這里,其關(guān)鍵是用了替換的方法。
$str=str_replace(“{被替換的內(nèi)容}”,$替換的內(nèi)容,$str);
因此,總結(jié)一下以上的做法:先設(shè)計好新聞模板,把需要被替換的內(nèi)容用{}放到模板中相應(yīng)的位置,然后設(shè)計表單,再是最后的表單處理程序,把從表單中獲取的變量替換模板中相應(yīng)的內(nèi)容即可,這樣每次都會生成不同的HTML;如果需要修改HTML的內(nèi)容也是一樣的,獲得修改后的表單內(nèi)容后,先用update語句更新數(shù)據(jù)庫,再重新替換一下模板中的內(nèi)容即可;刪除的話,先delete表中要刪除的內(nèi)容,再用unlink($path)來刪除HTML的物理文件即可。