PHP的post数据与request数据
$_POST变量(数组)
类似$_GET变量(数组),$_POST代表页面通过post方式提交过来的数据所形成的数组。
post提交数据,通常只有一种形式:
<form action="abc.php" method="post">
Project 1:<input type="text" name="uName" />
Project 2:<input type="password" name="uPswd" />
<input type="submit" value="Submit" />
</form>
其作用是:用户填写表单数据,并提交后,会将数据发送(提交)给页面abc.php,其实也可以理解为“打开”该网页(abc.php),还可以理解为“请求”该网页(abc.php)
<?php
$v1 = $_POST['uName']; //单引号也可以用双引号,本质是一个字符串,其实是数组的键名(下标)
$v2 = $_POST['uPswd']; //该键名必须跟提交的时候的名字完全一致(区分大小写)
//也可以显示所有post数据:
var_dum($_POST)
?>
接收post数据的形式为:(在abc.php网页中)
通常,网页中的form表单,一般都用post方式,get方式一般都体现在其它3种形式
$_REQUEST变量(数组)
$_REQUEST数组,其实并不是一个独立的数据来源,而是$POST数据和$_GET数据的“总和”
即$_REQUEST数组中包括了所有$_POST数据和$_GET数据--其实是由系统内部自动存储的。
通常,$_POST数据和$_GET数据不会“同时出现”,$_REQUEST数组就代表了其中之一。
get与post数据同时提交的情形:
此时,一般只有一种html语法形式会出现该情形,如下:
<form action="abc.php?a=5&b=10" method="post">
Project 1:<input type="text" name="uName" />
Project 2:<input type="password" name="uPswd" />
<input type="submit" value="Submit" />
</form>
则此时,uName和uPswd两个数据以post方式提交给abc.php
并同时:a=5 和 b=10两个数据,以get方式提交给abc.php
则在页面中这样取得get数据:
$v1 = $_GET['a'];
$v2 = $_GET['b];
这样取得 post数据:
$v3 = $_POST['uName'];
$v4 = $_POST['uPswd'];
但,也可以这样取得全部数据:
$v1 = $_REQUEST['a'];
$v2 = $_REQUEST['b];
$v3 = $_REQUEST['uName'];
$v4 = $_REQUEST['uPswd']
当get数据和post数据同时提交并其中有重名时说明:
1:尽量避免重名
2:如果重名了,此时$_REQUEST只会记录(存储)其中一个数据(要么get数据,要么post数据)
3:至于记录的是哪个,是由php.ini中的一个设置来决定的
request_order = "GP"; //这是默认值,G代表GET,P代表POST
其含义是:先存储GET数据,再存储POST数据
由此可见,如果重名,此时POST数据会覆盖GET数据
改为:request_order = "PG",顺序反过来。。。。。
注:$_REQUEST、$_GET、$_POST三种数据相互独立!
$_SERVER变量(数组)
该变量存储了服务器端或客户端的一些请求信息或设置信息,比较多,而且不同的服务器和不同的请求页面,其数据项都可能不同。
常用的有:
REMOTE_ADDR 用户的IP地址
SERVER_ADDR 服务器端的IP地址
SERVER_NAME 服务器名(主机名)
DOCUMENT_ROOT 站点绝对路径(其实就是主机设置中的DocumentRoot
PHP_SELF 当前网页的文件路径
QUEER_STRING 表示一个get请求的整体字体串,类似这样:
http://www.abc.com/abc.php?a=5&b=10 链接地址中的 “a=5&b=10”
输出所有项(可能每台服务器有所差异):
$GLOBALS变量(数组)
似乎是一个多余的变量:它只是把我们自己定义的所有全局变量存储到该数组中:
变量名就是该数组的下标(键名),变量值就是对应的值。
由上图代码可以看出,$v1 and $v2 被输出,而函数中的 $v3 and $v4 没有被输出!