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