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

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

 

Android签名用keytool和jarsigner制作apk文件 谈谈Android中文短信的实现 Android中文短信开发技巧 Android来电号码获取代码 Android AIDL初学者必看内容 Android与XML解析 Android天气预报程序开发实例与定位信息 Android中文短信开发终结篇 Android权限列表permission说明 Android输入法开发实例解析 Android示例程序Snake贪食蛇源代码分析 Android平台View的按键事件KeyDown用法 Android加速感应器实现屏幕自动旋转-Sensor属性 Android视频播放类VideoView解析 Javascript如何检测浏览器关闭了小叉叉 文件操作 - DOS BAT批处理编程入门教程(六) 获得手机中的电话簿 Android开发学习小心得 VC中用CPPToolTip轻松实现工具提示 Android中MediaRecorder类实现视频录制 WEB开发中将数据库记录转换到EXCEL表格文件xls供下载 F#是什么语言 函数式编程语言F#:基于CLR的另一个头等编程语言 编程获取Google PR值方法集锦 第一个F#入门程序Hello world 在F#中将函数作为一等对象的值 PHP获取Google PR值 ASP.NET(C#)获取Google PR值 android.appwidget类剖析 Android NDK之JNI使用例子 RemoteViews - Android Widget开发入门 自来水控制解决方案?! 请教用ASP开发物业收费软件的开行性! 那些软件是用VC写的? 急!!! 滤去所选记录集中相同数据的那个SQL语句是什么??? 是一个单词! 请教用PHP开发物业收费软件的开行性! 谁有C++经典书籍电子版 VC技术内幕的电子版pdg文件格式要用何种工具才能浏览??? 请教各位:一个运行notes c++ api 的超级菜问题: 推荐一下制作GIF的免费软件. 关于双系统!!! 如何将数据库中保存的word文件读出并在IE中大开? 关于acmStreamOpen的问题? 关于editmask的问题 TURBOC 3.0的问题,在线等待..... 各位高手!我又一问题请教!请帮忙!!! IIS如何与Tomcat结合,请指教! 如何用java访问Excel文件? 如何添加空记录 非常着急!!请高手赐教!我刚注册,只有200分奉送!!谢谢!!! 哪儿可以提供ExpressNavBar vcl下? 各位高手快来指点一下,是关于动态创建组件的! 自己定义CMP的finder定位器的问题 四舍五入问题 请教牛人,能不能发一段java中有关计时的程序 一个小问题,请大侠指点,立即给分!!! 关于三角函数的问题 一个三百年前已忘得一干二净的问题 打包!!!问题问题。。。在线..... 一个c的问题!! [100分求救]在Canvas或Applet上画的图应该怎样输出为jpg图象呢? 用VC的console application 到底能编多大的程序? 关于程序在初始化时候注册窗口类的问题? 上网很慢 请问从log文件里都能得到哪些信息? 系统设计一般把数据表放一个数据库中还是分到多个数据库中? 树型控件的问题,PB8.03版本,大家遇到过吗? 强烈支持雍亲王倒分!!(江湖无赖) 怎样调用VC写的DLL 同步 兄弟们,我的rh8中怎么没有中文输入法? 在access中如何用函数?我怎么找不到函数库啊。那里有关于access的函数库教程? 请教 我装的DELPHI7.0不知为何在区域设置为“英文”是看到的汉字都成了“????”? <iframe>如何改变大小? 关于水晶报表的问题!(急!!!!)(在线等待~~~~~~~~) 关于vb脚本中运用三角函数的问题 一个三百年前已忘得一干二净的问题 cbc+数据库的问题????????? 能不能控制<input type='fele' ...>的文件类型,如不可输入(readonly全部都不能用了) 在线等待:谁有个最简单的加密算法? 谁有More Effective中文电子书! 请教一段java计时器的问题(送分了) 在ASP中能不能引用.net的框架组件,能的话该怎么做? This brown coat is 220 yuan 对线部分提问 220 yuan是划线部分 回答 How much is this brown coat 为什么 谁知道氧化乐果的成份? 求一篇武则天的无字碑的1000字左右作文不胜感激~~~~~~~~~ “姬”代表贵族还有和它一样形容高贵的字吗求求各位大侠 谁知道氧化乐果 的毒性 到底有多大?我想给自己室内种的植物喷点~对人的影响有多大?还有,狗狗不懂事,万一舔了喷过的植物,我知道氧化乐果有毒,就是不知道毒性到底有多大?、谁了解的,别 有关月亮的比喻句必须是自己造的 谁知道文字当中有多少个字是代表高贵的意思的?我想起一个店名. 翻译、我今天要去吃饭 bec高级水平是什么水平啊 谁有关于高贵的作文?500字左右 昊字是武则天创的吗?我听说昊字是武则天创的? 武则天简史(200字内) 2010高一化学需要记的内容有什么? 第一题第二题的1小题 武则天的评价(200字左右)简单评价了武则天的功过 士字下面一个口 怎么拼 是第二题的第一小题和第二小题 武则天50字介绍 That coat is ( ).A:100 dollar B:100 dollars C:100$ D:100 yuanswe have bags () all colors.A:in B:at C:on D:fortwenty-eight and twelve ()A:are fourty B:is forty C:isfourty D:are fortywe have bags ()all colors ()20 dollars.(用for in at 填空)thisbas 第四题的第一小题和第二小题怎么写? 为武则天写碑文 200字 十万火急! 我们电子公司要和外国人谈判,有没有精通会议翻译的人呢? 汽车4S综合管理系统 翻译成英文,怎么写 月亮的比喻句要新鲜的,不要晓夜,残月如死神之镰,将白惨惨的光洒在破败的墓地上月亮像一把冰冷的尖刀,插入游子的心.弯弯的月儿小小的船,小小的船儿两头尖.月亮象小船,弯弯的两头尖; 月 与0.3molH2O中含有相同氢原子数的是下列哪种物质?A.0.3molHNO3 B.3.612x10^23个HNO3分子 C.0.1molH3PO4 D.0.2molCH49.03x10^23个氮分子含_______摩氮原子,__________摩氢原子,___________摩质子,________个电子.在KCL和CACl2 汽车英语 里关于4s全文的翻译 BEC 高级 听力哪位有BEC高级 第四辑 听力的材料MP3什么的,能不能发给我, 某氯化镁溶液的密度为1.18g/cm,其中镁离子的质量分数为5.1%,300ml该溶液中氯离子的物质的量约为:很难吧 第二大题怎么写 BEC高级听力多少分大概能拿A 常温常压下,20L氢气和氧气的混合物点燃爆炸后,恢复到原来的状态,气体体积为2L,求氢气和氧气的体积各是多少? 怎么写第二大题 求BEC高级听力(2-4辑)! 什么成语, 第二大题,怎么写 bec高级听力不过还有希望过吗我考了2010年的高级bec,但是听力指定过不了,还有希望过吗,有没有考过高级的亲身经历听力没过但高级过了的同学啊. 英语翻译用上 I、want、to make friends with him、see、him、as soon as , 关于月亮的比喻句5.6句就好,但要生动,要长(也不要太长了,长一点就好) 河南省高一化学必修一拔高题多多益善,若是超过5题得就给5分,10题10分.答案也要 "谁第一个发现它" 翻译成英文. 关于月亮的比喻句耐心回答一下吧! 第二大题怎么写, 蝴蝶椅子的正式英文翻译是什么? 喷洒氧化乐果农药与怀孕 医生请进.我在喷洒氧化乐果农药后一个月内.(未采取任何安全措施)我爱人怀孕了.奔三的人了.盼望孩子已久.现在孩子已经快两个月了.真是非常的担心.望高人指 第二大题怎么写求解啊! 想将幸福灯饰翻译成英语~~~~有没有高手指点迷津,谢谢~~~ 氧化乐果农药放置时间长了会失效么?我是说超过保质期以后.有研究的可以给我留言,.我是学化学的,. 求解第二大题.短文填空 急需一份关于客户满意度和客户忠诚度方面的英文文献,如题,需要一份英文文献,关于客户满意度和忠诚度的,文献要有5000个单词左右.文献出处一定要有啊,我写论文用,实在找不到了.我要原文 八年级物理问题(关于电热的)为什么串联电路中导体放出的热量与电阻成正比,而并联电路中导体放出的热量却与电阻成反比?不要用物理公式来解释,用原理来解释!(我想到脑都爆了还没想 ----Could you please help me carry the box?Its too heavy.----( )A.Sorry.I have no time.S.Its my p为什么不选A呢 关于品牌忠诚度的 英语文献|英文全文 带译成汉字 rt怕带分提问木有人回答``浪费还是该追加``稳当晕 补充一点...译成汉字要有3000字...1楼的译过来大概有1200字...差1800额 物理w=qu怎样记牢? 月亮升上来了比喻句 英语翻译“新闻从业者的职业忠诚度” 我眼中的武则天1000字求求你们了!发发慈悲吧!再不告我就死翘了!谢谢了 BEC中级和6级哪个难 英语翻译1.HOPP以及抗静电剂、抗粘剂等各种辅助剂的进料检验.2.BOPP薄膜生产过程中的质量监控和对BOPP薄膜各种添加助剂进行效果追踪.3.新产品配方的研发和试验,以及后续效果的追踪.4.产品 喝了氧化乐果之后会怎么样?喝了氧化乐果对身体有什么反应? 一篇关于武则天的论文1000字
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘