php中post方法的主要用途就是“传递”数据,它将数据放在所有请求标题的后面上传,使用代码语句如“<form action=”post.php” method=”post”>…”。
推荐:《PHP视频教程》
$_POST数组
GET方法的本意就是下载(与其对应的是上传方法PUT),因此并不是专门用于传递数据的,它将请求数据全部经过URL编码后缀在请求资源的后面,这样一来,当数据很多时URL就会变得很长——但这并不是问题的所在,问题所在是一些WEB浏览器或服务器程序会限制这行字符串的长度。这时,就需要用到 POST方法了。
顾名思义,POST方法的主要用途就是“传递”数据,它将数据放在所有请求标题的后面上传,这样一来,无论有多少数据上传都不成问题了(这样请求数据的大小之取决于WEB服务允许的尺寸了)。通常来说,对于表单数据如无特别需要都使用POST方法来上传,这样就无须去关心具体上传数据的尺寸了。
POST方法的请求数据被封装到了$_POST数组中,其使用方法与$_GET数组一样。将上面的表单添加一个method属性,就变成了这样:
<!– post.php文件 –> <?php if($_POST['post']) { foreach($_POST as $index = > $value) echo “$_POST[$index] = $value”, “<BR>”; } ?> <form action=”post.php” method=”post”> <label for=”id”>账号:</label><input type=”text” name=”id”> <label for=”password”>密码:</label><input type=”text” name=”password”> <input type=”submit” name=”post” value=”提交”> </form>
另一个有趣的设定是,GET方法和POST方法并不矛盾,在POST方法中同样可以传递GET变量,将上面的post.php文件稍微改动一下,就成了这样:
<!– post.php文件 –> <?php if($_POST['post']) { foreach($_POST as $index = > $value) echo “$_POST[$index] = $value”, “<BR>”; foreach($_GET as $index = > $value) echo “$_GET[$index] = $value”, “<BR>”; } ?> <form action=”post.php?act=login” method=”post”> <label for=”id”>帐号:</label><input type=”text” name=”id”> <label for=”password”>密码:</label><input type=”text” name=”password”> <input type=”submit” name=”post” value=”提交”> </form>
该程序同时处理了GET方法(act 参数)和POST方法(id 和 password 参数)的请求数据,GET方法的请求变量后缀在了表单action属性值的后面,这样只有一点问题,就是GET方法的请求变量不能由用户来输入。通常,固定的数据使用GET方法,由用户输入的数据使用POST方法来发送,两种方法区分开了不同逻辑的数据。不过读者在构建这种表单的时候,一定要注意两种方法不要有相同的变量名,否则将出现不可预料的后果。最后,需要注意的是,当使用GET方法发送数据时,则 <form>标签 action 属性值中不能包含查询字符串(即使包含也不会生效),所以,下面的表单中,act 参数将不能发送:
<form action=”post.php?act=login” method=”get”> <label for=”id”>账号:</label><input type=”text” name=”id”> <label for=”password”>密码:</label><input type=”text” name=”password”> <input type=”submit” name=”post” value=”提交”> </form>
应该改成下面的形式:
<form action=”post.php” method=”get”> <label for=”id”>账号:</label><input type=”text” name=”id”> <label for=”password”>密码:</label><input type=”text” name=”password”> <input type=”submit” name=”post” value=”提交”> <input type=”hidden” name=”act” value=”login”> </form>