ITPub博客

首页 > 应用开发 > IT综合 > ■ 实例学习 PHP 之表单处理篇 (转)

■ 实例学习 PHP 之表单处理篇 (转)

原创 IT综合 作者:worldblog 时间:2007-12-07 09:32:41 0 删除 编辑
■ 实例学习 PHP 之表单处理篇 (转)[@more@]

标题: ■ 实例学习 PHP 之表单处理篇
   学习前的准备:

   要想学习PHP,当然少不了要安装PHP啦,所以如果你是初次学习,请先阅读网络学院的文章:

  

   .NET/school/php4Linux.htm">PHP4.03在linux下的安装

   win98.htm">PHP4.04在win98下的安装

   win2000.htm">PHP4.04在英文win2000下的安装

   如果你找不到安装程序请到下面下载

   PHP4.04Beta win32 安装程序

   PHP4.03源程序

   PHP3.0.16 WIN32 安装程序

   PHP3.0.16源程序

   OK!现在应该已经没有什么可以阻止我们学习了,Let's go!

   在学习开始以前,我们先交待一下关于表单的基础知识,如果你对HTML非常熟悉,那么可以跳过该部分,直接学习。

   故名思议表单是利用网页收集数据的工具,比如你想在网上搞个群众调查啊什么的,肯定是少不了要用他的。下面我简单介绍一下表单的基础知识,关于他的详细内容请自行查阅HTML手册。

   表单的使用其实非常简单,大家先看一下下面的例子:

  

   < FORM action="< ?php echo $PHP_SELF; ?>"METHOD=post>

   名字: < INPUT TYPE=TEXT NAME="name">

   单项选择:

   < INPUT TYPE=RADIO NAME="first" VALUE="我很笨">我很笨

   < INPUT TYPE=RADIO NAME="first" VALUE="我非常笨">我非常笨

   < INPUT TYPE=RADIO NAME="first" VALUE="我简直就是个傻冒"> 我简直就是个傻冒

   多项选择:

   < INPUT TYPE=CHECKBOX NAME="second[]" VALUE="我喜欢打蓝球">我喜欢打蓝球

   < INPUT TYPE=CHECKBOX NAME="second[]" VALUE="我喜欢游泳">我喜欢游泳

   < INPUT TYPE=CHECKBOX NAME="second[]" VALUE="我喜欢跳舞">我喜欢跳舞

   < INPUT TYPE=CHECKBOX NAME="second[]" VALUE="我喜欢爬山">我喜欢爬山

   < INPUT TYPE=HIDDEN NAME="stage" VALUE= "results">

   < INPUT TYPE=SUBMIT VALUE= "谢谢">

   < /FORM>


   名字:
单项选择: 我很笨 我非常笨 我简直就是个傻冒
多项选择: 我喜欢打蓝球 我喜欢游泳 我喜欢跳舞 我喜欢爬山

   怎么样?看明白了吗?上部分是表单的html源代码,下部分则是这个表单在浏览器的表现形式。 标志< FORM action="< ?php echo $PHP_SELF; ?>"METHOD=post> 表示开始一个表单,到标志< /Form>时表单结束。处理这个表单的程序,用Form标志里的action属性指出。在这里为< ? echo $PHP_SELF; ?>, 其中$PHP_SELF是PHP中的一个global 变量,用于保存目前执行 PHP 程式页面的档名,< ? echo $PHP_SELF; ?>的意思就是用当前的PHP程序来处理这个表单。那么下面的METHOD=post表示什么意思呢?其实表单从浏览器发给服务器有两种方法. GET 和 POST. GET方法将数据打包放置在环境变量QUERY_STRING中作为URL整体的一部分传递给服务器。 POST做很多类似GET同样的事情, 不同的地方就是它是分离地传递数据给脚本. 你的脚本通过标准输入获取这些数据. QUERY_STRING环境变量将不再设置.因此POST有更好的安全性,尤其如果你的表单中有很多数据的话. 当你用GET, 这个服务器就分配变量QUERY_STRING给所有的表单数据, 但是这个变量可存储量是有限的. 换句话说,如果你有很多数据但是你又用GET,你会丢失很多数据。 如果你用POST, 你可以尽可能多地使用数据, 因为这些数据从来也不分配到一个变量里。此外用post传递数据还有一个好处,它不会象get那样把你传送的数据暴露在浏览器的地址栏中,比如象下面这种:form.php?name=genius&pwd=123456 ,明白了吧?所以还是用post让人安心一点啦。

   (编者注:由于数据库的兼容问题,在上文的源代码中的“$”符和上引号请在实际应用中改为半角字符的相应符号。若有不便之处,敬请原谅。)

   下面继续我们的学习吧,在建立表单的过程中,你一般只会用到两个标志,一个是前面说的; Form>标志,还有就是 ; Input>标志,不要小看它哟,表单里的各种小控件都是由它来建立的。借助于Input标志的Type属性可以定义输入方法类型,有效值为TEXT,PASSword,RADIO,CHECKBOX,SUBMIT,RESET,IMAGE,FILE,HIDDEN和BUTTON。 下面是对这几个输入类型的简要说明:

TEXT 产生简单的单行文本输入字段,为了取得多行文本,用; TEXTAREA>标志 PASSWORD 和TEXT一样产生简单的单行文本输入字段,但不会在屏幕上显示输入内容 RADIO 产生可开闭的小单选按钮,多项选择可用CHECKBOX型或者; select>标志 SUBMIT 产生用于将所有名称数值对提交给表单处理程序的按钮 RESET 用于将所有输入方法复位为空值或缺省值 IMAGE 将提交按钮变成图形,这个数值与提交按钮一致,只是选择图形时鼠标位置x、y坐标也发送给表单处理程序 BUTTON 产生不与脚本进行特定交互功能的按钮

   现在我们已经知道如何生成输入小控件了,那么在这些控件里输入的数据怎么传递给我们的程序来处理呢?在d 在INPUT标志中有一个NAME属性专门用于给输入的数值取名,例如: NAME="first"。在定义以后,如果想程序访问这个数据,用global申明一下就可以使用喽。如果想定义数据默认值的话,可以用Value属性定义,例如上面程序的 VALUE="我很笨" 就是定义了一个默认值,下面我们来看一个单项选择的实例:

   ; INPUT TYPE=RADIO NAME="first" VALUE="我很笨">我很笨

   ; INPUT TYPE=RADIO NAME="first" VALUE="我非常笨">我非常笨

   ; INPUT TYPE=RADIO NAME="first" VALUE="我简直就是个傻冒"> 我简直就是个傻冒

   从上面大家可以看出NAME,VALUE的基本用法了吗?什么?还不明白…………(地藏晕倒在地……)

   OK,我们的表单使用就简单的讲到这里吧,下面开始我们进入正题 ----- PHP处理表单

   用PHP来处理表单数据实在是一件非常简单的事情,打个比方就好象你吃饭时用筷子一样,使用非常的自然,没有什么需要特别注意的地方。老样子,大家开始学习以前先看看下面的代码吧。

   上面是一个非常类似调查表的PHP例子,由于程序比较简单,所以没有做什么注解。大家在仔细看程序之前可以把这段代码拷下来在自己机器运行一下先看看实际效果,这样有一个直观的印象。

   (编者注:由于数据库的兼容问题,在上文的源代码中的“$”符和上引号请在实际应用中改为半角字符的相应符号。若有不便之处,敬请原谅。)

调查表;/title></P> <P><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></P> <P></head></P> <P><body bgcolor="#FFFFFF"></P> <P><?php</P> <P>function display_form() {</P> <P>global $PHP_SELF;</P> <P>?></P> <P><FORM action="<?php echo $PHP_SELF;?>" METHOD=post></P> <P>名字:<NPUT TYPE=TEXT NAME="name"><BR></P> <P>   单项选择: </P> <P><INPUT TYPE=RADIO NAME="first" VALUE="我很笨">我很笨</P> <P><INPUT TYPE=RADIO NAME="first" VALUE="我非常笨">我非常笨</P> <P><INPUT TYPE=RADIO NAME="first" VALUE="我简直就是个傻冒"> 我简直就是个傻冒 ; br></P> <P>   多项选择: </P> <P><INPUT TYPE=CHECKBOX NAME="second[]" VALUE="我喜欢打蓝球">我喜欢打蓝球</P> <P><INPUT TYPE=CHECKBOX NAME="second[]" VALUE="我喜欢游泳">我喜欢游泳</P> <P><INPUT TYPE=CHECKBOX NAME="second[]" VALUE="我喜欢跳舞">我喜欢跳舞</P> <P><INPUT TYPE=CHECKBOX NAME="second[]" VALUE="我喜欢爬山">我喜欢爬山<BR><BR><INPUT TYPE=HIDDEN NAME="stage" VALUE= "results">;p></P> <P><INPUT TYPE=SUBMIT VALUE= "谢谢">;/p></P> <P></FORM></P> <P><?php</P> <P>}</P> <P>?></P> <P>//程序开始</P> <P><?php</P> <P>function process_form()</P> <P>{</P> <P>global $name ;</P> <P>global $first;</P> <P>global $second; </P> <P><BR>if ($first == '我很笨') { $first_message = '你不笨。'; }</P> <P>elseif ($first == '我非常笨') { $first_message = '你很聪明。'; }</P> <P>else { $first_message = '你简直就象是一个聪明的人了。'; } </P> <P>$favorite_second = count($second); </P> <P>if ($favorite_second ;= 1) </P> <P>{$second_message = '但你很快就会在动物园里死去,忏悔吧!';} </P> <P>elseif ($favorite_second > 1 && $favorite_second ; 4) </P> <P>{$second_message = '你是只爱运动的的猩猩。';} </P> <P>else {$second_message = '你运动的太多了,对猩猩来讲已经过量,你准备棺材吧,:(';} </P> <P>echo "这是一项针对猩猩的测试:;br>;br>"; </P> <P>echo "你好! 你的名字叫:$name. ;br>;br>";</P> <P>echo "你的测验结果是。。。。。$first_message $second_message"; </P> <P>} </P> <P>?> </P> <P><?php </P> <P>if (empty($stage)) { display_form(); }</P> <P>else { process_form(); }</P> <P>?> </P> <P></body> </P> <P></html> </P><BR></SPAN> <p style="clear:both;"></p> <p class="translate"> 来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-989228/,如需转载,请注明出处,否则将追究法律责任。 </p> </div> </div> <div class="preview-footer clearfix"> <!--已点赞、收藏--> <div class="icon-praise" id="praise" onclick="blogObj.praise($(this),'/praise/')"><span class="text"></span><span class="num">0</span></div> <div class="icon-collect" id="collect" onclick="blogObj.praise($(this),'/favour/')"><span class="text"></span><span class="num">0</span></div> <div class="share-group fr"> <div class="bdsharebuttonbox bdshare-button-style0-16" data-bd-bind="1522216707615"> <span class="fl">分享到:</span> <a href="javascript:;" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博"></a> <a href="javascript:;" class="bds_sqq" data-cmd="sqq" title="分享到QQ好友"></a> <a href="javascript:;" class="bds_qzone" data-cmd="qzone" title="分享到QQ空间"></a> <a href="javascript:;" class="bds_weixin" data-cmd="weixin" title="分享到微信"></a> </div> <script> window._bd_share_config = { "common": { "bdSnsKey": {}, "bdText": "", "bdDesc": "", "bdMini": "", "bdMiniList": false, "bdPic": "", "bdStyle": "0", "bdSize": "32" }, "share": {"bdSize": 16} }; with (document) 0[(getElementsByTagName('head')[0] || body).appendChild(createElement('script')).src = 'http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion=' + ~(-new Date() / 36e5)]; if ($(window).width() < 1320) { if ($(window).width() < 1200) { $(".sideslip").css({ "left": "20px", "margin-left": 0 }) } else { $(".sideslip").css({ "margin-left": "-590px" }) } }</script> </div> </div> <div class="article-context"> <div class="fl"> <span class="color77">上一篇:</span> <a href="http://blog.itpub.net/10752043/viewspace-989226/">谈用Delphi程序获取拨号连接的动态IP地址 (转)</a> </div> <div class="fr"> <span class="color77">下一篇:</span> <a href="http://blog.itpub.net/10752043/viewspace-989230/">Moving the Origin (转)</a> </div> </div> <input type="hidden" id="blogId" value="989228"> <!--评论开始--> <div class="blog-comment"> <div class="new-comment"> <input type="hidden" id="hid" name="hid" value="989228"> <input type="hidden" name="_token" value="3pKUvqc7DY9bdHFsNUAHjJXdNRFvWAz8LVgGrR1U"> <a class="avatar" href="javascript:;"> <img src="http://blog.itpub.net/images/user_pic_default.png"></a> <!--用户未登录--> <div class="sign-container"> <span>请登录后发表评论</span> <a class="btn btn-sign"> <a class="layui-btn ml30" onclick="blog.login(event)">登录</a> </a> </div> <!--用户已登录--> <textarea placeholder="请写下你的评论…" onfocus="blogObj.textareaFocus($(this),200)" maxlength=200></textarea> </div> <div class="comment-list"> <div class="top-title"><span class="all-comment">全部评论</span> <span class="colorbb ml20"></span> </div> <div class="comment-items" id="comment_items"> <script type="text/template" id='blog_template'> <%for(var i=0;i <items.length;i++){%> <div class="comment-item"> <div class="author"> <a target="_blank" href="/<%=items[i].uid%>" class="avatar"> <img src="<%=items[i].headimg%>" alt=""> </a> <div class="info"> <div class="name"><a target="_blank" href="/<%=items[i].uid%>"><%=items[i].username%></a> <span class="fr reply-btn" onclick="blogObj.newComment($(this),'<%=items[i].username%>',<%=items[i].id%>)">回复</span></div> <div class="time colorbb"><%=items[i].createtime%></div> </div> </div> <p class="comment-wrap"><%=items[i].content%></p> <%if(items[i].items.items.length) { %> <div class="sub-comment-list"> <%for(var j=0;j<items[i].items.items.length;j++){%> <div class="sub-comment"> <div class="color77 time-reply"> <span class="time"><%=items[i].items.items[j].createtime%></span> <span class="reply-btn fr" onclick="blogObj.newComment($(this),'<%=items[i].items.items[j].username%>',<%=items[i].items.items[j].id%>)">回复</span> </div> <p><a href="/<%=items[i].uid%>"><%=items[i].items.items[j].username%></a>   回复   <a href="/<%=items[i].touid%>"><%=items[i].items.items[j].tousername%></a>: <span class="content"><%=items[i].items.items[j].content%></span></p> </div> <%}%> <%if(items[i].items.total > 5) { %> <div class="more-comment"><span class="sub-comment-count">还有<i class="count"><%=items[i].items.total-5%></i>条评论</span><span class="more-comment-btn" onclick=blogObj.loadSubComment($(this),<%=items[i].id%>) data-count=1 data-flag=true>点击查看</span></div> <%}%> </div> <%}%> </div> <%}%> </script> </div> </div> </div> <!--评论结束--> </div> <script> </script> <div class="fr w290"> <!--作者信息开始--> <!--作者信息开始--> <div class="author-info right-fixed "> <div class="head-img"> <a href="http://blog.itpub.net/10752043/"><img src="http://account.itpub.net/api/avatar.php?uid=10752043" alt=""></a> </div> <div class="author-name"><a href="http://blog.itpub.net/10752043/">worldblog</a></div> <div class="author-intro"> </div> <ul class="tree-list clearfix"> <li> <div class="item-tt">博文量</div> <a href="http://blog.itpub.net/10752043/"><span class="item-num blognum">6241</span></a> </li> <li> <div class="item-tt">访问量</div> <div class="item-num blogviewnum">2410538</div> </li> </ul> </div> <!--作者信息结束--> <script> var data = {uid: 10752043}; $._ajax({ url: '/getAuthorInfo/', data: data, type: 'get', dataType: 'json', success: function (data) { if (data.code == 200) { var data = data.data; $(".blognum").text(data.blognum); $(".blogviewnum").text(data.visitednum); } } }); </script> <!--作者信息结束--> <!--博文推荐开始--> <div class="blog-choice right-fixed"> <h3 class="choice-title">最新文章</h3> <ul class="newul"> <li class="new-item"> <a href="http://blog.itpub.net/10752043/viewspace-1005762/" class="clearfix"> 可怕的 C# (转) </a> </li> <li class="new-item"> <a href="http://blog.itpub.net/10752043/viewspace-1005755/" class="clearfix"> Unify the Role-Based Security Models for Enterprise and Application Domains with .NET (转) </a> </li> <li class="new-item"> <a href="http://blog.itpub.net/10752043/viewspace-1005754/" class="clearfix"> Building Secure ASP.NET Applications: Authentication, Authorization, and Secure Communication (转) </a> </li> <li class="new-item"> <a href="http://blog.itpub.net/10752043/viewspace-1005752/" class="clearfix"> [Sample] Playing with music file (转) </a> </li> <li class="new-item"> <a href="http://blog.itpub.net/10752043/viewspace-1005751/" class="clearfix"> 中文web-app_2_3.dtd (转) </a> </li> <li class="new-item"> <a href="http://blog.itpub.net/10752043/viewspace-1005750/" class="clearfix"> 使用ASP.NET加密口令 (转) </a> </li> <li class="new-item"> <a href="http://blog.itpub.net/10752043/viewspace-1005748/" class="clearfix"> C++ Builder 高手进阶 (五)用BCB编写多线程应用程序 (转) </a> </li> <li class="new-item"> <a href="http://blog.itpub.net/10752043/viewspace-1005747/" class="clearfix"> 24点游戏探秘系列6:用概率统计的眼光看24点游戏 (转) </a> </li> <li class="new-item"> <a href="http://blog.itpub.net/10752043/viewspace-1004904/" class="clearfix"> Schema-oriented message destination (转) </a> </li> <li class="new-item"> <a href="http://blog.itpub.net/10752043/viewspace-1004903/" class="clearfix"> J2EE vs. Microsoft.NET (转) </a> </li> <ul> </div> <!--大牛精选结束--> </div> </div> <div class="icon-back-top" onclick="$('html,body').animate({scrollTop:0},'slow');"></div> <!--main部分结束--> <!--百度推送--> <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> <!--2019-10-17 14:14:25--> <!--footer部分开始--> <div class="blog-footer"> <div class="w1200 pr"> <div class="footer-links"> <a class="icon-blog icon-wx mr30"> <div class="wx-qrcode"> <img src="http://edu.itpub.net/images/qrcode.jpg" alt=""> </div> </a> <a href="https://weibo.com/itpub2001?from=myfollow_all" class="icon-blog icon-wb" target="_blank"></a> </div> <p class="footer-nav"> <a href="http://www.it168.com/bottomfile/it168.shtml" target="_blank">支持我们</a> <a href="http://www.it168.com/bottomfile/tgzn.shtml" target="_blank">作者招募</a> <a href="http://www.it168.com/bottomfile/sytk.shtml" target="_blank">用户协议</a> <a href="http://blog.itpub.net/31509949/viewspace-2157750/" target="_blank">FAQ</a> <a href="http://edu.itpub.net/contactus.html" target="_blank">Contact Us</a> <script src="https://s22.cnzz.com/z_stat.php?id=1274521965&web_id=1274521965" language="JavaScript"></script> </p> <p>北京盛拓优讯信息技术有限公司. 版权所有  <a style="color:#777777;" target="_blank" href="http://beian.miit.gov.cn">京ICP备09055130号-4</a>  北京市公安局海淀分局网监中心备案编号:11010802021510</p> <p>广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员</p> </div> </div> <!--footer部分结束--> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?5016281862f595e78ffa42f085ea0f49"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <!-- END STAT PV --> </body> </html>