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

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

 

Go 1.4正式发布 支持Android开发 【特别提醒】2014中国大数据技术大会门票全面告罄 不接受现场购票 累计4000万美元 Qualcomm在华投资5家公司 支持Android、WatchKit开发,全新RubyMotion 3面世! 快速开发移动医疗App!开源框架mHealhDroid 2014CVW﹒产业互联网大会解密未来20年 Nimble VR的收购与一封来自友商的感言 Google Earth API将在2015年12月彻底关闭 AR、美颜、机器人:计算机视觉库几乎无所不在 不激增,无爆收,年度最佳手游为80 Days带来了什么? 《近匠》机智云CEO黄灼:跨越智能硬件的“鸿沟” 智能手机≠智能家居!我们要的究竟是什么? 亚信大数据事业部总经理张灏:打通各行业数据壁垒 让大数据变现畅通无阻 Web App和Native App不是生死之争,而是可以和平共处! 微信之父张小龙说微信坚持“去中心化”,这样真的好吗? 亚信CFO武军谈进军海外市场成功经验 前瞻性思维是开路先峰 Swift,任重而道远! DevOps系统的变迁 玩转Docker镜像 “扫描建模”速建AR应用 Vuforia 4.0 SDK更新 硅谷里的外星人:纵观Reddit十年风雨路 不见不散 Cloud Foundry Meetup活动将首次走进杭州 独立开发者:新手做2D手游该用哪些工具? 求安全化危机!Uber研发生物识别技术、聘请前亚马逊运营 JavaScript社区开发者调查:服务端JS盛行 AngularJS使用者最多 去中心化、去中介化,微信商业化路径清晰了吗? 微信企业号认证简化了,你造吗? 专访瀚思安信联合创始人:大数据技术助力企业实现主动智能防御 挑选IBM Bluemix作为云平台的10大理由 10年技术积累成就极光压缩引擎,欧朋流量宝5.0面世 【图文实录】12月19日CTO俱乐部走进杭州 继承的问题 WM_LBUTTONDOWN WM_MOUSEMOVE,但不是 各位帮帮忙 明天过节发分!快来啊!!!!!!! 这个是什么错误? 关于access数据库操作的问题,谁能帮我? sql服务无法连接???? TO dreamfan(★这个月辞职★) 近来领分!:) 空值可以用NVL判断,请教空格如何判断呢?非常感谢! 感情问题,我该怎么办? 请教各位高手,关于使用JSP与mysql的登录问题!急!急!急!急!急! 这里有一个数据库以外的问题,大家帮忙看一下??? 请教:listbox如何通过双击选中项,删除该项,并添加到另一个listbox呢? 远程备份sqlserver2000数据库问题! 》》》高手来看看这个问题,编译器错误,搞不懂了。《〈〈 如何使用標尺 请问在stringgrid控件中可否一次在不同的cell中填入不同颜色的文字? 120分求解!! "模态"窗体的全屏与非全屏切换 用VC做DCT变换的同仁多吗? 急!急:如何使用链接来调用运行本地应用程序(exe文件)?请高手指教,多谢! 如何将一个ip捆绑多个域名,并且将域名与虚拟主机一一对应?这样作dns或路游等设置较普通设置有何异样??请高手指点,谢谢!!! 如何在一个win2k server的服务器上创建一个MSMQ队列! 请大家帮忙看一下,这个问题怎么办???? 请问vb里面的直方图用哪个控件,怎么画? vc和java,哪一个更有钱途? 請問哪里有條碼字體下載??? 看<windows程序设计>(第五版)章节上有什么顺序吗? 关于windows 可执行文件的结构问题! 如何才能得知当前路径?比如VB的App.Path? 能否向asscess添加图像字段,如果可以,那么要怎样写入和读出,请各位关注 谁知道用代码在treeview web控件中,添加node的方法? 关于金山公司的词霸那样的弹出菜单怎么做? 我从哪里可以买到powerbuilder8的多媒体教学光盘?thanks! 哪伟大侠有GB2322的汉字内码表啊? 关于对眼球经济的探讨(请各联盟盟主来看看!!!) 错在哪里? 如何才能实现将ListView的一列拖到另外一列的位置? 在VC#中订阅消息要手工输入,为什么不做成VB一样?有简单方法吗? 请问网吧管理软件是如何使屏幕变暗,并显示自己的对话框,禁止其他操作的? 第一次用VB,请指教 多线程中如何申请一块存储空间 Code Guard是什么东东?在线等待,马上给分! 这个错误是什么原因啊? 请问怎样获得默认打印机名! 哪位大虾能给小弟一点有关汉诺塔问题的资料呀?! ShellExecute(this.Handle,null,"c:\\",null,null,1)问题再探 PB6.5如何实现选择文件路径对话匡?急!在线等待。 为什么下面的enum定义要有一个方括号? dot menu是什么意思? 请教大侠为什么(333)这句不执行 函数y=5sin(2x+θ)耳朵图像关于y轴对称,则θ=a.2kπ+π/6 b.2kπ+π c.kπ+π/2 d.kπ+π 外界对气体做了负功 气体就吸热了啊 吸热了温度不就上升了吗 为什么内能又保持不变呢?才学这章 好混淆 一 求值tan(55+α)*tan(35+α)-cos^2(π/3-α)-cos^2(π/6+α)二 如图由已知怎么得到sinα的值?有回答加分,先谢过:)请点开看大图 麻烦了 谢谢....缩图了= = 当爱情出现冷峰时该怎么做?当两个人在一起没有刚开始的那样激情 两个人在一起时没有话题时该怎样挽留? 简述肝脏生物转化作用概念及影响生物转化作用的因素 6w的灯,多久费一度电? 冷峰是三角还是半圆,峰前峰后怎么看,暖风呢? 月球环形山和月海的具体位置介绍.最好用图说明 小灯泡亮的时候费电还是暗的时候费电应该是在220v电路中 峰是影响天气的重要的___,冷峰空气的交界面叫___(1)天气系统(2)峰面 为什么月球会有环形山?月海呢? 现在的灯泡真的很费电吗? 干湿球式温度计如何测得温湿度的 上弦月出现在( )半个月的( )半夜. 25W普通灯泡照一个月费多少度电一直照着这个月用电836KWh 单价0.5469 看看那灯泡废了多少电 已知进水口压力为1.5kg,管路长7200m(粗糙面,坡度为1%),请教出水口的流量是多少? 什么叫上弦月?什么叫下弦月?是怎么区分的? 25W灯泡一个月费多少电 在DIS实验测小车的位移随时间的变化时,研究对象是_________.光电门传感器测的实际是挡光______. 冷库当中的风机和排管水冷的区别 哪种电阻的功率最大?是不是体积大的电阻功率相对较大? 在一个封闭小环境内对温度湿度可控要采用什么装置封闭环境是1立方米,其实具体就是要用什么装置能改变这个封闭箱内温度和湿度,并且最好能可控. 酮体代谢的特点问答题,希望答题规范, 电阻的体积与功率是对应的吗? 容积为200l的空长方体水箱有两个进水口一个出水口每个进水口每分进水800ml出水口每 试述酮体的来源、生理意义及与临床的关系? 生物有关结构特点基因的结构特点?遗传物质的结构特点?细胞的结构特点? 有一水箱有两进水口0-15分钟只有一进水口进水30厘米,15-25分钟两进水口同时进水,25分钟共进水70厘米,问两水管同时进水,平均每分钟水面升高多少厘米 美女酮体什么意思 生物的结构特征 什么意思 容积为300L的长方体水箱有进水口,出水口各两个.进水口没分进水1200mL,出水口每份出水1500mL,要是水箱在1小时内一直有水,水箱至少放多少水? 酮体+-什么意思 中国传统文化——诗词,不要太长的,不要罗嗦,多给点,各种方面的! 一个容积为20升的水箱现有水8升,它有一个每分钟进水0.3升的进水口和一个每分钟出水0.1升的出水口,,若同时打开两个水口,写出水箱中的水y升与打开时间x分钟的函数解析式,并指出自变量x的 何为酮体?有何代谢特点?酮体增多对机体有何影响 求一首形容或介绍中国传统文化的诗长短不限 COPY也成 要优美点的 容积为300l的长方体水箱有进水口,出水口各两个.进水口每分钟进水1200ml,出水口每分钟出水1500ml.要使水箱 不锈钢水塔的利润空间大吗 需要赞美中国传统文化的诗歌!急!拜托各位了! 又是个雨天 用英语怎么说?标准的~ 请问一下不锈钢水塔安装的问题我家三楼顶安装了不锈钢水塔,一楼安装了抽水泵.为什么我关掉了抽水泵后,出水口自动抽水到水塔,我也安装了一个自动开关控制抽水泵了...关掉抽水泵和关掉 家庭的水塔水箱里面水7天能吃吗 质量相等、初温相同的水和某种液体,在相同的时间内,相同的条件下同时给它们加热.质量相等、初温相同的水和某种液体,在相同的时间内,相同的条件下同时给它们加热。每隔1min记录一次 求不锈钢水塔浮球安装连接方法,你家装过吗进水管是DN25管,水塔进水口也是DN25的,水塔顶部是椭圆形的,所以进水口与地平面呈45度角,现在想在水塔里安装个浮球阀,从进水管到浮球阀之间怎么 金属箔作为食品保鲜包装时的性质 在探究物质吸热本领实验中,小明将质量相同的甲、乙两种液体分别装入在探究物质的吸热本领实验中,小明将质量相同的甲、乙两种液体分别装入两个完全相同的烧杯中,分别用两个完全相同 线粒体的基本作用是什么? 食品保鲜可以防止食品腐烂,市场上有一些充气包装食品.看上去像一个小枕头.问:(1)是什么气体?(2)推测该气体具有哪些性质? 质量为2000g,初温为10度,末温为20度,吸热1.84×10^4J的液体是?顺便将比热容求出!本人照书上做出的是砂石!郁闷! 请问线粒体的基粒有什么作用 制袋机倍送是什么意思 还有调袋子最重要的是学什么 本人装机器的现在学做袋子应该如何学 何谓生物转化的作用?有什么反应类型?有哪些因素影响?有何生理意义? 蛋白质发挥生理作用的场所为什么是线粒体?某物质是动植物细胞中普遍存在的一种由104个氨基酸组成的化合物,在产生能量的过程中起重要作用,那么该物质生成的场所以及它发挥生理作用 有关感恩的古诗词谢谢 生物在形态和生理上的特征是由什么控制的 生态系统的营养结构仅对捕食食物链而言吗 高一数学必修四三角函数诱导公式的问题老师讲过奇变偶不变,符号看象限.但是符号看象限是根据变了以后的函数还是变之前的来确定?比如说原来的函数是sinA,变了以后是cosA.符号是根据sinA 我的一个电器的说明书上只给出了220V,50Hz能求得“瓦”吗? 一个密闭容器在外力做用下将活塞缓慢外拉使体积增大,问气体的内能情况?气体是吸热还是放热或温度不变? 如何按体积大小来分辨电阻的功率?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘