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中操作MySQL数据库的一些要注意的问题
Oct 09 PHP
php设计模式 Template (模板模式)
Jun 26 PHP
PHP设计模式之装饰者模式
Feb 29 PHP
PHP中mysql_field_type()函数用法
Nov 24 PHP
PHP中常见的缓存技术实例分析
Sep 23 PHP
修复ShopNC使用QQ 互联时提示100010 错误
Nov 08 PHP
Django中的cookie与session操作实例代码
Aug 17 PHP
PHP数组遍历的几种常见方式总结
Feb 15 PHP
PHP设计模式之策略模式原理与用法实例分析
Apr 04 PHP
Thinkphp整合阿里云OSS图片上传实例代码
Apr 28 PHP
php抽象类和接口知识点整理总结
Aug 02 PHP
PHP实现页面静态化深入讲解
Mar 04 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生成缩略图的函数代码(修改版)
2011/01/18 PHP
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
2个比较经典的PHP加密解密函数分享
2014/07/01 PHP
js限制textarea每行输入字符串长度的代码
2012/10/31 Javascript
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
Javascript非构造函数的继承
2015/04/27 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
详解Vue 中 extend 、component 、mixins 、extends 的区别
2017/12/20 Javascript
详解html-webpack-plugin用法全解
2018/01/22 Javascript
在 webpack 中使用 ECharts的实例详解
2018/02/05 Javascript
uploadify插件实现多个图片上传并预览
2019/09/30 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
jQuery实现全选、反选和不选功能的方法详解
2019/12/04 jQuery
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
python 图片二值化处理(处理后为纯黑白的图片)
2019/11/01 Python
适合Python初学者的一些编程技巧
2020/02/12 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
Python脚本导出为exe程序的方法
2020/03/25 Python
Python如何操作office实现自动化及win32com.client的运用
2020/04/01 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
2021/01/28 Python
Kipling凯浦林美国官网:世界著名时尚休闲包袋品牌
2016/08/24 全球购物
Talbots官网:美国成熟女装品牌
2019/11/15 全球购物
销售找工作求职信
2013/12/20 职场文书
安全检查与奖惩制度
2014/01/23 职场文书
巡警年度自我鉴定
2014/02/21 职场文书
工程售后服务承诺书
2014/05/21 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
2014客服代表实习自我鉴定
2014/09/18 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
会计专业2019暑假实习报告
2019/06/21 职场文书
redis连接被拒绝的解决方案
2021/04/12 Redis
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang