|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
咱们就开始学习动态语言的概念吧,刚一接触动态语言,可能很多人都会蒙了,怎么这乱七八糟的东西,在网页里显示的时候却是另外一码事?其实这并不算乱七八糟,你写的HTML代码不也一样是一堆堆的字符吗?毕竟,代码并不是作为直接输出的,而是经过处理的,说白了,HTML是经过HTML解析器,而PHP当然也就通过PHP解析器了,跟学习HTML一样的道理,想让任何的解析器完成操作,就必须使用它们专用的语法结构,所以PHP长相奇怪也就不足为奇了。 当利用者在观赏网页时,有时想 Email 给 Webmaster 然而再履行 Email 程式老是不方使,利用者在按下 mailto:abc@webjx.com 还要花段工夫翻开本人这儿的 Outlook 岂不费事。这时候,若是 Homepage 能供应写信的功效就太酷了。同时定见信箱仍是以提示或请求利用者必定要填入哪些材料,这对材料仓储而言,也是懂得客户的最好办法。
全部定见信箱其实就像 Outlook 或其它电子邮件软体,开启寄发新邮件的功效,分歧的中央在于利用 Outlook 时,寄件人是固定的,而要填上收件人的地址;而网站上的定见信箱,收件人几近都是 Webmaster,反而是要填上寄件人的电子邮件地址。固然另外一个分歧的地方是 Outlook 处置寄信的举措;而定见信箱是由 Web 伺服器处置利用者发送的函件。
在更进阶的设计后,乃至可以酿成 Web Mail,像 HotMail 般,只需用阅读器就能够在任何中央用任何电脑收发函件。
固然,也能够做进阶的设计,将利用者的定见储放在材料库中,留待往后收拾整顿成更有效的材料。不外这就不是这节要会商的部分了。
在 UNIX 的体系中,大部分和电子邮件有关的成绩都和 sendmail 有关,除非体系办理员较偏执,才会用其它的体系。因而,定见信箱的设计开辟,也是利用 sendmail 来告竣所需求的功效。而 WindowsNT 体系中,因为没有 sendmail 程式,需求另行符费购置,或利用其它的邮件派送软体,因而本节程式没法在 WindowsNT 体系履行。
程式的流程以下
送出填适意见的表格到利用者的阅读器上。
利用者填好后送出材料到伺服器。
伺服器将利用者填的材料收拾整顿后,存入档案。
使用 UNIX 的管道指令及 sendmail 程式将定见送给体系办理人员。
伺服器告诉利用者定见已送出。
以下就是完全的典范程式
<html>
<head>
<title>定见信箱</title>
</head>
<body>
<?php
$mailto="yourname@webjx.com";
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, "发信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 "函件已送出!!本站任务人员尽快处置您的成绩<p><br><br><br><br><br>";
} else {
?>
<form action=<? echo($GLOBALS["PHP_SELF"]); ?> method=post>
<table border=0>
<tr><td>主题</td><td><input type=text size=20 name=topic></tr>
<tr><td>姓名</td><td><input type=text size=20 name=sender></tr>
<tr><td>Email</td><td><input type=text size=20 name=Email></tr>
<tr><td colspan=2>内容<br><textarea cols=26 rows=10 name=body></textarea></td></tr>
<tr><td colspan=2><div align=right><input type=submit value="送出"></td></tr>
</table>
</form>
<?
}
?>
</body>
</html>
程式在 PHP 处置分析时,先判别利用者是不是填入材料。若没有材料则送出定见表单给利用者,如有材料则暗示利用者已输出相干的材料,则停止处置。
处置的准绳是先将利用者填写的材料写入暂存档案中,但为了避免多利用者同时填适意见时,会形成档案被掩盖,因而需求每次都有分歧的暂存档,这个成绩可使用 tempnam() 函式来处理,用来创立举世无双的一时档。 在档名的成绩处置完后,使用 PHP 供应的档案处置功效,将利用者填写的材料写入刚刚创立的档案中。将档案封闭就初步完成。即便材料没有邮寄出去,体系仍能保留定见档案。值得注重的是,若寄存在 /tmp 中,有些 UNIX 的体系 (如 SUN Solaris) 会在从头启动体系时遗掉这些材料,而有些则不会 (如 Slackware Linux),这方面能够要先计划好,要保留的话需求存在不会被清失落的目次下。
UNIX 中最强的功效就是管道,可以使用管道来处置寄信的举措,以下
cat tmpfilename │ /usr/lib/sendmail webjx@webjx.com
这个指令的意思为将档案送给管道彼真个 sendmail 程式,而 sendmail 将该档案寄给 wilson@webjx.com。因而可使用本管道指令将定见寄给 Webmaster 或是客服部分的人员。若要寄给多人,可使用 mailing list 或是多用几回寄信的管道指令。
在 PHP 程式中要利用 UNIX 的程式或内部指令,可使用 exec() 函式来做。寄完信后,告诉利用者已在处置了,就完成了定见处置的初步任务。固然以后要若何处置,就不是 PHP 书中所能会商的。
固然履行寄信的体例不只一种,可以使用 mail() 函式来寄信,亦可使用 UNIX 的网路 socket 来做,所谓戏法人人会变,奇妙各有分歧。
在学习HTML中我想边学边做是最有效的方式,当然这一方式对于学习PHP同样是最有效的。 |
|