3 php實踐
php的許多特點與其他軟體或者工具有關。利用迄今為止我們所學到的php知識,我們可以試著建立乙個簡單互動的**。利用這一過程我們又可以學到不少東西。好吧,我們現在開始專注於乙個典型個人**的建設。
3.1 計畫乙個站點
一般乙個個人站點包括乙個歡迎頁面、乙個留言本頁面、乙個書籤鏈結頁面、乙個計數器、聯絡資訊,甚至還有**集和一些**檔案等等。讓我們從乙個標題頁面、乙個聯絡資訊頁面和乙個簡歷頁面開始。我們同樣需要標準的通用的頁面頭部和底部。
標題頁面--front.html
這裡我們有乙個非常簡單的html檔案:
我的個人主頁--歡迎
歡迎來我的寒舍,雖然這裡現在暫時還沒有什麼。
不過我希望馬上就可以多起來。
copyright ? 我自己,1999
聯絡資訊頁面--count.html
同樣我們又有了乙個簡單頁面:
我的個人主頁--聯絡資訊
你可以通過1-800-php-info聯絡我
copyright ? 我自己,1999
3.2 html到php
從上面你可以看出,每個頁面有相同的頭部和底部。像上面那樣每個頁面都寫入相同的資訊在工作量少的時候還可以,但是想象一下當有100多頁面且你需要全部更改其頭部或底部時你要花費多大精力?一頁一頁的手工更改是一件多麼冗長無趣的事情啊!所以我們應該為這些頁面編寫php的頭部和底部檔案,之後我們只要在每個html頁面中引用它們就行了。我們將把這些include檔案放在乙個叫include的子目錄下。下面我們就把這些站點的通用內容寫進檔案中。
全站通用變數設定:common.inc
// 全站通用變數
$myemail = "[email protected]";
$myemaillink = "$myemail";
$myname = "php talk";
$mysitename = $myname."'s home page";
?>
通用頁面頭部:header.inc
// 定義通用頁面頭部
?>
echo "$mysitename - $title"; ?>
通用頁面底部:footer.inc
// 通用頁面底部
?>
copyright ? by
echo "$myname ($myemaillink)"; ?>
, 1999
新的頁面front.php3:
include("include/common.inc");
$title = "welcome";
include("include/header.inc");
?>
歡迎來我的寒舍,雖然這裡現在暫時還沒有什麼。
不過我希望馬上就可以多起來。
include("include/footer.inc");
?>
新的cont.php3:
include("include/common.inc");
$title = "contact information";
include("include/header.inc");
?>
你可以通過1-800-php-info聯絡我
include("include/footer.inc");
?>
現在你就可以猜出這樣安排的好處了。如果你想改動頁面的頭部或者底部,你只需要改動相應的檔案就可以了。如果你要修改你的e-mail位址甚至你的名字,只要修改common.inc檔案就行了。另外值得注意的是你可以把具有任何檔名或者副檔名的檔案包含進你的檔案中,你甚至可以包含其他站點上的檔案。
3.3 計數器
讓我們在首頁上加上乙個計數器。這個例子已經被講過多次了,但是還是有利於演示怎樣讀寫檔案以及建立自己的函式。counter.inc包含以下**:
/* 乙個簡單的計數器
*/function get_hitcount($counter_file)
// 增加一次計數值
$count++;
// 將新的計數值寫入檔案
$fp=fopen($counter_file,"w");
fputs($fp,$count);
fclose($fp);
# 返回計數值
return ($count);
}?>
然後我們更改front.php3檔案以顯示這個計數器:
include("include/counter.inc");
// 我把計數值放在檔案counter.txt中,讀出並輸出
printf ("%06d
\n",
get_hitcount("counter.txt"));
include("include/footer.inc");
?>
看看我們的新front.php3
3.4 反饋表單
讓我們再新增乙個反饋表單以便你的瀏覽者填寫並e-mail給你。舉例來說我們用一種很簡單的方法實現它,我們只需要兩個頁面:乙個為瀏覽者提供輸入表單;乙個獲得表單資料並處理、mail給你。
php中獲取表單資料是很簡單的。當乙個表單被傳送後,表單中所包含的各個元素被賦上了相應的值,而這樣就可以像引用一般變數一樣使用了。
在process_form.php3中,變數$mytext就被賦予了輸入的值--非常簡單!同樣的,你可以從列表框、多選框、單選框、按鈕等表單元素中取得變數值。你唯一要做的就是為表單中的每乙個元素取名以便將來可以引用。
根據這個方法,我們可以生成乙個簡單的包含三個元素的表單:姓名、e-mail位址和留言。當瀏覽者傳送表單後,處理該表單的php頁面(sendfdbk.php3)讀取資料,檢查姓名是否為空,最後將資料mail給你。
表單:form.php3
include("include/common.inc");
$title = "feedback";
include("include/header.inc");
?>
include("include/footer.in程式設計客棧c");
?>
處理表單:sendfdbk.php3
include("include/common.inc");
$title = "feedback";
include("include/header.inc");
if ( $name == "" )
elseif ($name == "your name")
else
include("include/footer.inc");
?>
3.5 簡單的站內搜尋引擎
php可以呼叫外部程式。程式設計客棧在unix環境下我們可以利用程式grep實現乙個簡單的搜尋引擎。我們可以做的稍微複雜一些:使用乙個頁面既輸出乙個表單供使用者輸入搜尋字串又輸出查詢結果。
include("include/common.inc");
$title程式設計客棧 = "search";
include("include/header.inc");
?>
if ( ! empty($searchstr) )
// 現在我們將結果儲存在陣列中,下面就可以處理並輸出了
if ( count($myresult) )
else
pclose($fp);
}?>
include("include/footer.inc");
?>
注釋:php_self是php內建的變數。包含當前檔名。
fgets()按行讀取檔案,最多4096(指定)字元長度。
fgetss()與fgets()相似,只是解析輸出的html標記。
split()有乙個引數是2,因為我們只需要把輸出分成兩部分。另外需要省略":"。
each()是乙個陣列操作函式,用來更方便的遍歷整個陣列。
popen()、pclose()與fopen()、fclose()的功能很相似,只是增加了管道處理。
請注意以上的**並不是實現乙個搜尋引擎的好辦法。這只是有助於我們更好學習php而舉出的乙個例子而已。理想的情況是你應該建立乙個包含關鍵字的資料庫然後進行搜尋。
本文標題: 3.從例項開始
本文位址:
從例項中理解框架
目前,各種開發框架非常流行,那麼,什麼是框架 framework 框架是如何產生的?為什麼要使用框架,以及使用框架能給我們的開發帶來什麼樣的好處呢?下面就以我們熟悉的web框架為基礎來加深對框架的理解。在不使用struts或者springmvc等web層框架時,一直是由servlet完成業務邏輯的實...
從例項中深入理解fork
原共有17個fork例項,此日誌從中挑選部分例項進行學習,由簡入難 include include include include include include intmain int argc,char ar return0 總覽void fork1 else printf bye from p...
小郝推薦 《從例項走進OPhone世界》
書名 從例項走進 ophone 世界 書號 isbn 978 7 111 33030 1 定價 45.00 含1cd 2011年3 月 l 帶您零基礎入門,用不一樣的解讀助您提高 l全部例項基於 ophone sdk 2.0 l例項 分析和指導讓您插上程式設計的翅膀 l中國移動研究院 ophone ...