说明:就是PHP系统内置的提供给用户使用的变量,这个变量一般都是超全局变量,超全局就是没有作用域的限制有的还可以跨页面。-- 一句话,你在任何地方都可以直接使用的变量。


$GLOBALS

说明:$globals是PHP内置的一个超全局变量,它很牛逼,可以自动获取当前页面中的所有变量的内容。


这个变量不能够直接用echo输出,会报一个错误:

Notice: Array to string conversion in C:\xampp\htdocs\11-14\ydy.php on line 8


原来,该预定义变量的值是一个Array,那么我们就干脆用var_dump去干它!

<?php

	$a = 1;
	$b = 2;
	$c = 3;


	var_dump($GLOBALS) ;

?>

array(8) { 

    ["_GET"]=> array(0) { }

    ["_POST"]=> array(0) { } 

    ["_COOKIE"]=> array(3) { ["Hm_lvt_86f43783acc56b0c8abb5bb039edc763"]=> string(10) "1533648206" ["bdshare_firstime"]=> string(13) "1541729969890" ["exam_psid"]=> string(26) "lh6877ttq1le5qe3l665donjh1" } 

    ["_FILES"]=> array(0) { } 


    ["GLOBALS"]=> *RECURSION* ["a"]=> int(1) ["b"]=> int(2) ["c"]=> int(3) }


由此可见,$globals不仅可以获取当前页面中我们自己定义的变量,还可以获取页面中隐藏的PHP给我们开的挂(内置变量,比如GET,POST,COOKIE,FILES)。


$_SERVER

server会自动获取服务器和客户端的信息。首先这个预定义变量也是一个数组,里面包含了头信息(header),路径(path)和脚本位置等信息。这些信息由web服务器创建,比如我们的PHP程序是跑在Apache服务器上的,那么这些信息就由Apache服务器给我们提供。


接下来,我们可以写一段php代码,去循环变量这个数组,看一看瞧一瞧里面有些啥?


	foreach ($_SERVER as $key => $value) {
		echo "<h3>{$key}={$value}</h3>";
	}

效果:

image.png



$_FILES

获取上传文件的信息,当你做文件上传的时候,这个预定义变量会帮你收集关于上传文件的相关信息。

接下来,我们做一个简单的文件上传,写一个file.php。

这个预定义变量仍然是一个数组。

<?php

	if(!empty($_FILES['fileName'])){
		var_dump($_FILES['fileName']);	
	}
	


?>

<h1></h1>
<form action="" method="post" enctype="multipart/form-data">
	
	<input type="file" name="fileName">

	<input type="submit">

</form>

上传文件的input框name属性为fileName,那么在接收的时候,也需要用fileName去接收 ==》 

$_FILES['fileName']

测试结果:

image.png

我们发现,文件上传的时候是先传递到一个临时目录下面,因此如果要保存这个图片,那么就需要快速地将这个临时文件拷贝到真正想要上传的地方,才可以。在后面,我们会讲到如何去做到真正的文件上传,现在只是看一看这个文件保存在$_FILES中的数据信息。


Name:图片的名称

Type:图片的类型

Tmp_name:文件的临时文件夹和临时名称

Error:错误信息

Size:文件的大小(B


$_GET

其实就是浏览器的地址栏传递方式,比如,你去访问某一个php文件,后面跟上对应的参数,就是GET方式请求。


localhost:8082/index.php?c=getUser&page=1&size=20


$_GET的目的就是去获取get方式请求后面跟随的某一个参数。比如,现在你写一个index.php.

<?php
	
	echo $_GET['c'];

?>

当你用上面的地址去访问这个php文件,就可以看到页面上获取到了其中的参数c。



$_POST

用法和get如出一辙,但是post方式提交的数据不会在浏览器的地址栏中显示,更加的安全,而且对于参数值的长度没有限制。


$_REQUEST

用法和get或者post如出一辙,而且他不限定你用何种方式提交,反正都可以接收得到。