PHP超级全局变量

Posted html55

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP超级全局变量相关的知识,希望对你有一定的参考价值。

超级全局变量有9个
特点是全局可用!
页面到处都能访问到这个变量

技术图片

 

$_GET获得的是浏览器地址栏过来的数据,或者表单GET方式提交的数据

$_POST获得的是表单POST方式提交的数据

$_REQUEST默认情况(具体情况要看php.ini的配置)获得的是既包含POST过来的值,也包含GET方式获得的值

 如下例子:2222.html上有个表单,提交给2222.php这个文件

<html>
    <head>
        <title>实验GET_POST的区别</title>
        <meta charset="UTF-8"/>
    </head>
    <body>
        <!--本文件2222.html提交数据-->
        <form action="2222.php?id=5678" method="post">
            <input type="text" name="username" value="" />
            <input type="submit" value="提交"/>
        </form>
    </body>
</html>

 

 1 <?php
 2 header("Content-type:text/html;charset=UTF-8");
 3 echo ‘<pre>‘;
 4 
 5     //2222.php 接收数据并显示出来
 6     print_r($_GET);
 7     print_r($_POST);
 8     print_r($_REQUEST);
 9 
10 echo ‘<pre>‘;
11 ?>

  

技术图片

最终的结果,可以看到,$_REQUEST这个数组是$_GET和$_POST合并起来的

如果让get和post中有重名的呢?

修改2222.html中<form action="2222.php?id=5678" method="post">这句,改为<form action="2222.php?id=5678&username=李四" method="post">

再提交会发生什么呢?

技术图片

如下,找到php配置文件,搜索 request_order 

技术图片

修改为PG,保存,重启apache,实验一下,就相反了,不细说。

 

$_ENV

打印一下$_ENV,print_r($_ENV); 看看出来的是什么?

发现,没有反应!空白。原来,考虑到信息安全问题,php的配置文件php.ini中,variables_order控制着$_ENV的显示

技术图片

$_ENV里面是操作系统呀什么的这些信息

技术图片

 

$_SERVER 打印出来如下:

Array
(
    [HTTP_HOST] => localhost
    [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    [HTTP_ACCEPT_LANGUAGE] => zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    [HTTP_ACCEPT_ENCODING] => gzip, deflate
    [HTTP_CONNECTION] => keep-alive
    [HTTP_UPGRADE_INSECURE_REQUESTS] => 1
    [HTTP_CACHE_CONTROL] => max-age=0
    [PATH] => C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files\\nodejs\\;C:\\Program Files\\Git\\cmd;
    [SystemRoot] => C:\\Windows
    [COMSPEC] => C:\\Windows\\system32\\cmd.exe
    [PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
    [WINDIR] => C:\\Windows
    [SERVER_SIGNATURE] => 
    [SERVER_SOFTWARE] => Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45
    [SERVER_NAME] => localhost
    [SERVER_ADDR] => ::1
    [SERVER_PORT] => 80
    [REMOTE_ADDR] => ::1
    [DOCUMENT_ROOT] => E:/xxxx
    [REQUEST_SCHEME] => http
    [CONTEXT_PREFIX] => 
    [CONTEXT_DOCUMENT_ROOT] => E:/xxxx
    [SERVER_ADMIN] => [email protected]
    [SCRIPT_FILENAME] => E:/xxxx/2222.php
    [REMOTE_PORT] => 2479
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.1
    [REQUEST_METHOD] => GET
    [QUERY_STRING] => 
    [REQUEST_URI] => /2222.php
    [SCRIPT_NAME] => /2222.php
    [PHP_SELF] => /2222.php
    [REQUEST_TIME_FLOAT] => 1556588895.594
    [REQUEST_TIME] => 1556588895
)

 

$GLOBALS — 引用全局作用域中可用的全部变量

它就是个快捷方式集合,把在全局作用域中的全部变量(除了$_ENV)都放在里面了。

$aaa = 123456;
print_r($GLOBALS);

 

技术图片

技术图片

 

以上是关于PHP超级全局变量的主要内容,如果未能解决你的问题,请参考以下文章

何时在面向对象的 php 中的超级全局变量中使用“@”? [复制]

php超级全局变量

php之快速入门学习-12(超级全局变量)

PHP 超级全局变量

PHP超级全局变量魔术变量和魔术函数

PHP超级全局变量魔术变量和魔术函数