php 表单form提交详细分析
一、表单form到底有什么作用
表单的作用是采集客户端提交的数据,并把数据提交给服务端。
比如在登录一个网站时,你需要输入自己的用户名和密码才能登陆。又比如你注册游戏账号时,你需要填写自己的邮箱、密码、年龄等等。
这些操作就要通过表单提交给服务器,最后由服务器记录在数据库。
二、表单form组成结构
html 表单是Web应用中最常用的组件,由提交按钮以及其他相关元素组成。表单被应用在各个领域中,用于实现注册用户、填写银行账户和登录等功能。说简单点就是一对form标签和input标签的组合。如下:
<FORM METHOD="POST" ACTION="GetFormValue.php">
<H2>Contact List</H2>
<BR>Nickname:
<BR><INPUT TYPE="TEXT" NAME="Nickname">
<BR>
<BR>Full Name:
<BR><INPUT TYPE="TEXT" NAME="Fullname">
<BR>
<BR>Memo:
<BR><TEXTAREA NAME="Memo" ROWS="4" COLS="40" WRAP="PHYSICAL">
</TEXTAREA>
<BR>
<BR>
<INPUT TYPE="SUBMIT">
</FORM>
正如上所示,表单的两个标签必须是成对出现的:<form></form>。在一个HTML页面中允许有若干个表单,在编写时以表单的名字(name)和Form ID作为它们之间的区分。
form标签有两个必填的属性 : action,method。
action属性指的是接收处理结果的文件位置,当action值为空时,则提交给当前文件本身,如果action的值为其他文件或URL,则提交给该文件或URL地址处理。
method属性,顾名思义就是提交数据的方法,它有两个值可选:post/get ,post是隐藏传递,get是地址栏传递,果没有设置method属性或该属性为空值,浏览器默认method的值为POST方法。
form中可以添加文本框和按钮等表单元素,比如上面实例中的Nickname、Fullname、Memo和submit等都是表单元素,下面列出表单元素:
表单元素 | 说 明 |
input type="checkbox" | 复选框,允许用户选择多个选择项 |
input type="file" | 文件浏览框,当文件上传时,可用来打开一个模式窗口以选择文件 |
input type="hidden" | 隐藏标签,用于在表单中以隐含方式提交变量值 |
input type="password" | 密码文本框,用户在该文本框输入字符时将被替换显示为*号 |
input type="radio" | 单选项,用于设置一组选择项,用户只能选择一个 |
input type="reset" | 清除与重置表单内容,用于清除表单中所有文本框的内容,而且使选择菜单项恢复到初始值 |
input type="submit" | 表单提交按钮 |
input type="text" | 单行文本框 |
select | 下拉列表框,可单选和多选。默认为单选,如果增加多项选择功能,增加<select name="select" size="自定义列数" multiple="multiple">即可 |
option | 列表下拉菜单,和select配合使用,显示供选择的值 |
textarea | 多行文本框,在使用文本框时需要关闭标签之间的文本内容,形成如下格式:<Textarea>你的文字</Textarea> |
其中,hidden标签被称为隐藏或隐含的标签,它不会在用户浏览的页面界面上出现,当用户填写资料表单和跨页之间传值时,可以使用该标签传递一些隐含的值。
password密码文本框用于隐藏密码,用户输入的文本将以*显示在文本框中,但是密码并没有加密,只是被*替换显示,这点请注意。
下面介绍表单的属性,它们用于表单中约束表单元素的行为或显示
属性名称 | 说 明 |
name | 文本框的名称,PHP根据该名称,在超级全局数组中建立以name为名称的键名 |
size | 文本框的宽度,在select下拉菜单中,表示可以看到的选项行数 |
value | 文本框中的默认值,注意,该值不能应用到type=password密码文本框以及type=file文件文本框中 |
multiple | 此属性用于下拉列表菜单select中,指定该选项用户可以使用Ctrl和Shift键进行多选 |
rows | 多行文本框显示时可以容纳的字符列数宽度 |
cols | 多行文本框显示时可以容纳的字符行数高度 |
三、php如何获取表单数据
php获取表单数据有三种方式:
- 以$_GET方式获取表单数据
- 以$_POST方式获取表单数据
- 以$_REQUEST方式获取表单数据
$_GET只能获取get方法提交的数据,$_POST方法只能获取post方法提交的数据,而$_REQUEST能同时获取get和post方法提交的数据。
请看下面实例:
<HTML>
<BODY>
<FORM METHOD="POST" ACTION="GetFormValue.php">
<H2>Contact List</H2>
<BR>Nickname:
<BR><INPUT TYPE="TEXT" NAME="Nickname">
<BR>
<BR>Full Name:
<BR><INPUT TYPE="TEXT" NAME="Fullname">
<BR>
<BR>Memo:
<BR><TEXTAREA NAME="Memo" ROWS="4" COLS="40" WRAP="PHYSICAL">
</TEXTAREA>
<BR>
<BR>
<INPUT TYPE="SUBMIT" name="submit" value="提交">
</FORM>
</BODY>
<?php
if($_POST["submit"]){
$Nickname=$_POST["Nickname"];
$Fullname=$_POST["Fullname"];
$Memo=$_POST["Memo"];
echo "<BR>Nickname=$Nickname";
echo "<BR>Fullname=$Fullname";
echo "<BR>Memo=$Memo";
}
?>
四、get和post的区别
安全性
如果用get提交一个验证用户名和密码的form,一般认为是不安全的。因为用户名和密码将出现在URL上,进而出现在浏览器的历史记录中。显然,在对安全性有要求的情况下,应该使用post。
编码
HTML 4.01 specification指出,get只能向服务器发送ASCII字符,而post则可以发送整个ISO10646中的字符(如果同时指定enctype=”multipart/form-data”的话)。
注意get和post对应的enctype属性有区别。enctype有两个值,默认值为application/x-www-form-urlencoded,而另一个值multipart/form-data只能用于post。
提交的数据的长度
HTTP specification并没有对URL长度进行限制,但是IE将请求的URL长度限制为2083个字符,从而限制了get提交的数据长度。测试表明如果URL超出这个限制,提交form时IE不会有任何响应。其它浏览器则没有URL的长度限制,因此其它浏览器能通过get提交的数据长度仅受限于服务器的设置。
而对于post,使用POST方式提交表单,通过HTTP协议的header部分传递表单数据,理论上数据的大小无上限。不过,在使用PHP进行POST提交 时,文件大小受PHP配置文件(php.ini)限制,我们可以修改php.ini文件中的post_max_size参数,可将默认的2M字节,修改为 自己需要的大小,但由于HTTP协议的特性,这个值不宜设置过大,最大以8M为宜。
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC