實(shí)例學(xué)習(xí)PHP之意見信箱篇
Jun 21, 2016 am 09:02 AM?
?
當(dāng)使用者在參觀網(wǎng)頁時,有時想 Email 給 Webmaster 但是再執(zhí)行 Email 程式總是不方使,使用者在按下 mailto:abc@abc.abc.tw 還要花段時間打開自己這兒的 Outlook 豈不麻煩。這時,若是 Homepage 能提供寫信的功能就太酷了。同時意見信箱還是以提醒或者要求使用者一定要填入哪些資料,這對資料倉儲而言,也是了解客戶的最好方法。
整個意見信箱其實(shí)就像 Outlook 或者其它電子郵件軟體,開啟寄發(fā)新郵件的功能,不同的地方在于使用 Outlook 時,寄件人是固定的,而要填上收件人的地址;而網(wǎng)站上的意見信箱,收件人幾乎都是 Webmaster,反而是要填上寄件人的電子郵件地址。當(dāng)然另一個不同之處是 Outlook 處理寄信的動作;而意見信箱是由 Web 伺服器處理使用者發(fā)送的信件。
在更進(jìn)階的設(shè)計(jì)后,甚至可以變成 Web Mail,像 HotMail 般,只要用瀏覽器就可以在任何地方用任何電腦收發(fā)信件。
當(dāng)然,也可以做進(jìn)階的設(shè)計(jì),將使用者的意見儲放在資料庫中,留待日后整理成更有用的資料。不過這就不是這節(jié)要討論的部份了。
在 UNIX 的系統(tǒng)中,大部份和電子郵件有關(guān)的問題都和 sendmail 有關(guān),除非系統(tǒng)管理員較偏執(zhí),才會用其它的系統(tǒng)。因此,意見信箱的設(shè)計(jì)開發(fā),也是使用 sendmail 來達(dá)成所需要的功能。而 WindowsNT 系統(tǒng)中,由于沒有 sendmail 程式,需要另行符費(fèi)購買,或使用其它的郵件派送軟體,因此本節(jié)程式無法在 WindowsNT 系統(tǒng)執(zhí)行。
程式的流程如下
送出填寫意見的表格到使用者的瀏覽器上。
使用者填好后送出資料到伺服器。
伺服器將使用者填的資料整理后,存入檔案。
利用 UNIX 的管道指令及 sendmail 程式將意見送給系統(tǒng)管理人員。
伺服器通知使用者意見已送出。
以下就是完整的范例程式
意見信箱
php
$mailto="yourname@hahaha.com.tw";
if (($topic!="") and ($Email!="") and ($body!="")) {
$tmpfilename = tempnam("/tmp", "dm");
$fp = fopen($tmpfilename, "w");
fwrite($fp, "From: ".$Email."\n");
fwrite($fp, "Subject: ".$topic." 訪客來信>\n\n");
fwrite($fp, $body."\n\n");
fwrite($fp, "送信人:".$sender."\n");
fwrite($fp, "發(fā)信IP:".$REMOTE_ADDR."\n");
fclose($fp);
$execstr="cat ".$tmpfilename." │ /usr/lib/sendmail ".$mailto;
exec($execstr);
$execstr="echo $sender $REMOTE_HOST >> /var/log/mail.log";
exec($execstr);
echo "信件已送出?。”菊竟ぷ魅藛T盡快處理您的問題br
>br>br>br>br>";
} else {
?>
}
?>
程式在 PHP 處理剖析時,先判斷使用者是否填入資料。若沒有資料則送出意見表單給使用者,若有資料則表示使用者已輸入相關(guān)的資料,則進(jìn)行處理。
處理的原則是先將使用者填寫的資料寫入暫存檔案中,但為了防止多使用者同時填寫意見時,會造成檔案被覆蓋,因此需要每次都有不同的暫存檔,這個問題可以使用 tempnam() 函式來解決,用來建立獨(dú)一無二的臨時檔。 在檔名的問題處理完后,利用 PHP 提供的檔案處理功能,將使用者填寫的資料寫入方才建立的檔案中。將檔案關(guān)閉就初步完成。即使資料沒有郵寄出去,系統(tǒng)仍能保存意見檔案。值得注意的是,若存放在 /tmp 中,有些 UNIX 的系統(tǒng) (如 SUN Solaris) 會在重新啟動系統(tǒng)時遺失這些資料,而有些則不會 (如 Slackware Linux),這方面可能要先規(guī)劃好,要保存的話需要存在不會被清掉的目錄下。
UNIX 中最強(qiáng)的功能就是管道,可以利用管道來處理寄信的動作,如下
cat tmpfilename │ /usr/lib/sendmail wilson@biglobe.net.tw
這個指令的意思為將檔案送給管道彼端的 sendmail 程式,而 sendmail 將該檔案寄給 wilson@biglobe.net.tw。因此可利用本管道指令將意見寄給 Webmaster 或是客服部門的人員。若要寄給多人,可利用 mailing list 或是多用幾次寄信的管道指令。
在 PHP 程式中要使用 UNIX 的程式或者外部指令,可以使用 exec() 函式來做。寄完信后,通知使用者已經(jīng)在處理了,就完成了意見處理的初步工作。當(dāng)然之后要如何處理,就不是 PHP 書中所能討論的。
當(dāng)然執(zhí)行寄信的方式不只一種,可以利用 mail() 函式來寄信,亦可利用 UNIX 的網(wǎng)路 socket 來做,所謂戲法人人會變,巧妙各有不同。
?
當(dāng)使用者在參觀網(wǎng)頁時,有時想 Email 給 Webmaster 但是再執(zhí)行 Email 程式總是不方使,使用者在按下 mailto:abc@abc.abc.tw 還要花段時間打開自己這兒的 Outlook 豈不麻煩。這時,若是 Homepage 能提供寫信的功能就太酷了。同時意見信箱還是以提醒或者要求使用者一定要填入哪些資料,這對資料倉儲而言,也是了解客戶的最好方法。 br
整個意見信箱其實(shí)就像 Outlook 或者其它電子郵件軟體,開啟寄發(fā)新郵件的功能,不同的地方在于使用 Outlook 時,寄件人是固定的,而要填上收件人的地址;而網(wǎng)站上的意見信箱,收件人幾乎都是 Webmaster,反而是要填上寄件人的電子郵件地址。當(dāng)然另一個不同之處是 Outlook 處理寄信的動作;而意見信箱是由 Web 伺服器處理使用者發(fā)送的信件。
在更進(jìn)階的設(shè)計(jì)后,甚至可以變成 Web Mail,像 HotMail 般,只要用瀏覽器就可以在任何地方用任何電腦收發(fā)信件。
當(dāng)然,也可以做進(jìn)階的設(shè)計(jì),將使用者的意見儲放在資料庫中,留待日后整理成更有用的資料。不過這就不是這節(jié)要討論的部份了。
在 UNIX 的系統(tǒng)中,大部份和電子郵件有關(guān)的問題都和 sendmail 有關(guān),除非系統(tǒng)管理員較偏執(zhí),才會用其它的系統(tǒng)。因此,意見信箱的設(shè)計(jì)開發(fā),也是使用 sendmail 來達(dá)成所需要的功能。而 WindowsNT 系統(tǒng)中,由于沒有 sendmail 程式,需要另行符費(fèi)購買,或使用其它的郵件派送軟體,因此本節(jié)程式無法在 WindowsNT 系統(tǒng)執(zhí)行。
程式的流程如下
送出填寫意見的表格到使用者的瀏覽器上。
使用者填好后送出資料到伺服器。
伺服器將使用者填的資料整理后,存入檔案。
利用 UNIX 的管道指令及 sendmail 程式將意見送給系統(tǒng)管理人員。
伺服器通知使用者意見已送出。
以下就是完整的范例程式
php
$mailto="yourname@hahaha.com.tw";
if (($topic!="") and ($Email!="") and ($body!="")) {
$tmpfilename = tempnam("/tmp", "dm");
$fp = fopen($tmpfilename, "w");
fwrite($fp, "From: ".$Email."\n");
fwrite($fp, "Subject: ".$topic." 訪客來信>\n\n");
fwrite($fp, $body."\n\n");
fwrite($fp, "送信人:".$sender."\n");
fwrite($fp, "發(fā)信IP:".$REMOTE_ADDR."\n");
fclose($fp);
$execstr="cat ".$tmpfilename." │ /usr/lib/sendmail ".$mailto;
exec($execstr);
$execstr="echo $sender $REMOTE_HOST >> /var/log/mail.log";
exec($execstr);
echo "信件已送出?。”菊竟ぷ魅藛T盡快處理您的問題
} else {
?>
}
?>
程式在 PHP 處理剖析時,先判斷使用者是否填入資料。若沒有資料則送出意見表單給使用者,若有資料則表示使用者已輸入相關(guān)的資料,則進(jìn)行處理。
處理的原則是先將使用者填寫的資料寫入暫存檔案中,但為了防止多使用者同時填寫意見時,會造成檔案被覆蓋,因此需要每次都有不同的暫存檔,這個問題可以使用 tempnam() 函式來解決,用來建立獨(dú)一無二的臨時檔。 在檔名的問題處理完后,利用 PHP 提供的檔案處理功能,將使用者填寫的資料寫入方才建立的檔案中。將檔案關(guān)閉就初步完成。即使資料沒有郵寄出去,系統(tǒng)仍能保存意見檔案。值得注意的是,若存放在 /tmp 中,有些 UNIX 的系統(tǒng) (如 SUN Solaris) 會在重新啟動系統(tǒng)時遺失這些資料,而有些則不會 (如 Slackware Linux),這方面可能要先規(guī)劃好,要保存的話需要存在不會被清掉的目錄下。
UNIX 中最強(qiáng)的功能就是管道,可以利用管道來處理寄信的動作,如下
cat tmpfilename │ /usr/lib/sendmail wilson@biglobe.net.tw
這個指令的意思為將檔案送給管道彼端的 sendmail 程式,而 sendmail 將該檔案寄給 wilson@biglobe.net.tw。因此可利用本管道指令將意見寄給 Webmaster 或是客服部門的人員。若要寄給多人,可利用 mailing list 或是多用幾次寄信的管道指令。
在 PHP 程式中要使用 UNIX 的程式或者外部指令,可以使用 exec() 函式來做。寄完信后,通知使用者已經(jīng)在處理了,就完成了意見處理的初步工作。當(dāng)然之后要如何處理,就不是 PHP 書中所能討論的。
當(dāng)然執(zhí)行寄信的方式不只一種,可以利用 mail() 函式來寄信,亦可利用 UNIX 的網(wǎng)路 socket 來做,所謂戲法人人會變,巧妙各有不同。

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Many users will choose the Huawei brand when choosing smart watches. Among them, Huawei GT3pro and GT4 are very popular choices. Many users are curious about the difference between Huawei GT3pro and GT4. Let’s introduce the two to you. . What are the differences between Huawei GT3pro and GT4? 1. Appearance GT4: 46mm and 41mm, the material is glass mirror + stainless steel body + high-resolution fiber back shell. GT3pro: 46.6mm and 42.9mm, the material is sapphire glass + titanium body/ceramic body + ceramic back shell 2. Healthy GT4: Using the latest Huawei Truseen5.5+ algorithm, the results will be more accurate. GT3pro: Added ECG electrocardiogram and blood vessel and safety

The journey of an email is: MUA: MailUserAgent - Mail User Agent. (i.e. email software similar to Outlook) MTA: MailTransferAgent - Mail transfer agent, which is those email service providers, such as NetEase, Sina, etc. MDA: MailDeliveryAgent - Mail delivery agent. A server of the Email service provider sender->MUA->MTA->MTA->if

Why Snipping Tool Not Working on Windows 11 Understanding the root cause of the problem can help find the right solution. Here are the top reasons why the Snipping Tool might not be working properly: Focus Assistant is On: This prevents the Snipping Tool from opening. Corrupted application: If the snipping tool crashes on launch, it might be corrupted. Outdated graphics drivers: Incompatible drivers may interfere with the snipping tool. Interference from other applications: Other running applications may conflict with the Snipping Tool. Certificate has expired: An error during the upgrade process may cause this issu simple solution. These are suitable for most users and do not require any special technical knowledge. 1. Update Windows and Microsoft Store apps

Part 1: Initial Troubleshooting Steps Checking Apple’s System Status: Before delving into complex solutions, let’s start with the basics. The problem may not lie with your device; Apple's servers may be down. Visit Apple's System Status page to see if the AppStore is working properly. If there's a problem, all you can do is wait for Apple to fix it. Check your internet connection: Make sure you have a stable internet connection as the "Unable to connect to AppStore" issue can sometimes be attributed to a poor connection. Try switching between Wi-Fi and mobile data or resetting network settings (General > Reset > Reset Network Settings > Settings). Update your iOS version:

php提交表單通過后,彈出的對話框怎樣在當(dāng)前頁彈出php提交表單通過后,彈出的對話框怎樣在當(dāng)前頁彈出而不是在空白頁彈出?想實(shí)現(xiàn)這樣的效果:而不是空白頁彈出:------解決方案--------------------如果你的驗(yàn)證用PHP在后端,那么就用Ajax;僅供參考:HTML code

How to Optimize iPad Battery Life with iPadOS 17.4 Extending battery life is key to the mobile device experience, and the iPad is a good example. If you feel like your iPad's battery is draining too quickly, don't worry, there are a number of tricks and tweaks in iPadOS 17.4 that can significantly extend the run time of your device. The goal of this in-depth guide is not just to provide information, but to change the way you use your iPad, enhance your overall battery management, and ensure you can rely on your device for longer without having to charge it. By adopting the practices outlined here, you take a step toward more efficient and mindful use of technology that is tailored to your individual needs and usage patterns. Identify major energy consumers

Watch4pro and gt each have different features and applicable scenarios. If you focus on comprehensive functions, high performance and stylish appearance, and are willing to bear a higher price, then Watch 4 Pro may be more suitable. If you don’t have high functional requirements and pay more attention to battery life and reasonable price, then the GT series may be more suitable. The final choice should be decided based on personal needs, budget and preferences. It is recommended to carefully consider your own needs before purchasing and refer to the reviews and comparisons of various products to make a more informed choice.

SendingemailswithPHPisstraightforwardusingthemail()functionormoreadvancedlibrarieslikePHPMailer.1)Usemail()forbasicemails,settingrecipients,subjects,messages,andheaders.2)ForHTMLemails,adjustheaderstospecifyHTMLcontent.3)EmployPHPMailerforenhancedfea
