使用PHP完成動態(tài)頁面
發(fā)表時間:2024-06-09 來源:明輝站整理相關軟件相關文章人氣:
[摘要]據(jù)Merriam-Webster Online地解釋,動態(tài)一詞的意思是網頁的內容由“通常是連續(xù)的和實時生成的活動或者改變的信息組成!币虼水斘覀冋務搫討B(tài)數(shù)據(jù)的時候,我們也就是在談論作為Web頁面發(fā)送給用戶的信息是由不同的源數(shù)據(jù)組合而成的。這與靜態(tài)網頁的概念是相對的,靜態(tài)網頁的內容并不依賴用戶輸入的...
據(jù)Merriam-Webster Online地解釋,動態(tài)一詞的意思是網頁的內容由“通常是連續(xù)的和實時生成的活動或者改變的信息組成!币虼水斘覀冋務搫討B(tài)數(shù)據(jù)的時候,我們也就是在談論作為Web頁面發(fā)送給用戶的信息是由不同的源數(shù)據(jù)組合而成的。這與靜態(tài)網頁的概念是相對的,靜態(tài)網頁的內容并不依賴用戶輸入的數(shù)據(jù)而改變而且通常是直接解析給用戶。Web頁面上的動態(tài)信息有三種主要的類型:
動態(tài)數(shù)據(jù)--在一個Web頁面里產生的變量。
動態(tài)Web頁面--整個Web頁面都是動態(tài)生成的。
動態(tài)內容--Web頁面的一部分是動態(tài)生成的。
你如果希望對動態(tài)內容產生的過程進行細微的控制,就象動態(tài)數(shù)據(jù)的那種類型一樣,那么數(shù)據(jù)處理的過程就會復雜一些。而如果你想生成大范圍的信息,就象動態(tài)Web頁面的生成那樣,那么程序的邏輯就會變得復雜。動態(tài)內容的生成是這兩種方式的折衷,它能夠讓我們使用兩個很有用的PHP函數(shù),include()和require()。
要記住,你在后端加入的邏輯越多,那么你的Web站點的性能將會損失得越嚴重。幸運的是,PHP能夠很流暢的進行預處理過程,所以當我在處理動態(tài)內容和數(shù)據(jù)的時候都盡可能多的使用PHP的功能。
數(shù)據(jù)源和PHP功能
所有的動態(tài)內容都有一個共同點:它們從一個原始頁面以外的數(shù)據(jù)源而來。圖A列出了一些常見的數(shù)據(jù)源以及用來處理它們的相應的PHP函數(shù)。
Figure A
數(shù)據(jù)源
PHP 函數(shù)
注釋
User
$HTTP_POST_VARS
$HTTP_GET_VARS
這些函數(shù)處理由用戶通過Web表單直接輸入的數(shù)據(jù)。
Database (local or remote)
<dbtype>_connect()
<dbtype>_pconnect()
<dbtype>_close()
<dbtype>_<function>()
example:
mysql_fetch_array()
這些都只是PHP許多數(shù)據(jù)庫訪問函數(shù)中的一部分,許多函數(shù)是為每個不同的數(shù)據(jù)庫特別編寫的。你能夠在PHP函數(shù)參考手冊里找到這些函數(shù)的完整列表。
Remote file
fopen(), fclose()
fgets(), fputs()
這些函數(shù)處理一個遠程服務器上文件中的數(shù)據(jù),這個文件可以通過FTP訪問。
Local file
include(), require()
fopen(), fclose()
這些函數(shù)處理位于本地服務器上的文件中的數(shù)據(jù),比方說配置文件。
常見的數(shù)據(jù)源和處理它們的PHP函數(shù)
在這篇文章“教程:PHP起步中,”我們觀看了一個演示的腳本,這個腳本要求用戶輸入他們最喜歡的數(shù)字。根據(jù)用戶輸入的結果,我們在Web頁面上顯示一條消息。這就是一個由用戶驅動的動態(tài)Web內容的例子。從Web表單返回的結果將決定顯示的內容。一個更復雜的例子是“點擊流程”應用程序,這個程序能夠根據(jù)一個用戶在Web站點上訪問過的頁面來決定向他或者她發(fā)送什么廣告。
一旦數(shù)據(jù)已經輸入,不管它是由用戶或者其它的方式輸入的,將會被保存在一個數(shù)據(jù)庫中并在以后重新使用。如果它被用來決定顯示的內容,那么這些內容將可以被認為是“由數(shù)據(jù)庫驅動的動態(tài)內容!蔽覀儗⒃谙乱黄恼轮懈屑毜目纯催@種類型的動態(tài)信息。 目前,讓我們先察看一個由文件驅動的動態(tài)內容的簡單的PHP腳本的例子。我們將使用基于一個配置文件的邏輯來決定在Web頁面上應該顯示什么樣的頁面風格和字體。我們選擇的頁面風格將會在用戶請求Web頁面的時候顯示出來。(這里我想就包括文件的例子給你提個醒:你真的應該在這個例子中為完成要求的功能而使用風格頁。)
例子程序:Display.php
Display腳本使用一個獨立的配置文件來包含變量值和幾個含有HTML的變量部分的包括文件。雖然這看起來不是特別動態(tài),但是你能夠輕易的要求用戶使用Web表單來創(chuàng)建一個配置文件并使用一定的邏輯來判斷應該加載哪一個配置文件,等等。(我們在“理解PHP的函數(shù)和類”這篇文章中所作的討論將幫助你完成這個工作。)
由于本文的目的所限,我們將跳過這方面的處理過程并盡量使它簡化。表A展示了我們的主頁面,以及你通過瀏覽器調用的頁面,Display.php。(PHP代碼將用粗體進行顯示。)
表A
這段簡單的代碼必須做三件事情:
使用PHP include()函數(shù)來包含<!-- display.php 這個Web頁面的風格由一個配置文件決定 -->
<html>
<head>
<title>Mood Page</title>
</head>
<?php
include("displayconf.php");
$required_file = $display.".php";
require $required_file;
?>
<br><br>
<center>This is the best "mood page" ever!</center>
</font>
</body>
</html>
Displayconf.php中的變量并對它們進行求值。
創(chuàng)建一個表示用戶請求的文件名的變量。在我們這個例子中,Displayconf.php文件里定義的變量$display被求值,然后加上.php后綴。(這是由我們的邏輯完成的。)
使用PHP的require()函數(shù)顯示正確的包含文件里的內容。
你應該注意到在我們的例子中,PHP require()函數(shù)和include()函數(shù)是完全可以互換的。這兩個函數(shù)之間主要的區(qū)別在于目標文件處理的方式不同。一個require()語句將會由它所調用的文件替換。這意味著在一個循環(huán)當中,遠程的文件只會被調用一次。而另一方面,在每次遇到include()函數(shù)的時候,它都會被重新求值。這意味著在一個循環(huán)的過程中,文件將在每一次循環(huán)過程中都被訪問一次,而且在包括文件中設置的變量每次都會更新。
在這個例子中,我試圖講清楚什么時候使用什么函數(shù)合適。對于文件Displayconf.php,很有可能它里面的變量值已經改變。畢竟,這是一個配置文件。因此,我選擇了include()函數(shù)。而另一方面,$required文件在交互的過程中很有可能不會改變。如果用戶請求的是不同的文件體,那么我們有可能會創(chuàng)建一個新的文件再把它包括進來,所以我使用require()函數(shù)。
高級用戶可能希望看看PHP的手冊來了解更多的關于函數(shù)require_once() 和 include_once() 的信息以便能夠對文件處理和配置文件變量的管理進行更好的控制。
表B 顯示了我們的配置文件,Displayconf.php。(為了簡單化的目的,我們將把所有的文件放在和Web服務器相同的目錄下。)我們在這里要做的就是將$display變量設置成一個可選的值。
表B
<?php# displayconf.php
# display.php 的配置文件
# -------------------------------------------------
# 將變量 $display 設置成下列值之一:
# happy, sad, 或者 generic
$display = "happy";
?>
最后我們需要一些內容文件--對應配置文件中的每一個選項。因為這些內容都是靜態(tài)的HTML,所以我們不需要在文件里加上PHP腳標。當你在PHP里使用include()或者require()函數(shù)的時候,被調用的文件在處理過程開始的時候被跳過然后在處理結束的時候被加進來。
"happy"文件內容(happy.php)
<body bgcolor=pink text=yellow>
<font size="+5">
"Sad" 文件內容 (sad.php)
<body bgcolor=blue text=white>
<font face="arial, helvetica" size="+5">
"Generic" 文件內容 (generic.php)
<body bgcolor=white text=black>
<font face="courier" size="+5">
當你單擊頁面Display.php的時候,這個頁面的外觀和感受將會根據(jù)你在配置文件中輸入的值而改變。
總結
在本文中,我們討論了動態(tài)信息的基礎知識并使用一個腳本來創(chuàng)建由文件驅動的動態(tài)內容。特別的是,我們使用include() 和 require() PHP函數(shù)來提取和發(fā)送我們的數(shù)據(jù)。
下面是一些最后的話。雖然我相信你一定熟悉WAI Web編程指南,但是你也許還應該看看W3C對于動態(tài)內容所說的支配以及用戶對它的訪問能力。你可能還要看看PHP手冊中的這一章“使用遠程文件”來學習如何使用FTP來提取配置數(shù)據(jù)。