表单数据的提交方式
 
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)和普通按钮(botton3种。
提交按钮(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>