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

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

 

惠普将于下季度推出低功耗的Moonshot服务器 webOS复活!LG收购webOS用于智能电视 那些因为HTML5而将消亡的产品 初窥iWatch用户界面:开创基于时间的全新体验 如何编写出拥抱变化的代码? 20个优秀的前端框架 以AWS和vCloud为标杆看四大开源平台的定位 桌面集成开发环境五年内必将“死亡”? 助影人圆梦奥斯卡 8mm相机应用其实很平庸 苹果应用审查团队叫停Cookie追踪技术 时势造英雄:中国早期O2O创业故事 iOS开发与Android开发的四大不同 “消极抵抗”AWS OpsWork?RightScale首次宣布转售并支持GCE 2012年VC都把钱投给了哪些大数据初创公司? 耐用性将成苹果iWatch最大挑战 Sphinx:首款全硬件加速HTML5游戏引擎发布 PayPal创始人Levchin又创办了一家移动支付公司Affirm Zuck、Bill Gates、Jack Dorsey上银幕激励孩子编程 十款最新开源的开发者工具/应用(组图) Django 1.5发布,Python 3开始进入主流? [爆料]英特尔:将Hadoop“固化”到Xeon中 姗姗来迟:微软终于发布Windows 7 IE10正式版 谷歌推Google+登录系统 与Facebook争夺用户信息 微软在CodePlex上开源C++ REST SDK 代号Casablanca 论OpenAPI的起源与历史 LinkedIn开源低延时变化数据捕获系统Databus 微软发布全新WP应用 随时查看App崩溃信息 做iOS开发,我为什么弃用Objective-C而选择RubyMotion? Stinger Initiative:让Hive提速100倍 2013年云计算的九大威胁 W3C小组发起新“汽车与Web平台业务组”项目 我电脑感染病毒并杀毒后,到达桌面后不出现图标??? LOAD备份时con't open a connecttion to site “SYB_BACKUP" . 请问将帖子另存为脱机文件后如何看,是不是要下个什么东西? 计算机系的考研有用吗? 为什么Agent执行完毕后,页面无法跳转到print指定的地方,在线等!!!! 求助,有关框架页的问题 请问如何可以把 TTreeview.items 和 TListview.items 保存到文件中? DVD解码器? 阿东,提供一个串口通讯测试程序吧! 为什么不能运行UPDATE语句? 清高手指教!!! windows网络编程书籍? 在什么地方可以看到Lotus有哪些保留域,怎么那公司连这都不提供呢? asp的一个BUG??谁能解决这个问题啊. 简单问题,呵呵! 刚毕业的计算机本科生怎么提高自己的工作经验!!! 图标变色问题 急!!程序做完了,但放到客户机上无法连接服务器上数据库??? 关于.net 2003+win2003 server下使用多媒体控件的问题,谢谢 布什总统给12岁中国小姑娘的回信 那里有VC6.0内幕技术的第五版下载 发送的问题[初学] 数据表加密 关于DELPHI6操作INI文件的问题! 散分啦,快来抢分!谁能提供计算机中英文论文一篇,来者都必有分! 求银行家问题的C语言解法 请问,在中国,VC程序员的主要工作是什么? 菜鸟问题,ADO添加记录已经在浏览器上看到结果了,可是实际的ACCESS数据库却没变呢 怎么刷新整个窗口包括标题栏 订购了程序员全年杂志,不是送一本书吗?都已经出版这么久了,怎么还没有送过来呢?! 散分啦,快来抢分!谁能提供计算机中英文论文一篇,来者都必有分! 两个combobox关联显示(在线等) 关于我的yamaha 声卡在2003 不能用的问题 我用WIN98浏览器下载的文件都有错误。 Tomcat中的发行目录怎么设置! 初学者的问题. 关于最终用户许可协议 JPG图片怎么能实现部分透明? 如何用VB.net编写控件 关于ASP中对文本文件的skip(n)操作到底怎么做 关于SQL的菜鸟问题 大家现在用什么软件管理源代码啊。60分相送。 今年是考C 还是C++啊? 怎样判断一个线程已结束 我用new新建了若干个基类是cwnd的窗体cmywnd,然后想在每个窗体内定时让它们自己消失,我应该用什么函数?是destroywindow吗?最后还用不 vs.net 2003 中文版 的帮助MSDN是不是有问题? 清问这个SQL有什么错,还是FB1。0不支持? 是我的usb口的问题吗?? 怪事 急 路径绝对正确,为什么服务器只能下载rar 不能下载EXE 文件 已知,f(x)=arctanx,其二导f''(x)=(-2x)/(1+x*x)^2,f''(0)=0,试: 一个有趣的问题,请大家看一个小程序,来者有分。 三顾茅庐的阅读答案~~求 谁可以告诉我地里种的经纬图怎么看啊,...越好, 你知道历史上那些人也用类比的说理方法而劝说成功的(至少说出两个人及事),事例! 《三顾茅庐》阅读答案 初中的经纬图怎么看?急... 什么是电桥 为什么电桥平衡? 三顾茅庐的阅读答案1;有成语来概括下列句子.1;就像鱼儿得到水一样啊.2;像拨开云雾见青天.2;简述刘备三顾茅庐的起因、经过和结果.3;‘他们来到隆中,只见那里的山冈蜿蜒起伏,好像 谁能教我怎样学地理?特别是那些经纬图,要怎么个看法呢? 简述非平衡电桥与平衡电桥之间的关系. 三顾茅庐阅读答案 物体做云变速直线运动第2秒内的位移为20m第5s内位移为40m求物体加速度和初速度(注0时刻的速度叫初速度) 请问怎么劝别人抓住机会?加上一些成功人士的例子!就是劝别人一定要抓住眼前的机会! 有一质量分布均匀的半圆环,半径为R,质量为M,其圆心处有一质点m,万有引力常量为G,求质点受到的万有引力大小 苗木地径与胸径怎么换算 比如一颗金桂地径是25厘米 那它的胸径大概是多少 麻烦给个准确的算法 一个圆台有几个面?面面相交成什么线 假设你在星球的质量为M,半径为R .可将人视为质点,秋千质量不计,摆长不变,摆角小于90度万有引力恒为G求①该星球表面附近的重力加速度②若人在荡秋千的过程中经过最低位置时的速度为v0, 食堂碗筷清洗消毒有什么标准或规范 圆台是有几个面围成的?它们是平面还是曲面?圆台的侧面和底面相交成几条线?它们是直的还是曲的? 初一数学可以分为哪四大类如代数 急 黑龙江 现在胸径13-14公分的杨树市场价格多少! 细胞分化是指细胞分裂产生的子细胞发生变化,形成具有不同( )( )和 ( )的细胞.最细胞分化是指细胞分裂产生的子细胞发生变化,形成具有不同( )( )和( )的细胞.最终产生的子 you do 能直言相劝的人是什么心 圆台共有几个面,这些面相交于几条线? IT行业常说的“AMD的U搭配N卡”中的“U”跟“N卡”是什么意思?很多人都说这些词, 还在烦恼环形灯管怎么换? 以小人之心度君臣之腹,“度”发音是“duo"还是“度” 若等腰三角形ABC的腰长AB=2,顶角∠BAC=120度,以BC为边的正方形面积为? a lot of 与lots of与a lot的区别,修饰什么! 真核生物中基因工程的载体构建方法 若等腰三角形ABC的腰长AB=2,顶角三角形BAC=120度,以BC为边的正方形面积为多少? 生活垃圾主要分为哪四大类? 如何构建原核生物载体 万有引力的题:有一个质量为M,半径为R的均匀圆环,在圆环上剪去长为d的一小段(d iphone4电充不进去,今天自动关机了 充电器插上没有反应 也开不了机 怎么回事啊? 5千克花生平均装在4个盒子里,每盒重多少千克,每盒重量是总重量的多少? 质量为2kg的物体在40N水平推力作用下,从静止开始1s内沿竖直墙壁下滑3m问 1物体运动的加速度大小2物体受到摩擦力大小3物体与墙间的动摩擦因数 按要求找图或画画!1.女,普通中学生,金色短发,穿着白色T恤衫和淡绿色的外套2.性格:热情,执着3.图片千万千万不要日本动漫的唯美和华丽,千万千万不要!线条要粗旷,但看起来也要漂亮.4.从头 关于市民出行交通工具选择方式调查报告复制也行 另求调查报告格式 △ABC三边长为6,8,10,那么外心和重心间距离 用的是28w的环形灯管,坏了换32w的,之后不亮,只是亮红光灯具店没有28的就买了32的,按上之后和那个卡子比稍微大点,按上之后就那个接头处等了15多秒才亮一点红光~那店主明明说能用,怎么弄了 数字电桥的用途?有什么用啊? 英语翻译李磊足球踢得好,但羽毛球打得不好.同学们常在游泳池里游泳.艾米放学后步行回家吗? 若铁球从塔上落下的过程中,最后一秒内的位移约是塔高的51%,则这塔有多高 数字电桥问题电桥测量电感和电容的精度最高能达到多少?数字电桥频率多少合适?是不是越高越好?频率高低和测量有什么关系?是不是频率越高测量精度越高? 火能使家里暖和用英语怎么说,使用keep 废餐巾纸是什么垃圾 数字电桥的使用和注意事项? 谁能帮我把雪尔音译成英文名字哈 T.T我要音译的.不要翻译的.就跟“夏尔”的音译是 share 这类型的. 餐巾纸属于哪种垃圾 这盒子有多重的英文怎么写(3种) 在三角形ABC中,∠A=∠B=30°,∠MCN=60°,∠MCN的两边叫AB边于E,F两点,将∠MCN绕C点旋转,(1)画出△BCF绕点C顺时针旋转120°后的△ACK(2)在(1)中,若AE^2+EF^2=BF^2,求证BF=根号2CF 细胞生长:字细胞在生长过程中,发生变化,形成具有( )和()的细胞的过程 原核表达,为什么空载表达的很好,目的蛋白没有表达,可能的原因有什么?载体用的是PTE32a+,菌用的是大肠杆菌Rosetta. 《三顾茅庐》这篇文章题目答案有吗 教我看地理经纬图啊?! 有一蛋白质混合物(重组表达蛋白的菌体裂解混合物),怎么测定其中目的蛋白的浓度? IT管家到底是什么 会议分组安排 美国数学建模lunwen 求用英文写一篇在旅游业工作的优缺点?字数在150以内就行了.Advantages and disadvantages of working in the tourism/hospitality industry?这个是题目.从哪复制的啊,这么不靠谱 华人要求ABC就歧视言论道歉国际新闻早报:多名俄罗斯高官因瞒报收国外网友贴图揭秘“土豪”子弟的一天【新加坡:日与夜的魅惑中国人流行取“洋名” 老外却热衷取中港媒:日本领导人不要遮住中日关系最后潘基文发言人:美已保证今后不对联合国美国安局局长:监听报道“完全错误” 世界最大机场将举办国际航展 25家中中国全票当选联合国经社理事会成员 任义乌城区一黄金地块6.1亿成交 业内杭州地铁6号线过钱塘江段开始水上勘探杭州到富阳的514路下月换新车 一人杭州一23岁女子酒后绿化带小解 不慎温州多家典当行看走眼 “金包银”的假俄外长称叙问题国际会议遭破坏 批西方宁夏“10·14”灭门杀人案犯罪嫌疑病房成了临时募捐点 20余万善款驰援浙江180项科技成果下月开槌出售安徽宁国民政局长否认叫停网友募捐 自日媒:解密文件显示日本曾试图阻止中美又要被裁?曝鹈鹕为签古德温或放弃“师论有为政府和有限政府——林毅夫答田国“爱国转发”绑架舆论场 谁在印度狂喊蒙牛校园3X3篮球赛精彩闭幕 郑州大从三中全会到六中全会:党中央构建“四狗界赢家!流浪狗被收养 翻身成“小小11月7日白杰品股:三大主线不满前妻讨钱态度差 台家暴男泼硫酸致4日人民币对美元汇率中间价大幅下调2【总理出访老外谈】“16+1”机制有日本过去一年黄金走私案激增 或因消费文博会将台湾顶级工艺精品传递给两岸民深港通渐行渐近 机构看好沪指震荡上行巴西女子举行生前葬礼圆梦 躺在棺材中全国人大任命肖捷为财政部部长张近东爱子督战国米 少东家气质出众全国人大任命陈文清为国家安全部部长邳州国际半程马拉松开赛 肯尼亚选手包国安部、民政部、财政部3部部长换人(男子无视规定动车吸烟致列车降速 沪铁吴泾镇一“来沪人员居住点”迎来改造契
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘