表单数据的提交方式
 
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 &nbsp;&nbsp;
        <input type="checkbox" name="mrbook[]" value="vb" /> vb &nbsp;&nbsp;
        <input type="checkbox" name="mrbook[]" value="java" />java &nbsp;&nbsp;
        <input type="checkbox" name="mrbook[]" value="jsp" /> jsp <br>
    <input type="checkbox" name="mrbook[]" value="c#" />c# &nbsp;&nbsp;
        <input type="checkbox" name="mrbook[]" value="net" />.net &nbsp;&nbsp;
        <input type="checkbox" name="mrbook[]" value="asp" />asp &nbsp;&nbsp;
        <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">&nbsp;
<?php
if(($_POST[mrbook] != null)){
echo " 请确认您的选择: ";
for($i = 0;$i < count($_POST[mrbook]);$i++)
        echo $_POST[mrbook][$i]."&nbsp;&nbsp;";
}
?>
</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]."&nbsp;&nbsp";
?>
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>