上一篇: php与web表单
下一篇: php与Cookie技术
超全局变量是指在全部作用域中始终可用的内置变量。
php中的许多预定义变量都是超全局变量,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无须执行global $variable;语句就可以访问它们。
在php中一共有9个预定义超全局变量
变量名 | 功能描述 |
$_GET | 经由php get方法提交至脚本的变量 |
$_POST | 经由php post方法提交至脚本的变量 |
$_REQUEST | 经由get、post和cookie机制提交至脚本的变量 |
$_SERVER | 经由web服务器设定或者直接与当前脚本的执行环境相关联 |
$_ENV | 执行环境提交至脚本的变量 |
$_FILES | 经由php post文件上传而提交至脚本的变量 |
$_COOKIE | 经由php cookies方法提交至脚本的变量 |
$_SESSION | 当前注册给脚本会话的变量 |
$GLBALS | 包含一个引用指向每个当前脚本的全局范围内有效的变量 |
在操作php脚本时,经常需要获取客户端提交的数据,对于get方式提交的数据,可以使用$_GET变量来获取,$_GET变量实际上是一个数组,它可以获取get方式提交表单的数据,也可以获取在url地址中的参数。
案例
<?php
//判断通过url传递的参数中是否有username
if(isset($_GET['username'])){
$val=$_GET['username'];
echo "usernam=".$val;
}else {
echo "没有获取到username参数";
}
?>
在浏览器地址栏中输入:http://域名/文件地址?username=abc123,运行结果
需要注意的是,$_GET变量只能获取以get方式提交的便当的参数信息
对于post方式提交的表单,在PHP中可以通过$_POST变量来获取,它是一个数组。数组中的每一个键对应表单中的一个元素。如,表单中包含一个name为“user”的文本输入框,则在使用post方式提交数据后,可以使用$_POST['usr']获取用户输入的数据
案例
<?php
header('content-type:text/html;charset=utf-8');
if($_SERVER['REQUEST_METHOD']=='POST'){
$name=$_POST['username'];
$sex=$_POST['sex'];
$hobby=$_POST['hobby'];
echo "姓名:".$name."<br>";
echo "性别:".$sex."<br>";
echo "爱好:";
foreach($hobby as $key=>$val){
echo $val;
}
exit;
}
?>
<form action="test.php" method="post" enctype="multipart/form-data">
姓名:<input type="text" name="username"><br><br>
性别:
<input type="radio" name="sex" value="男">男
<input type="radio" name="sex" value="女">女
<input type="radio" name="sex" value="保密">保密<br><br>
爱好:
<input type="checkbox" name="hobby[]" value="运动">运动
<input type="checkbox" name="hobby[]" value="唱歌">唱歌
<input type="checkbox" name="hobby[]" value="游泳">游泳<br><br>
<input type="submit" value="提交">
</form>
运行结果
点击提交后的,运行结果
在php开发中,如果需要通过一种方式同时获取$_GET、$_POST中的数据时,可以使用预定义超全局变量$_REQUEST,$_REQUEST是一个可以保存各种方式传递数据给php的数组变量,默认情况下包含$_GET、$_POST和$_COOKIE中的内容,也就是说通过$_REQUEST可以获取$_GET、$_POST和$_COOKIE的数据
案例
<?php
$a=$_REQUEST['a'];
$b=$_REQUEST['b'];
echo "<pre>";
echo "a=".$a."<br>b=".$b;
echo "</pre>";
?>
在地址栏输入:http://域名/文件地址?a=10&b=22;运行结果
值得一提的是,$_GET、$_POST和$_COOKIE在$_REQUEST中出现的顺序依赖于php的配置文件php.ini中variables_order配置指令指定的顺序。默认情况下,php对预定义变量的解析顺序为$_ENV、$_GET、$_POST、$_COOKIE、$_SERVER,解析后新值会覆盖同名的旧值
注意:由于$_REQUEST中的变量是通过GET、POST和COOKIE输入机制传递给脚本文件,所以可以被远程用户篡改而降低安全性,如,用户可以通过浏览器来修改url,所以在实际开发中,只有在不确定是GET请求还是POST请求的时候才会用到$_REQUEST
在php程序中,如果需要在web服务器中保存交互信息,可以使用预定义超全局变量$_SERVER,它是由web服务器创建的信息数组,用于存放hiip请求头信息以及web服务器的信息,对于不同的web服务器,$_SERVER中包含的变量也会有所不同,常见的变量如下:
变量分类 | 变量名 | 变量说明 |
http请求头信息 | HTTP_HOST | web服务器的地址 |
HTTP_USER_AGENT | 客户端操作系统和浏览器信息 | |
HTTP_ACCEPT | 当前HTTP请求的accept头部信息 | |
HTTP_ACCEPT_LANGUAGE | 当前HTTP请求的accept_language头部信息 | |
HTTP_ACCEPT_ENCODING | 当前HTTP请求的accept_encoding头部信息 | |
HTTP_REFERER | 链接到当前页面的前一页面的url地址 | |
web服务器信息 | SERVER_NAME | web服务器的名字 |
SERVER_ADDR | web服务器的IP地址 | |
SERVER_PORT | web服务器的端口号 | |
REMOTE_ADDR | 客户端的ip地址 | |
DOCUMENT_ROOT | web服务器中的应用代码存放位置 | |
SERVE_ADMIN | web服务器的管理账户 | |
SCRIPT_FILENAME | 当前访问的脚本文件的文件名 | |
REMOTE_PORT | 客户端的使用端口号 | |
GATEWAY_INTERFACE | 网关接口的信息 | |
SERVER_PROTOCOL | web服务器使用协议信息 | |
REQUEST_METHOD | 客户端发出的http请求中使用的方法 | |
QUERY_STRING | 客户端发出的http请求中的参数 | |
REQUEST_URL | url中的路径部分 | |
SCRIPT_NAME | 当前访问的脚本文件的相对路径 | |
PHP_SELF | 当前访问php脚本文件的相对路径 | |
REQUEST_TIME | 客户端发出http请求的时间 |
案例
<?php
echo "客户端的ip地址:".$_SERVER['REMOTE_ADDR']."<br>";
echo "文件的存放位置:".$_SERVER['DOCUMENT_ROOT']."<br>";
echo "web服务器的地址:".$_SERVER['HTTP_HOST']."<br>";
echo "脚本文件名:".$_SERVER['SCRIPT_FILENAME']."<br>";
echo "表单的请求方式:".$_SERVER['REQUEST_METHOD']."<br>";
?>
运行结果
超全局变量$GLOBALS是一个引用全局作用域中全部可用变量的数组,变量名就是数组的键,通过键就可以获取对应的全局变量的值。
案例
<?php
function test(){
$var1="局部变量 var1";
echo "在当前范围内的:".$var1."<br>";
echo "在全局范围内的:".$GLOBALS['var2']."<br>";
}
$var2="全局变量 var2";
test();
?>
运行结果
上一篇: php与web表单
下一篇: php与Cookie技术
*声明:内容来源于网络收集和整理,版权归原著所有,如来源信息有误或侵犯权益,请联系站长作修改和删除处理。