说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

建设一个简单交互的网站(二) -PHP初学入门教程6

HTML文档下载 WORD文档下载 PDF文档下载
介绍PHP实现计数器、表单、简单的站内搜索等功能。

 

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 ("<CENTER><B>%06d</B></CENTER> <BR> \n",get_hitcount("counter.txt"));include("include/footer.inc");?>
看看我们的新front.php3
5.6 反馈表单
  让我们再添加一个反馈表单以便你的浏览者填写并e-mail给你。举例来说我们用一种很简单的方法实现它,我们只需要两个页面:一个为浏览者提供输入表单;一个获得表单数据并处理、mail给你。
  PHP中获取表单数据是很简单的。当一个表单被发送后,表单中所包含的各个元素被赋上了相应的值,而这样就可以像引用一般变量一样使用了。
<FORM name="myform" ACTION="process_form.php3" METHOD="POST">
<INPUT TYPE="TEXT" NAME="mytext" VALUE="Some Value">
</FORM>
在process_form.php3中,变量$mytext就被赋予了输入的值--非常简单!同样的,你可以从列表框、多选框、单选框、按钮等表单元素中取得变量值。你唯一要做的就是为表单中的每一个元素取名以便将来可以引用。
根据这个方法,我们可以生成一个简单的包含三个元素的表单:姓名、e-mail地址和留言。当浏览者发送表单后,处理该表单的PHP页面(sendfdbk.php3)读取数据,检查姓名是否为空,最后将数据mail给你。
表单:form.php3
<?include("include/common.inc");$title = "Feedback";include("include/header.inc");?><P><FORM ACTION="sendfdbk.php3" METHOD="POST"><INPUT TYPE="text" NAME="name" value="Your name" SIZE="20" MAXLENGTH="30"><INPUT TYPE="text" MAXLENGTH="40" WIDTH="20" value="Your Email" NAME="email"><BR><TEXTAREA ROWS="7" COLS="40" NAME="comment">Your feedback on my home page.</TEXTAREA><BR><INPUT TYPE="submit" VALUE="Send Feedback!"></FORM></P><?include("include/footer.inc");?>
处理表单:sendfdbk.php3
<?include("include/common.inc");$title = "Feedback";include("include/header.inc");if ( $name == "" ) {// 现在我很讨厌匿名的留言!echo "Duh ? How come you are anonymous?";} elseif ($name == "Your name") {// 这个浏览者真是不想透露姓名啊!echo "Hello ? <B>Your name</B> is supposed to be replaced withyour actual name!</B>";} else {// 输出一段礼貌的感谢语echo "Hello, $name.<BR>Thank you for your feedback. It is greatly appreciated.<BR>Thanking you<BR>$MyName <BR>$MyEmailLink";// 最后mail出去mail($MyEmail, "Feedback.","Name : $nameE-mail : $emailComment : $comment ");}include("include/footer.inc");?>
注意:如果在你的测试过程中,该程序末能正常工作,请查看你的PHP配置文件(PHP3为php3.ini,PHP4为php.in)有没有设置好。因为本程序需要您的PHP配置文件作如下的设置:
  首先,用NotePad打开你的php3.ini或是php.ini文件,查看一下[mail function]有没有设置好,默认的情况如下所示:
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 简单的站内搜索引擎
  PHP可以调用外部程序。在Unix环境下我们可以利用程序grep实现一个简单的搜索引擎。我们可以做的稍微复杂一些:使用一个页面既输出一个表单供用户输入搜索字串又输出查询结果。
<?include("include/common.inc");$title = "Search";include("include/header.inc");?><P><FORM ACTION="<? echo "$PHP_SELF"; ?>" METHOD="POST"><INPUT TYPE="text" NAME="searchstr" value="<? echo "$searchstr"; ?>"SIZE="20" MAXLENGTH="30"><INPUT TYPE="submit" VALUE="Search!"></FORM></P><?if ( ! empty($searchstr) ) {// empty()用来检查查询字串是否为空// 如果不为空,调用grep查询echo "<HR>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 "<OL>n";while(list($fname,$fline) = each($myresult))echo "<LI><A HREF="$fname">$fname</A> : $fline </LI>n";echo "</OL>n";} else {// 如果没有查询结果 echo "Sorry. Search on <B>$searchstr</B>returned no results.<BR>n";}pclose($fp);}?><?include("include/footer.inc");?>
注释:
PHP_SELF是PHP内建的变量。包含当前文件名。 
fgets()按行读取文件,最多4096(指定)字符长度。 
fgetss()与fgets()相似,只是解析输出的HTML标记。 
split()有一个参数是2,因为我们只需要把输出分成两部分。另外需要省略":"。 
each()是一个数组操作函数,用来更方便的遍历整个数组。 
popen()、pclose()与fopen()、fclose()的功能很相似,只是增加了管道处理。 
请注意以上的代码并不是实现一个搜索引擎的好办法。这只是有助于我们更好学习PHP而举出的一个例子而已。理想的情况是你应该建立一个包含关键字的数据库然后进行搜索。 

 

不可小觑的Web开发编码规范 软件工程师如同花园园丁,清理代码就好比拔草! 智能硬件元年 60+硬件展商引爆MDCC 2013 深藏功与名:Supercell CEO Ilkka Paananen访谈录 Google Ideas小工具捍卫言论自由 为什么谷歌要一直为摩托罗拉烧钱? 远见卓识,像CEO一样编写代码! [探讨]如何成为有代码洁癖的程序员? 消灭Bug!十款免费移动应用测试框架推荐 协同软件供应商Atlassian推出JIRA服务台 振奋人心!iOS和Android版BBM应用首日下载量冲破1000万次 十款开源的数据库管理工具 360联合多家IDC成立“安全防黑联盟” 国内百万网站受益 腾讯云如何玩转手游数据分析 成都站免费抢票 直接拿来用!10款实用Android UI工具 第14届英特尔投资全球峰会 新投16个项目逐一看 2013中国Linux内核开发者大会亮点汇总 UnitedStack:用社区的方式做IT 手游狂潮:小团队如何提高游戏数据化运营效率? 2012年全美CEO收入榜:扎克伯格第一、库克第五、Marc Benioff第九 专访:InMobi全球CEO Naveen Tewari MDCC 2013精彩专题论坛之产品与设计 中关村大型IT人才招聘会举办 现场火爆 [简讯]新代码编辑器Lime发布 号称Sublime Text的开源实现 从真实案例出发:如何在协作开发中避免误解! Google工程师谈程序员的自我修养 依然很强大:微软第一财季净利润同比增17% MDCC 2013垂直行业应用与O2O专题论坛透露劲爆话题 专访豌豆荚产品设计团队:Design Hackathon是绞尽脑汁之后的海阔天空 首日报名爆满超300 向C++大师Lippman提问征集 做华为合伙人:华为开发者联盟沙龙(北京站)即将开幕 aspimage注册问题 请问GetLocalTime()与GetSystemTime()的区别??? Visual Studio.Net RC2都出来N段时间了,为什么还不使?! 请教:如何将HDLC协议的数据流复原,即我接收到符合HDLC规程数据,怎样去掉0和标志,获取有用的数据? 求助:一个派生类问题 手机的软件测试分那几部分? 这段代码里表格为什么不会出现? 一个关于win2000advanced server升级sp2的问题。 怎么设置Listbox!急!急! 什么地方有关于j2ee的资料? 关于sqlplus的spool功能?(必给分) 关于System.net 浏览器下载怎样设置他不自动打开word,excel,servlet程序怎么写啊? *.iso是什么文件??虚拟光驱用的吗??如何运行?? 局域网内读取(只是读取)服务器内数据库(.MDB) 有什么可行的办法? 谁有aspedit 2001 build 29 的破解与 汉化 偶的win2000p打不开txt文件,说缺少prontpg.exe文件,怎么回事呢?//牛虻 如何更改对话框上的字体大小。。我好象在对话框的属性设置里没有看到关于字体的设置 怎样才能使我的QQ正常上网? 高手注意!!! 谁能精确的告诉我需要哪几个文件就可以在不同的机器(系统不同)上执行编译好的vb6.0程序 勇敢的警察!?!! 各位大侠,小妹问一个关于Property Sheet的问题,怎么把下面的“应用,帮助,取消“设置成不显示 用installshield express制作安装程序,程序有关于SQL Server的连接,应怎样处理? 各位侠士,vc中怎样读取DBGrid Control中的数据?怎样执行sql 语句?就向delphi中一样?拜托!拜托! 版本控制问题[Fatal Error]Internal Error: L519 如何在Exhcnage server 服务器上安装反病毒软件 apache服务器如何同tomcat4.0 结合起来. 字符串中怎么显示“”,例如要显示字符串-----"“ID”是必选字段"。 求助Applet Servlet CreateOleObject('ADODB.Connection')怎么用? 哪位有AIX下的cc,xlC,make的中文使用说明?我的英语太差,看系统的帮助头都大了。 谁有SHA1算法源代码的,给我一份,我很急,一定给分!有网址的,也给分? ODBC SQL SERVER DRIVER timeout expired错误,不知如何解决 请问那位大侠知道哪有北大出版社出版的WINDOWS程序设计这本书的电子版下载 如何控制session的有效时间? VBA下怎样实现...... 很简单的问题,如果得到OS是什么啊? VB怎样调用Oracle没有包的存贮过程? 哪位能提供AIX下的cc,xlC,make的中文使用说明?我的英语太差,看系统的帮助头都大了! 那位有用网叶通过servlet提交数据的例子,越简单越好 救命啊! ----关于漂浮的工具条的隐藏(按钮失踪了!)。 主题:为何我的机子只能进入DOS平台,无法再进入Windows界面? 请问什么地方有《UNIX环境高级编程》的随书源代码下载,谢谢!! 如果得到OS的类型啊?用什么API函数啊? 请问哪有Linux的源代码下载??? 作者如何获得他自己编写的程序的版权及著作权? SOS!!请高手速指点, 立刻要用到,谢谢!! 报表字段过长如何分行打印? 急。。。关于字体属性 Jbuilder5.0 注册码,那个想要,我这儿有!今天刚搞到! 有30千克糖果,每2分之4千克装一袋,现在已经装了总数的3分之2,已近装了多少袋? L与cm^3的换算是什么 一根钢材长5分之4米,重25分之2吨,这种钢材1米重多少吨 有一包糖,如果吃掉6分之1千克,还剩3分之2千克,这包糖原来有多少千克,如果吃掉这包糖的6分之1,还剩3分之2千克,这包糖原来有多少千克做成一个无盖的长方体水箱。做这个水箱至少要用铁皮 七(15)班同学上体育课,排成3行少1人,排成4行多3人,排成5行少1人,排成6行多5人.上体育的同学有多少名 一种钢材一米重20分之1吨2吨这样的钢材有多少米明天要交的 4/5米的钢柱质量为1/25吨,同样的钢柱4/5吨长()米 2.5μm=?m 科学计数法 83.4亿等于多少元?用科学计数法 dm代表什么长度单位 某班同学上体育课,如果每排3人,就多出1人,如果每排6人,就多出4人每排7人择多出5人快这个班至少有多少人 1s等于多少h,科学计数法 dm数学里代表什么? 用科学计数法表示1、银原子直径为0.0003微米,相当于多少米?2、350毫米^2的芯片上能集成5亿个元件,1个元件占多少平方毫米?3、1纳米相当于一根头发丝直径的六万分之一,一根头发丝的直径大约 1FEET等于多少个英尺 dm在数学表示什么长度单位? 七(15)班同学上体育课,排3行少1人,排4行多3人,排成5行少1人,排成6行多5人,问体育课最少有多少人? 买3千克茶叶和5千克糖,一共用去420元,买同样的2千克茶叶比5千克糖贵130元,茶叶和糖的单价各多少?用消去法解题,快, 长度单位里 dm表示什么 设有理数M,用科学计数法记为M=a×10×5,则M有几位整数? 买3千克茶叶和5千克糖需要420元,买同样的5千克茶叶和5千克糖,需要640元.每千克茶叶和每千克糖各多少元? "dm"是什么长度单位? 小红用160元买了棉花糖和果汁糖各5包.3包棉花糖的售价刚好是5包果汁糖的售价.棉花糖和果汁糖各售多少元请您用中合算式回答! 买三千克茶叶和5千克糖,用去420.4元,买同样的3千克茶叶和3千克糖用去384.6元,每千克茶叶多少元?要算式,不要设想, mil厚度单位1.6mil等于多少丝?急用! 小红用160元买了棉花糖和果汁糖各五包.三包棉花糖的售价刚好是五包果汁糖的售价 1.买3千克茶叶和5千克糖一共用去420元买2千克同样的茶叶比5千克糖贵130元,每千克茶叶和每千克糖各多少元2.一张数学试卷,只有25道选择题,做对一题得4分,做错或不做,一题倒扣1分.小敏得了80 mil是什么单位 小红用160元买了棉花糖和果汁糖各5包,3包棉花糖的售价刚好是5包果汁糖的售价.棉花糖和果汁糖每包各多少 7.5微米等于多少米 用科学计数法表示 1"等于多少mil?如何换算? 小红拿了160元买棉花糖果汁糖个5包3包棉花糖等于5包果汁糖问果汁糖和棉花糖各多少元? 5分之4米钢材重20分之1吨,同样的钢材,5分之4吨长多少米?应列示为( )结果为( )米 mil与"的换算关系? 小红用160元买了棉花糖和果汁糖各5包.3包棉花糖的售价刚好是5包果汁糖 有一种钢材,长5/6米,重1/30吨,这种钢材每吨长多少米?每米重多少吨? 照片所有尺寸和cm的换算 一种钢材五分之四米重八分之七千克,这样的钢材1米重()千克,1千克这样的钢材长()米 妈妈上个月到超市买4千克茶叶和2千克糖,一共用去512元,这个月又到超市买同样多的2千克茶叶和4千克糖,一共去304元,每千克茶和每千克糖各多少元? 把8/13吨平均分成5份,求每份是多少就是求8/13吨的几分之几是多少?算式是( ). 五包茶叶和4包糖共重44千克5 - 离问题结束还有 14 天 23 小时4茶叶+1糖 =3糖+1茶叶 妈妈上个月到超市买了4千克茶叶和2千克糖,一共用去512元,这个月又到超市同样的2千克茶叶和4千克糖,一共去304元,每千克茶叶和每千克糖各多少元? 三围 36:24:36是个怎样的身材? 1 cm等于多少磅?1mm 等于多少磅? 五包茶和四包糖共四十四千克比糖轻把茶放一包到糖一边去糖放一包倒茶那边去两种相等,糖和茶各多重? 我1.67cm,三围是90 65 87可以吗 要算成36 24 34那样是多少 1mm=( )cm foot是什么 关于长度单位的数学日记怎么写? 1mm方等于多少cm^2 4个茶杯和5包茶叶的价格之和小于22元,而6个茶杯和3包茶叶价格之和大于24元,则2个茶杯与3包茶叶的价格比A 2个茶杯贵 B 3包茶叶贵 C 二者相同 D 无法确定 长度单位数学日记的写作 1微米=()米 用科学计数法吧! foot什么意思 写一则数学日记(要求带有长度单位和面积单位) 一微米等于多少米?科学计数法 FEET是什么长度单位? 写一篇数学日记内容是关于长度单位二年级 1毫米=1000微米,2.5微米可以用科学记数法表示为,(急用 feet是什么意思?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn