作者: 陳新徵出處: 天極網
前言:現在許多有個人主頁或部落格的朋友選擇租用虛擬主機,而相當一部分虛擬主機支援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下載一個資料
檔
。
?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="english.php"></script>
注意,如果你修改的html檔案和english.php不在一個目錄下,要在src=".. ."裡註明english.php的相對路徑。
把這個修改後的html檔上傳到伺服器,在瀏覽器中開啟。如果你每一步做得都正確,應該就可以看到資料檔案中的內容顯示出來了!過15分鐘刷新頁面看看,是不是顯示的內容變化了?而你並沒有為更新這些內容做什麼額外的勞動,php程式為你做了。
如果你的朋友想在自己的網頁或部落格上實現同樣的功能而又沒有支援php的主機,可以透過以<script language="javascript" src="http://你的網址/程式路徑/english. php"></script>的方式呼叫你主機上的程式來顯示相同的內容。
當然,這個程式也可能有編碼方式不相容的問題,因為內容都是以gb2312編碼顯示出來的,用在UTF編碼的網頁上,中文會變成亂碼。解決的方法不在本文的討論範圍內,請搜尋有關教學。
實作了這個功能,你已經開始從html的靜態世界向php的動態世界進軍了。來日方長,下次,讓我們看看怎麼用php為你的網頁加個「每日星座運勢」功能。
(本文的程式均在php4/php5環境下運行通過。)