PHP入门速成(2)


Posted in PHP onOctober 09, 2006

表单处理

PHP为用户提供了众多方便易用的强大功能。在表单的处理方面,PHP能够自动地将由客户端表单发送的数据赋值给相应变量,从而极大地简化了整个表单的处理过程。

举例来说,用户建立如下表单:

< INPUT TYPE=TEXT NAME=“name” VALUE=“PETER” >

当使用PHP对上述代码进行处理时,PHP自动创建一个名为$name的变量,并将变量值“PETER”赋予该变量。

用户可以直接对PHP创建的变量进行各种操作,例如显示变量值:

echo “Hi $name!”;

或对变量值进行验证:

if ($name == “PETER”) { echo “Please check out your email.”; }

下面,我们就来看一下如何通过使用PHP创建并处理一个基本的表单。在示例当中,我们将会要求表单的填写者回答几个简短的问题,包括输入表单填写者的姓名,电子邮件地址,完成调查问卷等。

这里,我们将所要设计的页面按照功能划分成表单显示和表单处理两个功能模块。这样,用户就不必设计两个不同的页面,而只需要在同一个PHP页面中通过逻辑控制显示或处理相应的功能模块。 A. 表单显示

我们通过第一个功能模块来实现表单的显示。具体代码为:

< ?php

function display_form()

{

global $PHP_SELF;

? >

< FORM TARGET=“< ?php echo $PHP_SELF; ? >”METHOD=GET >

Name: < INPUT TYPE=TEXT NAME=“name” >< BR >

Favorite Fruit: < INPUT TYPE=RADIO NAME=“fruit” VALUE=“apple” >Apple

< INPUT TYPE=RADIO NAME=“fruit” VALUE=“orange” >Orange

< INPUT TYPE=RADIO NAME=“fruit” VALUE=“banana” >Banana

Favorite Times to Eat Fruit:

< INPUT TYPE=CHECKBOX NAME=“times[]” VALUE=“m” >Morning

< INPUT TYPE=CHECKBOX NAME=“times[]” VALUE=“n” >Noon

< INPUT TYPE=CHECKBOX NAME=“times[]” VALUE=“d” >Dinner

< INPUT TYPE=CHECKBOX NAME=“times[]” VALUE=“l” >Latenight

< INPUT TYPE=HIDDEN NAME=“stage” VALUE= “results” >

< INPUT TYPE=SUBMIT VALUE= “Thanks!” >

< /FORM >

< ?php

}

? >

上述代码中绝大多数都是创建表单所必需的HTML代码。在此,我们仅对所涉及到的PHP知识做一下简单介绍。

首先,我们来看一下代码开始处的变量$PHP_SELF。变量$PHP_SELF是PHP中一个很方便的指针,其变量值就是当前页面的URL地址。这样,我们就可以通过在随后的form标签中将TARGET的值设定为$PHP_SELF,实现由该表单页面处理表单的目的。这里,我们使用$PHP_SELF变量而不使用页面的实际地址,是因为通过使用$PHP_SELF变量,我们可以方便对编写的页面代码进行修改和移动,而不必担心在每次改动之后重新输入新的页面地址。

另外,在使用$PHP_SELF变量时,我们采用了如下方式:

global $PHP_SELF;

这表明代码中的$PHP_SELF变量为全局变量。用户在使用PHP的过程中一定要注意PHP中任何的函数变量都是局部变量。这就意味着任何函数变量的作用域都只局限于包括该变量的函数本身。即使函数外存在同名变量,变量的值也不相同。因此,如果我们没有在代码中以显式方式声明函数变量$PHP_SELF为全局变量具有全局唯一值的话,用户就会发现函数中的变量$PHP_SELF的值将会为空,而不是我们预先所期望的当前页面的URL地址。

用户可能已经注意到我们将表单复选选项的名称设置为times[]数组,而把单选选项的名称设定为fruit常规变量。这是因为单选选项只允许用户选择唯一一个正确选项,因此fruit变量的值只可能是一个字符串;相反,复选选项则允许用户做多重性选择。如果,用户希望PHP能够保存用户可能作出的所有选择的话,就需要使用数组来保存所有的可能值。按照PHP的语法规则,我们通过在变量名times后面加上方括号,使PHP知道该变量是一个数组变量而不是普通的常规变量。

最后,我们设定了一个名为stage的隐含变量,通过使用该变量,我们可以控制是否显示表单还是处理表单结果。  

PHP 相关文章推荐
PHP数据库开发知多少
Oct 09 PHP
动态新闻发布的实现及其技巧
Oct 09 PHP
用ADODB来让PHP操作ACCESS数据库的方法
Dec 31 PHP
php str_pad 函数用法简介
Jul 11 PHP
PHP form 表单传参明细研究
Jul 17 PHP
php判断终端是手机还是电脑访问网站的思路及代码
Apr 24 PHP
Youku 视频绝对地址获取的方法详解
Jun 26 PHP
PHP与jquery实时显示网站在线人数实例详解
Dec 02 PHP
PHP 文件锁与进程锁的使用示例
Aug 07 PHP
php项目中类的自动加载实例讲解
Sep 12 PHP
Laravel第三方包报class not found的解决方法
Oct 13 PHP
php png失真的原因及解决办法
Oct 24 PHP
用PHP制作静态网站的模板框架
Oct 09 #PHP
PHP5在Apache下的两种模式的安装
Sep 05 #PHP
WINDOWS 2000下使用ISAPI方式安装PHP
Sep 05 #PHP
教你IIS6的PHP最佳配置方法
Sep 05 #PHP
详细介绍:Apache+PHP+MySQL配置攻略
Sep 05 #PHP
PHP环境搭建最新方法
Sep 05 #PHP
初学者入门:细述PHP4的核心Zend
Sep 05 #PHP
You might like
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
weiphp微信公众平台授权设置
2016/01/04 PHP
Laravel中的Auth模块详解
2017/08/17 PHP
PHP实现的解汉诺塔问题算法示例
2018/08/06 PHP
PHP将整数数字转换为罗马数字实例分享
2019/03/17 PHP
基于jquery DOM写的类似微博发布的效果
2012/10/20 Javascript
循环 vs 递归浅谈
2013/02/28 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
2013/03/18 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
js兼容火狐获取图片宽和高的方法
2015/05/21 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
JavaScript学习笔记之创建对象
2016/03/25 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
2016/05/20 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
VSCode使用之Vue工程配置eslint
2019/04/30 Javascript
用vscode开发vue应用的方法步骤
2019/05/06 Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
2019/11/13 Javascript
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
利用Python破解验证码实例详解
2016/12/08 Python
利用Hyperic调用Python实现进程守护
2018/01/02 Python
Python中几种属性访问的区别与用法详解
2018/10/10 Python
Python3使用tesserocr识别字母数字验证码的实现
2021/01/29 Python
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
英国的一家创新礼品和小工具零售商:Menkind
2019/08/24 全球购物
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
Java程序员面试题
2013/07/15 面试题
旅游管理专业生自荐信范文
2014/01/02 职场文书
课改先进个人汇报材料
2014/01/26 职场文书
战略合作协议书范本
2014/04/18 职场文书
Python中itertools库的四个函数介绍
2022/04/06 Python
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
2022/05/04 Python