表单数据的提交方式
1)
通过
GET
方法提交数据
在使用
GET
方法时,表单数据被当作
URL
的一部分一起传过去。格式如下:
[url]http://url?name1=value1&name2=value2---[/url]
其中:
url
为表单响应地址;
name
为表单元素的名称;
value
为表单元素的值;
url
和表单元素之间用“?”隔开,多个表单元素之间用“
&
”隔开,每个表单元素的格式都是“
name=value
”,固定不变。
Php
使用
$_GET
预定义变量自动保存通过
GET
方法传过来的值。格式为
$_GET[name]
缺点:信息显示在客户端浏览器上,使用户资料暴露,而且
URL
本身受长度限制(
1024K
),不能传递较大的数据。
2)
通过
POST
方法提交数据
POST
方法不依赖
URL
,所有提交的信息在后台传输,不会显示在地址栏中,安全性高,而且没有长度限制。
注意:有点
PHP
版本中直接写
”$name”
就可以调用表单元素的值,这和
php.ini
的配置有关,找到
Register_globals=onp
这行。如果为
on,
就可以直接写成“
$name
”
,
反之则不可以。直接应用表单名称十分方便,但也存在一定安全隐患。推荐关闭
globals
获取提交的表单数据
1)
获取按钮的数据
按钮分为提交按钮(
submit
)、重置按钮(
reset
)和普通按钮(
botton
)
3
种。
提交按钮(submit
)
:当表单信息录入完毕后,单击提交按钮,就可以将数据传到
<form>
标签中
action
属性所指的
URL
。
<form>
标签的格式:
<form name=”name” method=”get/post” action=”index.php”>
<input type=”submit” name=”enter” value=”
提交
”>
</form>
<form>
标签中的
name
是所有表单元素都有的属性,即这个表单元素的名字;
method
为表单数据的传送方法;
action
为表单数据所请求的页面地址。
<input>
标签指定了表单中的大多数的表单元素。用
type
属性来指定表单元素类型,
value
为该元素的值。
重置按钮(reset
)
:是恢复表单的信息到初始该页时的数据。
普通按钮(button
)
:可以单击,但不触发任何事件。一般用来和
javascript
脚本的
onclick
事件配合使用。
2)
获取文本区域的数据
Text
文本框可以输入字母、数字、汉字和各种可见符号,常见格式如下:
<input type=”text” name=”usr” value=”text” size=”20” maxlength=”50”>
Size
属性是设置文本框的长度;
maxlength
属性为文本框内可输入字符串的最大长度。
Password
密码框只能接收键盘上的字母、数字和符号,不能输入中文。格式如下:
<input type=”password” name=”pwd” value=”pass” size=”20”>
文本框与密码框最大的区别是:文本框图的内容是可见的,而密码框的内容都是以“
*
”号来代替的。
3)
获取单选按钮的数据
Radio(
单选按钮
)
一般是多个按钮一起出现,具有相同
name
值和不同
value
值,在一组单选按钮中同一时间只能有一个被选取。格式如下:
<input type=”radio” name=”sex” value=”male” checked>
男
Checked
属性是默认选取的意思。当表单页面被初始化时,有
check
属性的表单元素为选中状态。
4)
获取复选框的数据
在很多时候并不是单一的选择,而是同时有很多条件都符合要求,这时就要使用
checkbox(
复选框
)
。格式如下:
<input type=”checkbox” name=”chkbox” value=”chkbox”>
由于复选框一般都时多个同时存在,为了便于传值,
name
的名字可以是一个数组形式,格式如下:
<input type=”checkbox” name=”chkbox[]” value=”chkbox1”>
在返回界面可以使用
count()
函数计算数组大小,配合
for
循环输出。
示例:
<form name="form1" method="post" action="">
<table width="400" cellpadding="0" cellspacing="0">
<tr>
<td align="center" height="25" valign="middle">
您对公司的哪些产品有所了解?
</td>
</tr>
<tr>
<td align="center" height="50" valign="top">
<input type="checkbox" name="mrbook[]" value="php" /> php
类
<input type="checkbox" name="mrbook[]" value="vb" /> vb
类
<input type="checkbox" name="mrbook[]" value="java" />java
类
<input type="checkbox" name="mrbook[]" value="jsp" /> jsp
类
<br>
<input type="checkbox" name="mrbook[]" value="c#" />c#
类
<input type="checkbox" name="mrbook[]" value="net" />.net
类
<input type="checkbox" name="mrbook[]" value="asp" />asp
类
<input type="checkbox" name="mrbook[]" value="vc" />vc
类
</td>
</tr>
<tr>
<td align="center" valign="middle" height="25"><input type="submit" name="submit" value="
提交
" /></td>
</tr>
<tr>
<td height="25" align="center" valign="middle">
<?php
if(($_POST[mrbook] != null)){
echo "
请确认您的选择:
";
for($i = 0;$i < count($_POST[mrbook]);$i++)
echo $_POST[mrbook][$i]." ";
}
?>
</td>
</tr>
</table>
</form>
5)
获取列表框的数据
列表框有下拉列表框、列表框和多选列表框
3
种形式。
下拉列表框的格式为:
<select name=”select” size=”1”>
<option value=”1970”>1970</option>
<option value=”1971”>1971</option>
------
</select>
当
size
的值为
1
时,就是下拉列表框。当
size
的值大于
1
时,为列表框。当有
multiple
属性时就变成了多选框。在应用多选框时,
name
属性值应设为数组,这样才可以传多个值。多选框的格式如下:
<select name=”select[]” size=”5” multiple>
<option value=”1970”>1970</option>
<option value=”1980”>1980</option>
------
</select>
进行多重选择时,可以按下鼠标左键进行拖曳,或按下(
ctrl
)键,一个一个的选取。如果选取连续的记录,可以先选取其中一端最边上的记录,然后按住(
shift
)键,再选取另一端的记录,就可以连续选取。
示例:
<form name="form1" method="post" action="">
<table width="300" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="30" align="center" valign="middle">
请挑选出
php
类图书
</td>
</tr>
<tr>
<td align="center" valign="middle"><select name="select[]" size="5" multiple>
<option value="php
完全手册
">PHP
完全手册
</option>
<option value="asp
编程宝典
">asp
编程宝典
</option>
<option value="php
范例宝典
">php
范例宝典
</option>
<option value="php
从入门到精通
">php
从入门到精通
</option>
<option value="delphi
函数参考手册
">delphi
函数参考手册
</option>
</select></td>
</tr>
<tr>
<td height="30" align="center" valign="middle">
<input type="hidden" name="action" value="list" />
<input type="submit" name="Submit" value="
提交
" /></td>
</tr>
</table>
</form>
<?php
if($_POST[action] == "list")
echo "
你选择的是:
<br>";
for($i = 0; $i < count($_POST[select]); $i++)
echo $_POST[select][$i]."  ";
?>
6)
获取文本域的数据
文本域(
textarea
)
,
双叫多行文本框,可以输入多行文字,并且可以随意换行。格式如下:
<textarea name=”textarea” rows=”3” cols=”20”>
文本内容
</textarea>
Rows
属性表示的是文本域的行高;
cols
属性表示列宽;文本域没有
value
属性。
7)
获取文件域的数据
文件域主要应用于有文件或图片需要上传的页面。语法格式如下:
<input type=”file” name=”file” accept=”p_w_picpath/jpeg”>
文件域有一个特有属性:
accept
,是指定用户可以上传的文件类型。
示例:
<?php
echo $_POST[file];
?>
<form name="form1" method="post" action="" enctype="multipart/form-data">
<input type="file" name="file" size="15" accept="p_w_picpath/jpge" />
<input type="submit" name="upload" value="
上传
" />
</form>
注意:要使用文件域,
<form>
必须指定
enctype
属性为:
enctype="multipart/form-data"
8)
获取隐藏域的数据
不显示在页面上的文本框,一些不必要显示的信息或需要传送的参数可以放到隐藏域中。格式如下:
<input type=”hidden” name=”hidden” value=”
隐藏内容
”>
在php
中处理表单变量
在
php
中接收的表单变量,只在响应页内有效。
$_POST/GET[]
变量属于自动变量,它的值随着页面的更新而更新。当响应页刷新或再次请求其它页面时,从上一个页面接收的
$_POST/GET[]
变量会消失,如果同时接收了新的表单变量,
$_POST/GET
会自动进行添加或覆盖。
对表单传递的变量值进行编码与解码
在
php
中使用两种编码方法:
URL
编码和
BASE64
编码
1) URL
编码与解码
URL
编码是一种浏览器用来打包表单输入数据的技术,是对地址栏传递参数进行的一种编码规则。
Php
中实现对查询字符串进行
URL
编码可以通过函数
urlencode()
实现。格式为:
Urlencode(string str) //
该函数实现将字符串
str
进行
URL
编码。只能对汉字和特殊字符进行编码。
Php
中对
URL
编码后的查询字符串进行解码,可以通过函数
urldecode()
实现。格式为:
Urldecode(string str) //
该函数实现将
URL
编码
str
进行解码。
说明:对于服务器来说,编码前后的字符串并没有什么区别,服务器能自动识别,在实际应用中,一般不需要进行解码。
2) BASE64
编码与解码
用来把任意组合的
8
位字节描述为一种不易被人直接识别的形式,在
BASE64
编码后的字符串只包含英文字母大小写、数字、“
+
”与“
\
”共
64
个基本字符。
Php
实现字符串的
BASE64
编码可以通过
base64_encode()
实现。格式为:
Base64_encode(string data)
Data
:指要进行
BASE64
编码的数据。该函数的返回结果为字符串类型。
Php
实现对
BASE64
编码的字符进行还原可以通过函数
base64_decode()
实现。格式为:
Base64_decode(string encode_data) //encode_data
:要进行
BASE64
解码的字符串。
示例:
<table bgcolor="f0f0f0" width="600" border="1" cellpadding="0" cellspacing="0">
<form name="form1" method="post" action="">
<tr>
<td width="50%" height="30" align="center" valign="middle">base64
编码
</td>
<td width="50%" align="center" valign="middle">base64
解码
</td>
</tr>
<tr>
<td height="50" align="center" valign="middle">
<input name="coding" type="text" size="20" />
</td>
<td height="50" align="center" valign="middle">
<input name="decode" type="text" size="20" />
</td>
</tr>
<tr>
<td height="50" align="center" valign="middle">
经过
BASE64
编码后:
<?php
echo "".base64_encode($_POST[coding]);
?> </td>
<td align="center" valign="middle">
经过
BASE64
解码后:
<?php
echo "".base64_decode($_POST[decode]);
?> </td>
</tr>
<tr>
<td height="30" colspan="2"><input type="submit" name="submit" value="
提交
" /></td>
</tr>
</form>
</table>
转载于:https://blog.51cto.com/llk726/121367