top
Loading...
用郵件來發送表單數據

使用PHP 向一個指定的郵箱發送數據是非常簡單的一件事情,以至于你可能會想,為什么人們不每天用它呢?PHP 提供的mail()函數使用四個參數:收信人,主題,郵件信息和附加的郵件頭。通過這個簡短的教程,你將學會如何設置這些參數的值,然后發送一封郵件和返回一個確認頁面。我們將通過兩步來實現:準備表單文件和編寫PHP 程序處理表單數據,發送郵件和返回結果。注意:在這個例子中,PHP 文件名后綴用".php3"。如果你使用的PHP 文件名后綴與此處不同,如".phtml",".php",請做相應的修改。

第一步,使用你常用的編輯器創建表單的HTML頁面。就我個人來說,我習慣于使用"show/do" 方式處理多步的應用:如果一個文件名以"show_" 開頭,它通常是一個表單文件,如果以"do_" 開頭則通常是PHP 代碼。所以在這里我創建的文件"show_form.html",它包含有兩個文本域和一個多行文本域,如下所示:




E-Mail Form





你的名字:




你的郵件地址:




信件內容:











讓我們一部分一部分地查看這段代碼。首先表單的動作(action)被設為"do_sendform.php3"。這個文件就是你將要處理表單數據和發送郵件的程序文件。然后我們使用了兩個文本域和一個多行文本域。缺省的,輸入域(input field) 的名字作為傳遞給"do_sendform.php3"的變量名。所以,當表單被發送后,我們將傳遞三個變量給"do_sendform.php3":$sender_name,$sender_email和$message。 在這個教程中,你將會給你自已發郵件,所以收信人的信箱和郵件主題都將在PHP 腳本中編程實現。

是不是感到很簡單?OK,讓我們來看一看PHP 代碼吧。在你的編輯器里創建"do_sendform.php3"文件。
在開始處加入代碼:



如果你不知道變量跟蹤選項(track_vars)是否打開,加入這行語句將可以保證至少在這個腳本中,變量跟蹤是允許的。

下面就要將表單數據連接成一個長字符串。你可以在適當的地方加入回車(n)和制表符(t)。在你的PHP代碼加入下面的片段:


$msg = "Sender Name:t$sender_namen";

在這行里,你創建了$msg變量用來保存消息串,首先加入了"Sender Name:"字符串,跟著是$sender_name的值和一個回車符。當這個腳本被執行后,變量$sender_name將被輸入到表單中的文字替換。

繼續在$msg的后面追加新的字符串。注意當在原來的變量后面加入新的字符串時,可以使用 .= 操作符。

$msg .= "Sender E-Mail:t$sender_emailn";
$msg .= "Message:t$messagenn";

最后一行包含了兩個回車符。做到這里,你創建了一個很長的字符串,就象:

$msg = "Sender Name:t$sender_namenSender E-Mail:t$sender_emailnMessage:t$messsagenn";

不管怎么樣,當你不得不查找某一行文本進行修改時,使用連接符和用空白來分隔你的代碼可以讓以后的修改變得容易一些。記住,空白是你的朋友... 并且會讓那些不得不編輯你的東西的伙計們認為你是一個受歡迎的人。

在這個教程開始的時候,我已經說過mail()函數有四個參數:收信人,主題,郵件信息和附加的郵件頭。
現在在你的代碼里,你可以創建變量來控制它們的值 - recipient(收信人),subject(主題)和mailheaders(郵件頭);

$recipient = "you@youremail.com";
$subject = "Web Site Feedback";

很明顯,在這里使用了你自已的郵箱和你想要的任意主題。接著,創建一個郵件頭的變量。一些基本的郵件頭是"From"和"Reply-To"。創建一個名為$mailheaders的變量,象下面方式加入:

$mailheaders = "From: My Web Site <> n";
$mailheaders .= "Reply-To: $sender_emailnn";

在"From"頭中使用"<>"來表示一個空的郵件地址。你可以象"Reply-To"頭一樣把變量$sender_name放在"From"頭中,但是如果用戶沒有錄入sender_name字段,一個空的"From"頭將不能通過你的郵件服務器。最好填一些一般的東西,使用"Reply-To"頭做為發送者的回復郵箱地址。

現在你已經有了全部mail()函數所需要的東西,現在將mail()函數放入你的代碼:

mail($recipient, $subject, $msg, $mailheaders);

最后,你應該返回一些信息給用戶,通知他們表單已經被發送了。另外說一下,你應該考慮到可能某個人會坐在這里,點擊百萬次發送按鈕,使你的郵箱癱瘓。在你的PHP 代碼中加入下面幾行:

echo "表單已經發送完畢!";
echo "

謝謝你, $sender_name

";
echo "

反饋表發送完畢

";
echo "";

?>

使用變量$sender_name作為返回給用戶屏幕的內容,作為一種客戶化的輸出。或者,也許是作為一種友好的表示。在任何情況下,應該讓用戶感到友好,這樣他們才會回頭訪問你的站點。

你全部的PHP 代碼看上去應該象下面:


$msg = "Sender Name:t$sender_namen";
$msg .= "Sender E-Mail:t$sender_emailn";
$msg .= "Message:t$messagenn";

$recipient = "you@youremail.com";
$subject = "Web Site Feedback";


$mailheaders = "From: My Web Site <> n";
$mailheaders .= "Reply-To: $sender_emailnn";

mail($recipient, $subject, $msg, $mailheaders);

echo "表單已經發送完畢!";
echo "

謝謝你, $sender_name

";
echo "

反饋表發送完畢

";
echo "";

?>

當然你可以根據你的使用環境自由地替換標簽的名字,空白和其它項目。如果想學習更多的內容,參考PHP 手冊中關于郵件處理部分的內容。
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗