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

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

 

回顾苹果2013:硬件几乎无突破 热衷收购 敏捷开发流程管理须参考的3个要素 微软潘正磊谈DevOps、Visual Studio 2013新功能、.NET未来 Jail Breaking之后,iOS 7的指纹识别还hold住么? “勇者前线”开发商Gumi获1900万美元融资 工信部发首批10张虚拟运营商牌照 开发者有哪些新机会 【PPT集萃】十位一线专家分享Spark现状与未来 谁主沉浮,亚马逊和思科角力DaaS市场 忆往昔峥嵘岁月稠——看苹果第一代iPhone的“风骚”往事 开源工具链“大牛”的经验分享:HelloGCC 2013精彩演讲回顾 20个超实用的JavaScript技巧及最佳实践 【开源专访】Linux Deepin:做更好用的Linux桌面系统 访Andy Jassy:感受亚马逊AWS生态观,思考国内外云计算差异 站到风口,最先飞起来的能将服务做到极致的IDC 苹果Siri再获一专利:可使用自然语音输入来搜索和标记图片 研发周报:Google抛弃C语言,采用Go语言重写Go编译器 取其精华 IE11里移除和新增的功能 大胆预测亚马逊即将推出的五大产品或服务 移动周报:GitHub章鱼猫中国之行 三星与LG的新动向:同样的物联网 ,不同的玩法 从Twitter到Tinder,看社交媒体在2013年的沉浮 一周消息树:有道周枫和他的“放养”团队、太极助手惹“非议” Netflix:使用大数据驱动商业决策 “中国杯”游戏极限开发大赛报道 回顾2013软件开发:JavaScript领风骚 京东“宙斯杯”创新应用大赛,百万奖金为“你”而等待 12306上的分布式内存数据技术GemFire Canalys:苹果、三星2014年仍统治平板市场 微软压力山大 Google和苹果的下一个战场 回顾2013科技界大事件:Mayer登Vouge杂志、Ballmer离职 《近匠》第03期:移动开发工具访谈,AVOS Cloud——后端的金刚钻 在西单,居然有个MM说。。。。。。。。(真事) 如何判断程序是否使用了MFC库 如何用Canvas将Memo中的内容显示到Image上? 嗨!你去拒绝那个白痴吧,我真受不了他了。我要退分!!! 有全套的ERP源代码为你提供 请问那里有C++builder 6.0的书? 关于函数调用的问题,各位指教 ◎◎◎◎◎◎◎ 关于POP3协议 ◎◎◎◎◎◎◎◎◎ 哪位朋友知道中国移动的网址,可以查询话费和账单的? 各位GG,妹妹对你的爱称是哪个? VC6中基于mfc的一个程序,我想用API函数 ImageNtHeader,却得到如下提示(见内)请问如何解决?? 使用VS.net开发的程序是不是必须在装有.net framework的机器上才可以运行? 如何对内存变量中的xml字符串进行分析操作? VB调用Excel,如何设置单元格中的数字为文本格式 请问成人自考电大与正规大学在招聘时区别大吗? Delphi高手,快来帮忙 我爱西瓜小姐 想看有关VB源码 超级难题啊,痛苦! 局域网下在WIN2000/XP里如何用VB程序自动改变IP? 请招人时自考成人电大与正规大学的差多少呢?急! MDI子窗体显示时有一个明显的由小到大的变化过程,看起来很不舒服,请教该如何解决? 怎样用语句创建NMSMTP控件 局域网下在WIN2000/XP里如何用VB程序自动改变IP? 在Delphi 如何像C++里用extern关键字来引用另外一个单元的全局变量? 对联 谁能帮我出一套关于JSP高级程序员的面试题,并附答案!高分相送,不止这100分 MFC中对文本文件能否以行为单位进行读写 大侠给几篇C程序原代码 到底要怎样才能用好progressbar进度条? 参与者有分! 怎样调用 其它窗体的内的对象的属性?? JSP的应用经验 工具条的问题,求解 我喜欢西瓜小姐 我公司现有固定电话收发电子邮件系统,可收附件,将WORD,HTML文档转换为TXT文本 关于内码问题 远程控制 关于JDBC2.0的问题(50分!!!!) 哪位有高招? 升级BIOS和升级主板? 急!急!急!急!窗口不能关闭. 哥哥姐姐们请帮忙???(急需linux环境下用php+mysql如何实现搜索引擎) 大家赞不赞成开一个Palm技术区?赞成的跟贴,满50个就开。 定义 Dim reader As System.Data.SqlClient.SqlDataReader lvlvlvlylyly请看,你的贴子我加不上了,还查一段程序加在这里了 如何传送monthview1中用户选择的日期到其他窗体里 你该怎么做呢 国内什么样的网站托管好?还是选择国外的? 女网友一定要小心 mschart控件问题 赶快来尝试一下吧! Na2O2和H2SO4反应,H2SO4为什么是冷而稀啊是浓的话方程式是什么? 在焰色反应中 鉴定钾离子时蓝色钴玻璃的作用? 用小苏打片水清洗外阴及阴道口有什么作用?另注:怀孕初期的孕女可否使用? Na2O2与稀硝酸反应的方程式谢谢 可乐密度大还是水的密度大?.实际上我还想问可乐密度大还是七喜密度大0.0\x09求大神帮助 请问:丙烯酰胺对人体的中毒量是多少?(由消化道进入) 酒可以二次蒸馏吗 Na2O2与Na反应生成Na2O的条件是什么? 用小苏打水清洗阴道,会有副作用吗?男女都能用来清洗吗?怎么个配比?不是说能治疗霉菌性阴道炎吗>怎么会有副作用呢/能说的具体点吗> 为了验证突触传递的特点,自选实验器材来设计实验进行探究(有一个图是:轴突→突出囊泡→肌膜 的一个过程画的和课本上描述神经递质的释放图一样就是多标了这几个字样)第一步:第 FeSO4和Na2O2反应生成什么?题目中告诉我FeSO4和Na2O2的比为1:1 饼干里对身体不好的物质中,最多的是不是丙烯酰胺?饼干里对身体不好的物质是不是丙烯酰胺? 关于生物实验原理探究性实验实验原理怎么写啊?比如探究甲状腺激素对小鼠新陈代谢的影响 实验是通过测定小鼠吸进的O2来探究的这个实验实验原理该写甲状腺激素会影响新陈代谢从而影响 聚乙稀和聚丙稀怎么区分?比如用火烧有什么不一样? 丙烯对人体有什么危害 生物实验原理怎么写 Na2O2反应生成什么 丙烯对身体有害吗? 癌细胞的恶性增殖和转移与癌细胞膜成分的改变有关.那到底是什么成分改变呢?癌细胞的恶性增殖和转移与癌细胞膜成分的改变有关.具体是哪些成分改变?为什么这些成分改变就会引起癌细胞 原理比如:单一变量、等量最适……还有什么? 到底有没有聚乙烯酰胺?听说是从聚丙烯酰胺中提炼出来的 也是洗煤厂 污水处理什么用的 可是在百度上总查不到关于聚乙烯酰胺的信息啊.不会吧。。 我爸说的啊 他厂子里产的这个 神经纤维膜经去极化,反极化,负极化后,钾钠离子换了位置,那后面怎么换回来使钠在外,钾在内? 糖尿病患者为什么尿量增多尿中有糖 钾离子氢离子醋酸根离子氯离子共存吗? 癌细胞为什么能无限增殖?最新的理论是什么 散聚的读音六年 Hi 怎样鉴别亚硝酸钠和硝酸钾 Fe2O3和浓H2SO4加热会反应吗 吡嗪酰胺怎么读法 向a 体积0.05m o l l 的醋酸中加入b 体积0.05m o l l 的K O H 中,a >b则醋酸和醋酸根离子与钾离...向a 体积0.05m o l l 的醋酸中加入b 体积0.05m o l l 的K O H 中,a >b则醋酸和醋酸根离子与钾离子的关 Fe2O3与H2SO4反应的离子方程式 请你设计一个小探究实验,证明蝗虫呼吸时气体进入身体的结构在胸部和腹部,而不在头部.(实验设计题) 哪种食品中含亚硝酸钾和亚硝酸钠 Fe2O3、K2Cr2O2、H2SO4反应的方程式 可乐与水的密度一样吗? 测量可乐的密度只有橡皮筋、细线、石块、刻度尺和足够的水.(1)推导出测量可乐密度的数学表达式;(2)说明测量步骤 淘米水的妙用 阅读答案 NA2SO4 加什么 发生什么反应生成H2SO4应该不能用酸吧 H2SO4就是强酸了 不是强酸置弱酸吗?那要怎么反应? 丙酮为什么能使蛋白质变性?是什么官能团参与反应? 淘米水的妙用的答案啊~! Na2O2+H2SO4+KMnO4反应中哪个为还原剂 GUS染色中,丙酮固定的作用是什么,是沉积蛋白吗?强酸、强碱、有机溶剂都可以使蛋白变性,但是我的问题是gus染色中丙酮的作用,如果也是让蛋白变性,那变性的蛋白没有了酶活,怎么和底 水开久了会产生亚硝酸盐,喝了对人体有害是吗?那么煲汤的水不是也开很久吗?还有外面煮拉面的水啊什么的不是一直都在滚吗?是不是都有害? 为什么NO不能和浓H2SO4或Na2O2反应被氧化? 为什么尿液经常会是黄色的? 淘米水的妙用 怎样鉴定钾离子 用六亚硝基合钴络离子现象 方程式 新鲜蔬菜最好不要隔夜食用,彩业中的硝酸盐容易变为亚硝酸盐,危害人体健康.这句话对不对呢?是一道判断题,请各位高手们帮忙解答,谢谢! 淘米水可以干什么? 大量存在会干扰钾离子的鉴定的离子是 为什么会经常尿黄,尿热呢? 癌细胞的转移为什么与细胞膜上糖蛋白的减少有关? 1、除去食盐中的杂质氯化钙和硫酸钠的方程式2、除去食盐中的杂质氯化钙 为什么我的尿经常是黄色的?本人有一年的前列腺炎,现在是慢性的了.最近小便总是黄色,我很郁闷.我不尿频,但是小便时还会变黄,这是为什么?我想去做尿检,有用麻?我喝好多水,还经常打打篮 癌细胞转移与细胞膜上糖蛋白减少有关,构成糖蛋白的多糖和蛋白质共有的元素是? kcl,k2so4都属于钾盐,都含有钾离子,怎样鉴定钾离子 > 尿黄,为什么? 细胞膜上糖蛋白的减少属于癌细胞物理\化学还是生物条件 谁能够告诉我钾离子除了焰色反应还可以用什么方法鉴定 pam(聚丙稀酰胺)、pac(聚氯化铝)、paf(聚氯化铁)对人体的危害
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘