当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

6.6.1预定义变量$_REQUEST

9/17/2020 9:37:07 PM 人评论

6.6.1预定义变量$_REQUEST

6.6 WEB服务器端其他数据采集方法

PHP还提供了其他预定义变量“采集”浏览器端主机信息(如浏览器端主机的IP地址、主机名等信息)。

6.6.1 预定义变量$_REQUEST

使用预定义变量$_REQUEST既可以采集GET方式提交的URL查询字符串中的参数信息,也可以采集FORM表单POST方式提交的参数信息。以前程序中所有使用$_GET或$_POST采集的参数信息都可以替换成使用$_REQUEST采集。即$_REQUEST = array_merge ( $_GET , $_POST )。

需要注意的是,使用GET和POST混合方式提交数据时,若一个参数名既存在于GET请求中又存在于POST请求中,使用$_REQUEST采集该参数名对应的参数值时,将造成数据的丢失。例如request.php程序如下。

<form action="request.php?action=insert" method="post">

<input type="submit" name="action" value="添加">

</form>

<?php

if(isset($_GET['action'])){

echo $_GET['action'];

echo "<br/>";

}

if(isset($_POST['action'])){

echo $_POST['action'];

echo "<br/>";

}

if(isset($_REQUEST['action'])){

echo $_REQUEST['action'];

echo "<br/>";

}

?>

request.php程序的运行结果如图6-11所示,单击“添加”按钮后,request.php程序的运行结果如图6-12所示。程序request.php使用预定义变量$_REQUEST采集名称为“action”的请求参数时,实际上只采集了到了POST提交的参数,忽略了GET提交的参数。

figure_0130_0176
图6-11 $_REQUEST变量的使用
figure_0130_0177
图6-12 $_REQUEST变量的使用

使用GET和POST混合方式提交数据时,预定义变量$_REQUEST究竟是采集了POST提交的参数,还是GET提交的参数,与php.ini配置文件中的配置有直接关系。在php.ini文件中有这样的配置:request_order = "GP",这里的“GP”用于设定预定义变量GET和POST的解析顺序。如果把request_order = "GP"修改为request_order = "PG",WEB服务器重启后,单击request.php程序产生的“添加”按钮,将产生另外的结果。请读者自己分析产生该结果的原因。

6.6.2 预定义变量$_SERVER

使用预定义变量$_SERVER可以得到浏览器端和服务器端主机的一些相关信息,举例如下。

xiao_1 $_SERVER["REMOTE_ADDR"]:定义了浏览器端主机的IP地址。

xiao_1 $_SERVER["SERVER_ADDR"]:定义了服务器主机的IP地址。

xiao_1 $_SERVER["PHP_SELF"]:定义了当前执行程序的文件名。

xiao_1 $_SERVER['QUERY_STRING']:定义了URL的查询字符串。

xiao_1 $_SERVER['DOCUMENT_ROOT']:定义了WEB服务器主目录。

xiao_1 $_SERVER["REQUEST_URI"]:定义了除域名外的其余URL部分。

例如程序server.php如下。

<?php

$clientIP = $_SERVER['REMOTE_ADDR'];

$serverIP = $_SERVER['SERVER_ADDR'];

$phpSelf = $_SERVER['PHP_SELF'];

$queryString = $_SERVER['QUERY_STRING'];

$documentRoot = $_SERVER['DOCUMENT_ROOT'];

$requestURI = $_SERVER["REQUEST_URI"];

echo $clientIP;

echo "<br/>";

echo $serverIP;

echo "<br/>";

echo $phpSelf;

echo "<br/>";

echo $queryString;

echo "<br/>";

echo $documentRoot;

echo "<br/>";

echo $requestURI;

?>

在浏览器地址栏中输入“http://localhost/6/server.php? current_page=2”时,server.php程序的运行结果如图6-13所示。

figure_0130_0178
图6-13 $_SERVER变量的使用

相关教程

共有条评论 网友评论

验证码: 看不清楚?