微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php全局数组有哪些

PHP全局数组有9个:1、“$GLOBALS”,是由所有已定义的全局变量组成的数组;2、“$_SERVER”,是包含诸如头信息、路径和脚本位置的数组;3、“$_COOKIE”,由会话数据组成的数组;4、“$_GET”;5、“$_ENV”等。

本教程操作环境:windows7系统、PHP8.1版、DELL G3电脑

PHP全局数组

PHP全局数组全称“超全局数组”或“超全局变量”,是PHP中特殊定义的数组变量,之所以称为超全局数组是因为这些数组在脚本中的任何地方、任何作用域内都可以访问,如函数、类、文件等。

超全局数组变量是在全部作用域中始终可用的内置变量。

PHP中的超全局数组包括以下9个:

  • $GLOBALS:包含一个引用指向每个当前脚本的全局变量范围内有效的变量。该数组的键名为全局变量名称

  • $_SERVER:显示获取服务器的相关信息;

  • $_GET:把数据通过地址栏传递到服务器,这是方式必须是$_GET方式传递;

  • $_POST:通过表单发送的数据必须是POST方式;

  • $_REQUEST:包含上面两种数据传递方式(POST和GET);

  • $_COOKIE:处理客户端的会话数据;

  • $_SESSION:处理服务器端的会话数据;

  • $_FILES:上传文件需要用到的数组;

  • $_ENV: 执行环境提交至脚本的变量

$_GET

  • 原理

    在这里插入图片描述

  • 使用一:浏览器通过超链接传送信息给服务器(认是GET)
<html>
<head>
<Meta http-equiv=content-type content=text/html;charset=utf-8/>
</head>
<body>
//注意:信息如何传递!!!
<a href=1.PHP?city=XI'AN&name=tan>数据</a>
</body>
</html>
<html>
<head>
<Meta http-equiv=content-type content=text/html;charset=utf-8/>
</head>
<body>
<?PHP
	echo <pre>;
 	echo print_r($_GET);
	echo </pre>;
	echo $_GET['name'];
?>
</body>
</html>
  • 注意:IE5.5和IE6存在中文奇数乱码的问题,解决?urlencode和urldecode。
<html>
<head>
<Meta http-equiv=content-type content=text/html;charset=utf-8/>
</head>
<body>
<?PHP
	$city=urlencode(大西安);
	echo <a href='1.PHP?city={$city}&name=tan'>数据</a>;
?>
</body>
</html>
<html>
<head>
<Meta http-equiv=content-type content=text/html;charset=utf-8/>
</head>
<body>
<?PHP
	echo <pre>;
 	echo print_r($_GET);
	echo </pre>;
	echo urldecode($_GET['city']);
?>
</body>
</html>
  • 使用二:浏览器通过表单传送信息给服务器(最好使用$_POST)
<html>
<head>
<Meta http-equiv=content-type content=text/html;charset=utf-8/>
</head>
<body>
<form action='1.PHP' method='GET'>
输入内容:<input type='text' name='ha'/>
<input type='submit' name='查询'/>
</form>
</body>
</html>
<html>
<head>
<Meta http-equiv=content-type content=text/html;charset=utf-8/>
</head>
<body>
<?PHP
	echo $_GET['ha'];
?>
</body>
</html>
  • 禁止启用register_globals:设置register_globals=off;
  • 启用register_globals,以下代码访问时若输入http://localhost:88/1.PHP?a=10&b=20;将得到10 20。
<html>
<head>
<Meta http-equiv=content-type content=text/html;charset=utf-8/>
</head>
<body>
<?PHP
	echo $a. .$b;
?>
</body>
</html>

$_POST

  • 通过post方式提交的数据,会被封装到$_POST超全局数组中。
  • 使用一:浏览器通过表单传送信息给服务器(有些数据必须使用post方式)
<html>
<head>
<Meta http-equiv=content-type content=text/html;charset=utf-8/>
</head>
<body>
<form action='1.PHP' method='POST'>
用户名:<input type=text name=username/><br/>
密码:<input type=password name=password/><br/>
性别:<input type=radio name=sex value=woman>女</input><input type=radio name=sex value=man>男</input><br/>
籍贯:<select name=city>
<option value=西安>西安</option>
<option value=北京>北京</option>
<option value=哈尔滨>哈尔滨</option>
</select>
<br/>
爱好:<input type=checkBox name=hobby[] value=唱歌>唱歌</input>
<input type=checkBox name=hobby[] value=跳舞>跳舞</input>
<input type=checkBox name=hobby[] value=LOL>LOL</input><br/>
个人简介:<textarea rows=10 cols=10 name=introduce></textarea><br>
文件上传:<input type=file name=files></input><br/>
<input type=submit value=提交/>
</form>
</body>
</html>
<html>
<head>
<Meta http-equiv=content-type content=text/html;charset=utf-8/>
</head>
<body>
<?PHP
	echo <pre>; 
	//如何接收checkBox的所有数据(注意中括号[]):<input type=checkBox name=hobby[] value=唱歌>唱歌</input>
	echo print_r($_POST);
	echo </pre>;
	
	$hobbies=$_POST['hobby'];
	foreach($hobbies as $key=>$val){
		echo <br/>.$key. .$val;
	}
?>
</body>
</html>
  • POST方式和GET方式的区别

    • POST方式安全性好
    • 数据传输大小(POST方式大)
    • 保存到收藏夹(GET方式)

$_REQUEST

$_REQUEST是一个包含了 $_POST、$_GET 和 $_COOKIE 的数组,数组结构与 $_POST 和 $_GET 类似。

也就是说不管是使用 POST 还是使用 GET 方式提交的数据,都可以使用 $_REQUEST 来获取,甚至可以使用 $_REQUEST 来获取 COOKIE 的信息。在 PHP5.3 中引入 request_order 属性,我们可以通过在 PHP.ini 配置文件修改 request_order 属性的值,来控制 $_REQUEST 中包含的内容

request_order 属性的值可以是 G、P 和 C 这三个大写的英文字母,它们分别代表 GET、POST 和 COOKIE。认情况下 request_order 属性认值为request_order=GP,并不包含 C,也就是说 $_REQUEST 中并不包含 COOKIE 的信息,如果我们希望 $_REQUEST 中包含 COOKIE 的话,需要将其修改为request_order=GPC。

注意:不要经常使用$_REQUEST(因为将多个信息混合)。

<html>
<head>
<Meta http-equiv=content-type content=text/html;charset=utf-8/>
</head>
<body>
<a href=1.PHP?name='tan'>超链接</a>
<form action='1.PHP' method='POST'>
用户名:<input type=text name=username/><br/>
密码:<input type=password name=password/><br/>
<input type=submit value=提交/>
</form>
</body>
</html>
<html>
<head>
<Meta http-equiv=content-type content=text/html;charset=utf-8/>
</head>
<body>
<?PHP
	echo $_REQUEST['name'];
	echo $_REQUEST['username'];
?>
</body>
</html>
  • 通过$_SERVER[‘REQUEST_METHOD’]区分GET和POST
<html>
<head>
<Meta http-equiv=content-type content=text/html;charset=utf-8/>
</head>
<body>
<?PHP
	if($_SERVER['REQUEST_METHOD']==GET){
		echo $_REQUEST['name'];
	}else if($_SERVER['REQUEST_METHOD']==POST){
		echo $_REQUEST['username'];
	}
?>
</body>
</html>

$_SERVER

$_SERVER是一个包含诸如头信息、路径和脚本位置的数组。数组的实体由web服务器创建,并不能保证所有的服务器都能产生所有的信息,服务器可能忽略了一些信息,或者产生了一些其他的新的信息。和其他的超全局数组一样,这是一个自动全局变量,在所有的脚本中都有效,在函数或对象的方法中不需要使用global关键字访问它。

$_ENV

获取服务器端的环境变量,通过修改PHP.ini的variables_order=EGPCS启动。

$_ENV数组中的内容是在PHP解析器运行时,从PHP所在服务器中的环境变量转变为PHP全局变量的。它们中许多都是由PHP所运行的系统决定的,完整的列表是不可能的,需要查看PHP所在服务器的系统文档以确定其特定的环境变量。

$GLOBALS

$GLOBALS是由所有已定义的全局变量组成的数组,变量名就是该数组的索引。

  • 包含了全部变量的全局组合数组。

  • 当定义一个全局变量,也会被$GLOBALS管理。
<html>
<head>
<Meta http-equiv=content-type content=text/html;charset=utf-8/>
</head>
<body>
<?PHP
	$a=100;
	echo <pre>;
	print_r($GLOBALS);
	echo </pre>;
?>
</body>
</html>

在这里插入图片描述

$_FILES

使用表单的file输入域上传文件时,必须使用post提交。但在服务器文件中,并不能通过$_POST超全局数组获取到表单中file域的内容。而$_FILES超全局变量是通过post方法传递的已上传文件项目组成的数组。$_FILES是一个二维数组,包含5个子数组元素,其中第一个下标是表单中file输入域的名称,第二个下标用于描述上传文件属性

$_COOKIE

$_COOKIE超全局数组是经由HTTP Cookies方法提交至脚本的变量。通常这些Cookies是由以前执行的PHP脚本通过setCookies()函数设置到客户端浏览器中的,当PHP脚本从客户浏览器提取一个cookie后,它将自动把它转换成一个变量,可以通过这个$_COOKIE超全局数组和cookie的名称来存取指定的cookie值。

$_SESSION

会话控制是在服务器端使用session跟踪用户,当服务器页面中使用session_start()函数开启session后,就可以使用$_SESSION数组注册全局变量用户就可以在整个网站中访问这些会员信息。

说明:$_COOKIE、$_SESSION、$_REQUEST的区别

PHP 中,cookie 就是服务器,它是留在客户端(浏览器)上的一个小的数据文件,通常用于标识用户信息,也称为浏览器缓存或 Cookies。

$_COOKIE[] 全局数组存储了通过 HTTP COOKIE 传递到脚本的信息,PHP 可通过 setcookie() 函数设置 COOKIE 的值,用 $_COOKIE[] 数组接收 COOKIE 的值,$_COOKIE[] 数组的索引为 COOKIE 的名称

session 是一种客户与网站(服务器)更为安全的对话方式,一旦开启了 session 会话,便可以在网站的任何页面使用(保持)这个会话,从而让访问者与网站之间建立了一种“对话”机制。但是 session 不同于 cookie,必须先启动,才能生效。

$_SESSION[] 数组用于获取会话变量的相关信息。

$_REQUEST 支持 $_GET 和 $_POST 发送过来的请求,即 get 和 post 它都可以接受,浏览器地址栏中的数据显示不显示要看传递的方法,get 会显示在 url 中(有字符限制),post 不会显示在 url 中,可以传递任意多的数据(只要服务器支持)。

认情况下,$_REQUEST[] 数组包含了 $_GET、$_POST 和 $_COOKIE 的数组。

推荐学习:《PHP教程

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐