開車新手上路 PHP新手上路(六)

WBOY
發布: 2016-07-29 08:34:56
原創
967 人瀏覽過

建立一個簡單互動的網站(二)
5.5 計數器
  讓我們在首頁上加上一個計數器。這個例子已經被講過多次了,但是還是有利於示範怎樣讀寫檔案以及建立自己的函數。 counter.inc包含以下程式碼:

/*
|| 一個簡單的計數器
*/
function get_hitcount($counter_file)
{
/* 將計數器歸零
這樣如果計數器還未被使用,初始值將是1
你當然也可以把初始值設為20000來騙人咯
*/
$count=0;
// 如果存放計數器檔案已經存在,請讀取其中的內容
if ( file_exists($counter_file) )  
{
$fp=fopen($counter_file,"r");
// 我們只取了前20位,希望你的網站不要太受歡迎啊
$count=0+fgets($fp,20);
// 由於函數fgets()返回字串,我們可以透過加0的方法將其自動轉換為整數
fclose($fp);
// 對檔案操作完畢
}
// 增加一次計數值
$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
5.6 回饋表單
  讓我們再增加一個回饋表單以便你的瀏覽者填寫並e-mail給你。舉例來說我們用一個很簡單的方法實現它,我們只需要兩個頁面:一個為瀏覽者提供輸入表單;一個獲得表單資料並處理、郵件給你。
  PHP中取得表單資料是很簡單的。當表單被傳送後,表單中所包含的各個元素被賦上了對應的值,而這樣就可以像引用一般變數一樣使用了。


FORM>
  在process_form.php3中,變數$mytext就被賦予了輸入的值--非常簡單!同樣的,你可以從列錶框、多選框、單選框、按鈕等表單元素取得變數值。你唯一要做的就是為表單中的每一個元素取名以便將來可以引用。
  根據這個方法,我們可以產生一個簡單的包含三個元素的表單:姓名、e-mail地址和留言。當瀏覽者發送表單後,處理該表單的PHP頁面(sendfdbk.php3)讀取數據,檢查姓名是否為空,最後將數據發郵件給你。
表單:form.php3

include("include/common.inc");
$title = "回饋";
include("include/header.inc") ;
? >











表格>


include("include/footer.inc");
? >
處理表單:sendfdbk.php3

include("include/common.inc");
$title = "回饋";
include("include/header.inc ");
if ( $name == "" )  
{
// 現在我很討厭匿名的留言!
echo "呃?你怎麼匿名了?";
}  
elseif ($name == "你的名字")  
{
//瀏覽者確實不想透露姓名啊!
echo "你好? 你的名字 應該替換為
你的真實姓名!
";
}  
else  
{
{
{
else  
{
{
//寫一段禮儀的感謝語
echo "
你好,$name。


謝謝你非常感謝您的回饋


$MyName
$MyEmailLink
";
//最後郵件出去
mail($MyEmail, "Feedback.","
姓名: $name
電子郵件: $email
評論: $comment  
") ;
}
include("include/footer.inc");
? >
注意:如果在您的測試過程中,程式最終能正常運作,請查看您的PHP設定檔(PHP3為php3.ini,PHP4為php.in)有沒有設定好。因為本程式您需要PHP設定檔作如下的設定:
首先,用記事本打開你的php3.ini或php.ini文件,看看[郵件功能]有沒有設定好,預設的情況如下所示:
SMTP = localhost  
sendmail_from = me@localhost.com
給SMTP設定SMTP伺服器,最好是你本地的SMTP伺服器,我這裡以21cn的SMTP伺服器為例,然後,在sendmail_from處填上你的E-MAIL位址,例如可以改成這樣:
SMTP = smtp.21cn.com
sendmail_from = pert@21cn.com  修改後別忘了重新啟動Apache、IIS或PWS服務哦。  5.7 簡單的站內搜尋引擎
include("include/common.inc");
$title = "Search";
include("include/header.inc");
?>
? >


" METHOD="POST">
"
SIZE="20" MAXLENGTH="30">




if ( ! empty($searchstr) )  
{
// empty()用來檢查查詢字串是否為空
// 如果不為空,呼叫grep查詢
echo "
n";
// 呼叫grep對所有檔案進行大小寫非敏感模式的查詢
$cmdstr = "grep -i $searchstr *";
$fp = popen( $cmdstr, "r" ); // 執行指令並輸出管道
$myresult = array(); // 儲存查詢結果
while( $buffer = fgetss ($fp, 4096 ))  
{
// grep回傳這樣格式: 檔名:符合字串出現行數
// 因此我們利用函數split()分離處理資料
list($fname, $fline ) = split(":",$buffer, 2);
// 我們只輸出第一次匹配的結果
if ( !defined($myresult[$fname]))
$myresult[ $fname] = $fline;
}
// 現在我們將結果儲存在陣列中,下面就可以處理並輸出了
if ( count($myresult) )
{
echo "
    n";
    while(list($fname,$fline) = each($myresult))
    echo "

  1. $fname : $fline
  2. n";
    echo "
n";
}  
else  
{
// 如果沒有查詢結果
echo "Sorry. Search on $searchstr
returned no results.
n";
}
pclose($fp);
}
?>

include("include/footer.inc");
?>
註:
PHP_SELF是PHP內建的變數。包含目前檔案名稱。  
fgets()按行讀取文件,最多4096(指定)字元長度。  
fgetss()與fgets()相似,只是解析輸出的HTML標記。  
split()有一個參數是2,因為我們只要把輸出分成兩個部分。另外需要省略":"。  
each()是一個陣列運算函數,用來更方便的遍歷整個陣列。  
popen()、pclose()與fopen()、fclose()的功能很相似,只是增加了管道處理。  
請注意以上的程式碼並不是實現搜尋引擎的好辦法。這只是有助於我們更好地學習PHP而舉出的例子而已。理想的情況是你應該建立一個包含關鍵字的資料庫然後進行搜尋。   

以上就介紹了開車新手上路 PHP新手上路(六),包括了開車新手上路方面的內容,希望對PHP教程有興趣的朋友有所幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板