认识PHP的全局变量

1、$_SERVER

说明:
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。
比如,请求一个web服务,打印出$_SERVER,这里打印的值依赖于实际的生产环境。

如果以命令行方式运行 PHP,下面列出的元素几乎没有有效的(或是没有任何实际意义的)。

具体每一项的说明详见:
http://php.net/manual/zh/reserved.variables.server.php

{
    "REDIRECT_STATUS": "200",
    "HTTP_HOST": "jasper.pdmp.qq.com",
    "HTTP_CONNECTION": "keep-alive",
    "CONTENT_LENGTH": "293",
    "HTTP_USER_AGENT": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36",
    "HTTP_CACHE_CONTROL": "no-cache",
    "HTTP_ORIGIN": "chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop",
    "CONTENT_TYPE": "application/x-www-form-urlencoded",
    "HTTP_POSTMAN_TOKEN": "00b9b786-24c4-53a9-bde1-cd9323689e2e",
    "HTTP_AUTHTOKEN": "MTAwMCwxNTE0MjU5NTExLDgxYTRmN2U0MTA0ZDZjMTVjMTIwYzdkY2FmN2Q3MDgyNmY0N2MyNDg=",
    "HTTP_ACCEPT": "*/*",
    "HTTP_ACCEPT_ENCODING": "gzip, deflate",
    "HTTP_ACCEPT_LANGUAGE": "zh-CN,zh;q=0.8,en;q=0.6",
    "PATH": "/sbin:/usr/sbin:/bin:/usr/bin",
    "SERVER_SIGNATURE": "",
    "SERVER_SOFTWARE": "Apache",
    "SERVER_NAME": "jasper.pdmp.qq.com",
    "SERVER_ADDR": "10.12.236.126",
    "SERVER_PORT": "80",
    "REMOTE_ADDR": "10.25.166.72",
    "DOCUMENT_ROOT": "/data/web/websites/jaspersong/pdmp/public",
    "SERVER_ADMIN": "jaspersong@tencent.com",
    "SCRIPT_FILENAME": "/data/web/websites/jaspersong/pdmp/public/index.php",
    "REMOTE_PORT": "60362",
    "REDIRECT_URL": "/api/package/create",
    "GATEWAY_INTERFACE": "CGI/1.1",
    "SERVER_PROTOCOL": "HTTP/1.1",
    "REQUEST_METHOD": "POST",
    "QUERY_STRING": "",
    "REQUEST_URI": "/api/package/create",
    "SCRIPT_NAME": "/index.php",
    "PHP_SELF": "/index.php",
    "REQUEST_TIME_FLOAT": 1515063383.29,
    "REQUEST_TIME": 1515063383,
    "argv": [],
    "argc": 0
}

2、$_COOKIE

说明:
通过 HTTP Cookies 方式传递给当前脚本的变量的数组。

{
    "pgv_pvi": "3323414528",
    "RK": "KT GMYpOPX",
    "tvfe_boss_uuid": "70334de4e8a247fc",
    "o_cookie": "986405231",
    "pgv_pvid": "9235049948",
    "XDEBUG_SESSION": "PHPSTORM",
    "pgv_si": "s5525579776",
    "PHPSESSID": "oiqkkigpd5mhtcj7jqrmjkdri7",
    "_qpsvr_localtk": "0.7368127632806414",
    "ptui_loginuin": "544726433",
    "pt2gguin": "o0986405231",
    "uin": "o0986405231",
    "skey": "@tw4l7mZaP",
    "ptisp": "ctc",
    "ptcz": "bb1b963605957d494a5fe55ec8558226ea14c0cbe73e3a33956a1f2901a3fbfd"
}

3、$_POST

说明:
HTTP POST 请求的 Content-Typeapplication/x-www-form-urlencoded multipart/form-data 时,会将变量以关联数组形式传入当前脚本。

{"begin_date":"2017-08-22","end_date":"2018-01-03"}

4、$_GET

说明:
通过 URL 参数传递给当前脚本的变量的数组。

5、$_ENV

说明:
通过环境方式传递给当前脚本的变量的数组。

这些变量被从 PHP 解析器的运行环境导入到 PHP 的全局命名空间。很多是由支持 PHP 运行的 Shell 提供的,并且不同的系统很可能运行着不同种类的 Shell,所以不可能有一份确定的列表。请查看你的 Shell 文档来获取定义的环境变量列表。

其他环境变量包含了 CGI 变量,而不管 PHP 是以服务器模块还是 CGI 处理器的方式运行。

6、$_FILES

说明:
通过 HTTP POST 方式上传到当前脚本的项目的数组。

{
    "uploadinput": {
        "name": "jaspersong.zip",
        "type": "application/octet-stream",
        "tmp_name": "/data/tmp/phpkIgxKU",
        "error": 0,
        "size": 510
    }
}

7、$_REQUEST

说明:
默认情况下包含了 $_GET$_POST$_COOKIE 的数组。
但是实际情况依赖于php.ini具体的配置。
在某个web服务器上配置如下:

request_order这个配置项说明哪些全局变量(G,P,C,E,S分别代表$_GET$_POST$COOKIE$_ENV$_SERVER)的内容会被添加到$_REQUEST数组中,并且会指明变量填充的顺序,如果重名,那么后面填充的变量会覆盖前面填充的变量内容。如果把request_order置空,那么PHP将会使用variables_order(如下)配置项所指定的全局变量注册顺序来填充$_REQUEST数组,
而不是说把$_REQUEST置空。

variables_order这个配置项用来指定全局变量EGPCS (Environment, Get, Post, Cookie, and Server)的解析顺序。 如果variables_order被设置为SP,那么PHP会创建$_SERVER$_POST,而不会创建$_ENV$_GET$_COOKIE等变量, 如果被设置为空,那么PHP不会创建任何超级全局变量。

注意:
有时候从$_REQUEST中取出的值不是想要的,考虑这样一个场景: 如果在php.ini中设置request_order = “GPCES”,在HTTP请求中GET或者POST参数的name恰好与COOKIE的name相同,假如为foo。 那么在程序中通过$_REQUEST[‘foo’]来获取到的值是名为foo的一个cookie的值,而不是GET或者POST请求的值。

{
    "files_name": "jaspersong.zip",
    "files_num": "1",
    "total_size": "510",
    "type": "0",
    "file_merge": "1",
    "source_type_encrypted": "0",
    "timestamp": "1515065113971",
    "data_source": "欧莱雅",
    "marketing_type": "1",
    "brand": "欧莱雅",
    "product_name": "dfd13",
    "description": "dfdfd",
    "data_type": "1",
    "auth": "1"
}

8、$_SESSION

说明:
当前脚本可用 SESSION 变量的数组。
PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置。Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。
学习资料:
http://www.w3school.com.cn/php/php_sessions.asp

原文地址:https://www.cnblogs.com/jaspersong/p/8195525.html