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-Type
是 application/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