php中一个完整表单处理实现代码


Posted in PHP onNovember 10, 2011

一个完整表单处理
下面我们将创建一个复杂的表单,代码如下所示。

<form action="someform.php" method="post"> 
<table width="541" border="0"> 
<tr> 
<td width="26%">姓名:</td> 
<td width="74%"><input type="text" name="username" value="raymond" id="username"/></td> 
</tr> 
<tr> 
<td>密码:</td> 
<td><input type="password" name="password" maxlength="10" id="password"/></td> 
</tr> 
<tr> 
<td>年龄:</td> 
<td> 
<select name="age"> 
<option value=">16">小于16</option> 
<option value="16-30" selected>16-30</option> 
<option value="31-50">31-50</option> 
<option value="51-80">51-80</option> 
</select> 
</td> 
</tr> 
<tr> 
<td valign="top">自我介绍:</td> 
<td><textarea name="intro" rows="3" cols="50" id="intro">请输入您的自我介绍</textarea></td> 
</tr> 
<tr> 
<td><br /> 
体育爱好: </td> 
<td><input type="radio" name="fave_sport" value="tennis" checked> 
网球 
<input type="radio" name="fave_sport" value="football"> 
足球 
<input type="radio" name="fave_sport" value="baseball"> 
篮球 
<input type="radio" name="fave_sport" value="polo"> 
保龄球 </td> 
</tr> 
<tr> 
<td> 开发语言:</td> 
<td><input name="from" type="hidden" id="from" value="注册表单"> 
<input type="checkbox" name="languages[]" value="php" checked id="languages[]"> 
php 
<input type="checkbox" name="languages[]" value="java" id="languages[]"> 
java 
<input type="checkbox" name="languages[]" value="perl" id="languages[]"> 
perl 
<input type="checkbox" name="languages[]" value="cpp" id="languages[]"> 
c++ 
<input type="checkbox" name="languages[]" value=".net" id="languages[]"> 
.NET 
<input type="checkbox" name="languages[]" value="delphi" id="languages[]"> 
delphi </td> 
</tr> 
<tr> 
<td valign="top"><br> 
<label> 开发工具:</label></td> 
<td><select name="develop_ide[]" size="5" multiple id="develop_ide[]"> 
<option value="ZDE" selected>Zend Studio</option> 
<option value="Eclipse">Eclipse</option> 
<option value="Editplus">Editplus</option> 
<option value="Ultraedit">Ultraedit</option> 
<option value="Other">Other</option> 
</select></td> 
</tr> 
<tr> 
<td valign="top"> </td> 
<td><input type="submit" name="btn_submit" value="提交"/></td> 
</tr> 
</table> 
</form>

该表单包括了常用表单元素:单行文本框、多行文本框、单选项(radio)、多选项(checkbox),以及多选菜单。下面进行详细的说明。
maxlength是与密码文本框关联的属性,它限制用户输入密码的最大长度为10个字符。
age列表框是列表菜单,它的命名属性下都有自己的值供选择。selected是一个特定的属性选择元素,如果某个option附加有该属性,在显示时就把该项列为第一项显示。
intro文本框中的内容,按照rows和cols显示文字、行和列宽。
fave_sport是一组单选按钮(radio),我们要按组命名元素名称,比如这一组单选按钮都叫做fave_sport,用户只可选择一个,发送脚本端也只存在一个值。
和单选项一样,所有多选项成员也须有同名的属性,而属性名称需要添加括号[],这样就把多选项的值以数组形式发送给PHP,languages就是这种形式。
checked标签是指单选项和多选项中的某个值,默认已经被选择。

上面表单的显示画面如图5-3所示。

php中一个完整表单处理实现代码

因为上面HTML中的form表单使用的是POST方法传递数据,所以用户提交的数据会保存到$_POST或$_REQUEST的超级全局数组中,我们根据$_POST数组中的值就可以处理提交的数据。

将上面表单中数据提交到someform.php脚本,该脚本的处理逻辑如下:

//通过判断按钮的变量名是否在$_POST中定义,如果有表示该表单已提交 
if(isset($_POST["btn_submit"])){ 
if (empty($_POST['username'])){ 
echo "您没有输入用户名"; 
exit(0); 
} 
if (empty($_POST['password'])){ 
echo "您没有输入密码: "; 
exit(0); 
} 
echo "您的用户名: ".$_POST['user_name']." 
"; 
echo "您的密码(明文): ".$_POST['password']." 
"; 
echo "您的年龄: ".$_POST['age']." 
"; 
if (!empty($_POST['languages'])){ 
echo "您选择的语言为:"; 
//处理用户选择兴趣的checkbox按钮产生的数组 
foreach ($_POST['languages'] as $lang){ 
echo $lang. " "; 
} 
} else { 
echo "您没有输入任何兴趣爱好"; 
} 
if (!empty($_POST['develop_ide'])){ 
echo "您使用的开发工具为:"; 
//处理用户多选开发工具菜单产生的数组 
foreach ($_POST['develop_ide'] as $ide){ 
echo $ide. " "; 
} 
} else { 
echo "您没有选择开发工具"; 
} 
echo "您的自我介绍: ".nl2br($_POST['intro'])."<br />";//nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符 (<br />) 
"; 
echo "网页隐藏值(通过hidden标签值传递): ".$_POST['from']." 
"; 
} 
?>

说明:使用POST方式提交表单,通过HTTP协议的header部分传递表单数据,理论上数据的大小无上限。不过,在使用PHP进行POST提交时,文件大小受PHP配置文件(php.ini)限制,我们可以修改php.ini文件中的post_max_size参数,可将默认的2M字节,修改为自己需要的大小,但由于HTTP协议的特性,这个值不宜设置过大,最大以8M为宜。
PHP 相关文章推荐
PHP 伪静态隐藏传递参数名的四种方法
Feb 22 PHP
IP攻击升级,程序改进以对付新的攻击
Nov 23 PHP
MySQL连接数超过限制的解决方法
Jul 17 PHP
一个PHP的QRcode类与大家分享
Nov 13 PHP
PHP 图片水印类代码
Aug 27 PHP
基于Linux调试工具strace与gdb的常用命令总结
Jun 03 PHP
PHP二维数组矩形转置实例
Jul 20 PHP
PHP CURL post数据报错 failed creating formpost data
Oct 16 PHP
PHP封装的非对称加密RSA算法示例
May 28 PHP
laravel框架创建授权策略实例分析
Nov 22 PHP
php实现快速对二维数组某一列进行组装的方法小结
Dec 04 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 24 PHP
php array_filter除去数组中的空字符元素
Jun 21 #PHP
php empty() 检查一个变量是否为空
Nov 10 #PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
Nov 10 #PHP
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
Nov 10 #PHP
PHP mb_convert_encoding文字编码的转换函数介绍
Nov 10 #PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
Nov 10 #PHP
PHP中其实也可以用方法链
Nov 10 #PHP
You might like
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
PHP常见错误提示含义解释(实用!值得收藏)
2016/04/25 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
javascript 自定义事件初探
2009/08/21 Javascript
基于jQuery实现的水平和垂直居中的div窗口
2011/08/08 Javascript
jQuery写fadeTo示例代码
2014/02/21 Javascript
node.js中的fs.createReadStream方法使用说明
2014/12/17 Javascript
Angular学习笔记之angular的$filter服务浅析
2016/11/12 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
2019/04/10 Javascript
微信小程序封装的HTTP请求示例【附升级版】
2019/05/11 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
2019/12/04 Javascript
jQuery操作事件完整实例分析
2020/01/10 jQuery
Python语言的面相对象编程方式初步学习
2016/03/12 Python
python远程连接服务器MySQL数据库
2018/07/02 Python
对Python Class之间函数的调用关系详解
2019/01/23 Python
在python中将list分段并保存为array类型的方法
2019/07/15 Python
django认证系统 Authentication使用详解
2019/07/22 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
pandas数据分组groupby()和统计函数agg()的使用
2021/03/04 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
动态密码技术
2012/10/18 面试题
Python中如何定义一个函数
2016/09/06 面试题
信息专业个人的自我评价
2013/12/27 职场文书
学校安全工作制度
2014/01/19 职场文书
绿化工程实施方案
2014/03/17 职场文书
2015年政府采购工作总结
2015/05/21 职场文书
2015年党小组工作总结
2015/05/26 职场文书
李强优秀员工观后感
2015/06/16 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书
在pycharm中无法import所安装的库解决方案
2021/05/31 Python
sql server 累计求和实现代码
2022/02/28 SQL Server
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技