PHP實(shí)現(xiàn)網(wǎng)頁自動更新塊
作者: 陳新征 出處: 天極網(wǎng)
前言:現(xiàn)在很多有個(gè)人主頁或者博客的朋友選擇租用虛擬主機(jī),而相當(dāng)一部分虛擬主機(jī)支持php。如果你有一個(gè)支持php的主機(jī)空間,有沒有用php把自己的網(wǎng)站武裝起來呢?
能不能讓php為你的網(wǎng)頁添加一些每隔一段時(shí)間就自動更新的內(nèi)容,以更好的吸引訪客呢?實(shí)現(xiàn)這一功能并不需要太高深的編程知識,請看以下例子:
(一)英語諺語
讓我們來看一個(gè)簡單的應(yīng)用:讓php程序從數(shù)據(jù)庫中隨機(jī)提取一行記錄,顯示在網(wǎng)頁上,隔15分鐘再去讀取另一條記錄。英漢對照的諺語是個(gè)適合顯示的內(nèi)容。
考慮到放置個(gè)人主頁的廉價(jià)虛擬主機(jī)多數(shù)不支持MySQL之類的數(shù)據(jù)庫,我們使用文本型數(shù)據(jù)文件來存放數(shù)據(jù),這對于流量不很大的網(wǎng)站來說足夠了。建立一個(gè)文本文件,命名為english.dat,內(nèi)容如下:
A bad beginning makes a bad ending. 惡其始者必惡其終。
A bad bush is better than the open field. 有勝于無。
A bad compromise is better than a good lawsuit. 吃虧的和解也比勝訴強(qiáng)。
A bad conscience is a snake in one’s heart. 做賊心虛。
A bad custom is like a good cake, better broken than kept. 壞習(xí)慣像鮮餡餅,分食要比保存好。
A bad padlock invites a picklock. 開門揖盜。
……
注意,每行是一條完整的記錄,中間不要換行;文件中不能有半角的雙引號( ' )否則在輸出數(shù)據(jù)時(shí)程序會解析出錯(cuò)。網(wǎng)上有很多這樣的內(nèi)容,搜索一下即可,也可以去我的網(wǎng)站http://www.musicfly.net/english.dat下載一個(gè)數(shù)據(jù)文件。
下面就是編寫讀取數(shù)據(jù)的程序了。建立一個(gè)文本文件,命名為english.dat,加入源代碼如下:
<?php$filename = ’english.dat’; //數(shù)據(jù)文件名$refresh = 900; //更新周期(以秒為單位,可根據(jù)需要自行調(diào)整)$data = file($filename); //將數(shù)據(jù)文件裝入一個(gè)數(shù)組$num_lines = count($data); //數(shù)據(jù)文件行數(shù),也就是記錄條數(shù) mt_srand(floor(time() / $refresh));$id = mt_rand(0, $num_lines - 1); //隨機(jī)選擇一條記錄號$content = chop($data[$id]); //根據(jù)記錄號選擇相應(yīng)的數(shù)據(jù),并截去最后的換行符
echo 'document.write('$content');'; //用javascript形式輸出數(shù)據(jù)?>;
將english.dat和english.php存盤,上傳至服務(wù)器的同一個(gè)目錄下。
最后一道工序就是讓你的網(wǎng)頁調(diào)用這個(gè)php程序來顯示內(nèi)容了。因?yàn)閜hp運(yùn)行的結(jié)果是以javascript形式輸出的,我們只要把這段php當(dāng)成一段javascrupt來調(diào)用即可,方法是:用記事本或網(wǎng)頁編輯軟件打開你要修改的html文件,在你想讓動態(tài)內(nèi)容顯示的位置加入以下代碼:
<script language='javascript' src='http://www.aoyou183.cn/bcjs/english.php'></script>
注意,如果你修改的html文件和english.php不在一個(gè)目錄下,要在src='http://www.aoyou183.cn/bcjs/...'里注明english.php的相對路徑。
把這個(gè)修改后的html文件上傳至服務(wù)器,在瀏覽器中打開。如果你每一步做得都正確,應(yīng)該就可以看到數(shù)據(jù)文件中的內(nèi)容顯示出來了!過15分鐘刷新一下頁面看看,是不是顯示的內(nèi)容變化了?而你并沒有為更新這些內(nèi)容做什么額外的勞動,php程序?yàn)槟阕隽恕?/P>
如果你的朋友想在自己的網(wǎng)頁或者博客上實(shí)現(xiàn)同樣的功能而又沒有支持php的主機(jī),可以通過以<script language='javascript' src='http://你的網(wǎng)址/程序路徑/english.php'></script>的方式調(diào)用你主機(jī)上的程序來顯示同樣的內(nèi)容。
當(dāng)然,這個(gè)程序還可能存在編碼方式不兼容的問題,因?yàn)閮?nèi)容都是以gb2312編碼顯示出來的,用在UTF編碼的網(wǎng)頁上,中文會變成亂碼。解決的方法不在本文的討論范圍內(nèi),請搜索有關(guān)教程。
實(shí)現(xiàn)了這個(gè)功能,你已經(jīng)開始從html的靜態(tài)世界向php的動態(tài)世界進(jìn)軍了。來日方長,下一次,讓我們看看怎樣用php為你的網(wǎng)頁加個(gè)“每日星座運(yùn)勢”功能。
(本文的程序均在php4/php5環(huán)境下運(yùn)行通過。)
