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

建设一个简单交互的网站(二) -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而举出的一个例子而已。理想的情况是你应该建立一个包含关键字的数据库然后进行搜索。 

 

Kinect SDK v1.7迎来重大更新 如何激励同事编写单元测试? 谷歌GCE vs. 亚马逊EC2:快源于谷歌本有的底蕴 不要责怪开源技术 它是无辜的 短命:微软将于2014年停止对WP8系统支持 Native和Web过时了,企业级移动开发流行用Hybrid App 与EverNote竞争?谷歌Google Keep浮出水面 又一次跨越:著名3D游戏引擎Unity版本更新 Feedly团队:自研后端平台或将开源 StackMob的诱惑:16小时,山寨一款移动App “云”筹帷幄 开发者必知的5大SaaS在线服务工具 超350个政府项目托管在GitHub 政府开源会成主流? Kinect for Windows SDK 1.7正式发布,支持3D建模 SafeNet与风河系统联手推出VxWorks嵌入式系统软件货币化方案 Windows Server 2012中的动态负载均衡 Google等互联网公司将成为创新中心? 在Hadoop的战争中 MapR获新一轮3000万美元融资 初创公司DNNresearch:谷歌科技帝国的新“基石” 创业了,我们该如何起名? 乐视网联手富士康推新盒子C1S “0+290元”新浪微博发售 吸引开发者:只要开发新应用 微软便奖100美元 PaintCode - 将矢量图转化为Objective-C代码的开发神器 苹果发布iOS 6.1.3 封杀evasi0n越狱所用漏洞 [API快讯] Google开放实时协作API 58同城开源轻量级Java Web框架 Argo 初创公司AppNeta:4轮融资,4780万美元 MongoDB释放2.4版本:692更新及8大得意之作 十年6亿美元!Amazon云计算喜获CIA大单! 国人当自强:HTML5+联盟首次筹备会成功举行 开源框架TAAE发布 快速打造iOS音频应用 如何学会600多种编程语言 Access + ADO 的程序发布,需要那些文件?(就这么点分了) 一个小问题,有100分可以相送,送完为止!! Update 时出现 ODBC错误文件被另一线程占用,问题出在那里?? 怎样判断一个控件是否获得焦点. 通过row和col不行,我以前也用过, 用SetSQLSelect更改dw的sql语句后,如果dw没有检索参数时能行,如果dw有检索参数则返回-1,请问有办法吗解决吗? SQL Server中的datetime类型数据是否能比较大小? Update 时出现 ODBC错误文件被另一线程占用,问题出在那里??? 请问U-C矩阵是什么? 庆祝一下 请教程序组加入程序的问题 老是想来灌水,把这点可用分送光得了,省得挂念 IT老虎,与天为敌快进来,谢谢我只有20多分了,你们一人十分吧,我留点好吧? 如何实现打印,尤其是分页打印? paw_001,paw_001 在马? NetGuardian??哪为兄弟有啊,给我一份copy~~~~~~~~~~~~ 关于自增长字段使用的问题,高手请进 这一贴,分就少点了,就这么多啦 有人能告诉我广东省C程序员与JAVA程序员的薪水比较吗?为什么会有这种差距呢 请问用javaApplet如何控制IE界面? 点对点的讨论 水平考试与资格考试及格分别是多少分? 如何再网页中实现打印功能,份也打印。 我发现了一个网站的BUG,我该怎样进去? 到处都是泡泡,俺看的想吐,晚上再来算了。 怪事, 屏幕变黑白 我的问题_6 MYSQL中like的问题 请教打印预览问题 请问,如果我想把,file edit tools window这个主菜单栏动态去掉,怎么做? 如何用程序代码实现在Memo文本编辑框中被选中的文字加下划线。 怎样分析tcp报文(我很急呀) *.idl文件如何使用? 各位大侠,怎么写一个php在线打分的程序阿? 我测试一下 感兴趣的去试试! IE外壳扩展的程序 Delphi 6.0的一个Bug??? 我怎么把字符串放进缓冲里?急急急!!! 恭喜 zhipop 喜得漂亮的可爱的千金 几个小问题想请教大家 如何将浏览器的地址栏里的IE图标换成自己的图标? r俺明天想去给我的宝马生生级,不算显示器,3000元左右,请各位大侠们赐教该什么配置 2000下写的程序,NT 4.0workstation上为什么不能跑? 启用新主页下载数据窗口编辑器 请教Qbasic中的几个问题..... 用BCB如何向Oracle8.0.5中更新BLOB 用ODBC编程时发现错误:nvarchar 类型无数据类型同其绑定,用CString 出错!如何解决? 救命,救命!!!!!!!!!!!! 【 这两天好像来了很多新人嘛!来报个到吧! 】 请教:如将一个 FormView 的 ScrollBar 去掉 食用油的成份有哪些? 汽油装在矿泉水瓶里,被压,会不会爆炸,或者起火?比如掉在马路上,汽车压过来……会不会爆炸 把一个手机变进矿泉水瓶的魔术我看了一个魔术,那个魔术师将一个手机变进了一个完好的矿泉水瓶里,而且瓶子是完好的,现场n个观众检验过的,所以各位谁知道这么变的请教教我, 食用油的成分家里用的食用油含有什么组分啊?有没有氨基酸、蛋白质什么的? 最虎药酒配方有哪些,组成成分是什么 变魔术怎么把矿泉水瓶的盖子变到矿泉水瓶里?魔术师把瓶盖变进瓶子里边以后,观众是可以检查的?怎么变的 地沟油的有害成分有什么?为什么一般的食用油检测常用指标检查不出来? 泡制营养酒有什么要求?国家什么机构检测药酒成份最权威?包括有毒有害物质,兴奋剂,激素等 今天抽完烟扔到地上烟头立起来是什么兆头? 食用油的成分是什么 空的矿泉水瓶有什么用这个星期三是截止日期!各位帅哥美女,做考试卷要用!另:尽量多一点! 抽完烟把烟蒂丢在地上烟头树立起来有什么征兆 食用油的性质和成分 人为什么不会被大气压压扁如果解释为内外大气压平衡,产生的压力相等而相互抵消的话,那么试想用两块相同的铁板用相同大的力从相反的方向压一个人,难道由于力可以相互抵消,这个人就可 香烟烧到只剩烟头那部分后扔到地下后会继续燃烧吗?就是说抽香烟的时候抽到只剩烟头的部分,就是上面的烟草部分全都抽完了,没有弹烟灰,那扔到地上后会继续燃烧吗? 如何测试皮肤含水量 为什么大气压不会把人压扁?请真正懂的答 不要瞎编的 你有21根烟头,知道3个烟头可以卷一根烟,请问21根烟头你能抽几根烟回答7的是- 回答10的,都错了,给你们个提示答案11根,能回答对,然后说出理由的就给分 地板怎么测试含水量? 为什么人在大气压中不会被压扁,而在在水中会被压扁?人在大气压中不会被压扁,是因为人身体内部也有大气,抵消了,那么在水里,人身体里也有水,为什么不和外面的水压力抵消,而在深的地方 燃烧的烟头碰到水,水平面上得烟纸也会湿,是什么原因. 测试界限含水量的意义是什么? 为什么有大气压,房子不会被压扁 两个完全相同的矿泉水瓶,一个装满沙,另一个装满水,放在同一斜面上滑下,那个瓶 润滑油含水量怎么测试啊水太多了,润滑油的效果会降低,含水量要怎么才能测出呢 大气压那么大为什么我没被压扁?平时我用笔刺自己一下!我计算过了.压强顶多3000PA我就疼得要死大气压有10的5次方PA为什么我都不觉得疼?难道空气的压力和用笔压不同吗? 两个完全相同的矿泉水瓶,一个装满沙,另一个装满水,放在同一斜面上滑下,那个瓶子滚 含水量试验 关于魔术:矿泉水瓶盖进矿泉水瓶,我想知道如何做到?不方便在这透露的话给我留言,如果有猜想的话也可以发表下.另外还有手机进矿泉水瓶也感到好奇,有达人可指教下如何做到吗? 两个相同的矿泉水瓶,一个全装沙,一个全装水,从斜面滑,那个快? 求毒奶粉 瘦肉精 地沟油 染色馒头的作文 一个空矿泉水瓶在瓶底钻个小洞,然后装上适量的水拧紧瓶盖,为什么不会漏水?为什么拧紧瓶盖不会漏水,但是打开盖子却会漏水? 两个完全相同的矿泉水瓶,一个装沙,一个装水,放在同一斜面上滑下,哪个瓶子滚得比较快 毒奶粉,地沟油,瘦肉精,染色馒头怎么没人管?毒奶粉事件在国际上很丢脸,地沟油就不说,新闻曝光后照样舀地沟油回流餐桌,现在又搞出来瘦肉精,染色馒头,到底有关部门查的不严,还是根本就不 为何将装有适量水的矿泉水瓶打开瓶盖倒插在水槽中,水不下落?而在空中打开瓶盖,为何水下落? 木头放在水里为什么不会沉下去呢? 求除了染色馒头、瘦肉精和地沟油之外,在国内其他的食品问题!急!求官方一点的说法 要写进报告里的 谢谢! 往空矿泉水瓶中加入热水,摇晃并盖紧瓶盖,过一会儿瓶子慢慢向内凹陷,这说明什么? 什么东西放在水里会沉下去 瘦肉精三聚氰胺染色馒头地沟油和贪官只要发现哪个企业那个窝点生产这些,贪官.死刑立即执行,没收全部财产的200%(没有任何商量的余地),什么死缓啊,终身监禁那都不可能.为什么不这么判 向矿泉水瓶倒热水后迅速倒出并改紧盖子,过一会瓶变扁了, 该怎么回答,孩子问:“xx为什么不会沉下水?”孩子问我:“木头,塑料,为什么不会下沉,纸张开始浮着,后来为什么下沉?空饭碗浮在水面,装满水为什么会下沉?” 我物理超差,不知怎么回答,孩 毒奶粉,瘦肉精,地沟油,彩色馒头,这些食品安全事件都说明了啥!诚信的缺失,道德的滑坡? 为什么把热水倒进瓶子又倒出,然后把盖子盖住,瓶子会慢慢往内缩,为什么?请给我解释关于大气压的,不要其他的条件的回答 ~三楼的,如果再没有好的答案,就是你了~ 为什么水里放食盐,鸡蛋不会沉下去? 什么食用油是采用浸出法压榨,浸出法有污染吗? 进来相继发生的“染色馒头”,“瘦肉精”,“地沟油”,“毒奶粉”等耸人听闻的食品安全事件足以表明,诚信的缺失,道德的滑坡已经到了何等严重的地步.中“耸人听闻”使用恰当吗? 刘谦矿泉水瓶倒立水不流出来的魔术怎么变的?要详细的教我 追加50分 教育我不要看魔术揭秘的滚一边去没我要的答案额 他是让人从一箱密封的矿泉水中随意抽一瓶的 所以不存在道具 如何压榨食用油是古代人工压榨的方法 , 把容积为358ml的矿泉水瓶全部按入水中不考虑瓶壁的厚度,矿泉水瓶所受到的浮力有多大? 为什么矿泉水瓶倒扣在水里,水进不去? 食用油中制作工艺:浸出和压榨,有什么区别? 矿泉水瓶如果加8公斤气压会 为什么这么冷的天气装在矿泉水瓶里的水不结冰我儿子在夏天里用矿泉水瓶装了一瓶子水,放在了院子里,现在我们河北都零下十多度了,可是它却没有结冰,我又作了实验,我找了个矿泉水瓶装 请问:压榨油和浸出油有何区别? 往矿泉水瓶里打气,它能承受多大压强才会爆? 怎么让矿泉水瓶盖进矿泉水瓶?还有手机进矿泉水瓶,有达人可指教下如何做到吗? 压榨油和浸出油的区别压榨油和浸出油哪个对身体好 汽油放到矿泉水瓶强烈震动会不会爆炸?起摩托车总是不看油,中途没有油而推着摩托车满大街跑.所以我想把汽油放到瓶子里(震动太厉害,不能使用玻璃瓶)带上,防止没油.有听说塑料瓶里装 把手机放到矿泉水瓶的魔术怎么变的?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn