PHP教程之实例进修PHP若何完成在线发邮件
咱们就开始学习动态语言的概念吧,刚一接触动态语言,可能很多人都会蒙了,怎么这乱七八糟的东西,在网页里显示的时候却是另外一码事?其实这并不算乱七八糟,你写的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同样是最有效的。 至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。 刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。 写的比较杂,因为我也是个新手,不当至于大家多多指正。 兴趣是最好的老师,百度是最好的词典。 本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。 对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。 有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。 对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。 学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。 如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域, 这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。 真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎, 当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标, 最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。 要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。 在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。 学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql 要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。 其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
页:
[1]
2