PHP Web变量

本文最后更新于:2024年3月18日 凌晨

PHP Web变量

  • 本节介绍3种使用PHP脚本来获取服务器环境信息,请求信息(包括表单参数和cookie)的方法,我们通常把这些信息统称为EGPCS(environment,GET,POST,cookies,server)

  • 如果php.ini文件中的register_globals选项被启用,PHP就会为每一个表单参数,请求信息及服务器环境创建一个独立的全局变量,这个功能非常方便,它可以让浏览器为你的程序初始化以任何变量,但这个功能也非常危险。

  • 如果忽略register_globals的设置,PHP将创建6个包含EGPCS信息的全局数组。

  • 这些全局数组为:

    • $_COOKIE:包含作为请求的一部分进行传递所有的cookie值,数组的键名是cookie名称。
    • $_GET:包含作为GET请求的一部分进行传递的参数,数组的键名是表单参数的名称。
    • $_POST:包含作为POST请求的一部分进行传递的参数,数组的键名是表单参数的名称。
    • $_FILES:包含所有上传的文件的信息。
    • $_SERVER:包含很多服务器相关的有用信息。
    • $_ENV:包含环境变量值,键名是环境变量的名称。
  • 这些变量不但是全局的,而且在函数的定义中也是可见的,$_REQUEST数组也由PHP自动生成,包含了$_GET,$_POST,$_COOKIE三个数组的所有元素。

$_SERVER

  • PHP还会创建一个$_SERVER['PHP_SELF']的变量,用于存放当前脚本的路径和名称(相对于文档根目录,如/store/cart.php),这个变量很好用。

  • $_SERVER数组包含很多服务器相关的有用信息,其中大部分信息来自于CGI规范(http://hoohoo.ncsa.uiuc.edu/cgi/env.html)中所要求的环境变量(environment variable)

  • SERVER_SOFTWARE:一个用于标识服务器的字符串,例如"Apache/1.3.33 (Unix)mod_perk/1.26 PHP/5.04"

  • SERVER_HOSTNAME:主机名,DNS别名,或者IP地址,如"www.example.com

  • GATEWAY_INTERFACE:所遵循的CGI标准的版本号。

  • SERVER_PROTOCOL请求协议的名称和版本,例如"HTML/1.1"

  • REQUEST_METHOD:客户端获取文档的方法,如"GET"

  • PATH_INFO:客户端发送的拓展路径,例如"/list/users"

  • PATH_TRANSLATED:PATH_INFO的值,由服务器转换为文件名,例如"/home.httpd/htdocs/list/users"

  • SCRIPT_NAME:当前页面的URL路径,用于自引用脚本,例如"/~me/meun.php"

  • QUERY_STRING:检索字符串,URL中问号?后面的部分,例如URL为"show.php?name=Fred+age=35",则$_SERVER[‘QUERY_STRING’]为"name=Fred+age=35"

  • REMOTE_HOST:请求本页的机器主机名,如dialup-192-168-0-1.example.com,机器没有DNS记录,则这个变量为空,只给REMOTE_ADDR值。

  • REMOTE_ADDR:请求本页的机器IP地址,如"192.168.0.250"

  • AUTH_TYPE:如果本页面受到密码保护,则本变量指明了保护本页面的验证方法,如"basic"

  • REMOTE_USER:如果本页面受到密码保护,则本变量客户端验证的用户(如"fred"),注意无法得知用户使用了什么密码。

  • REMOTE_IDENT:如果服务器被配置成使用identd(RFC931)验证,这是从发出WEB请求的主机获得的用户名,例如"barney",因为它很容易被伪造,所以不要使用它进行用户验证。

  • CONTENT_TYPE:通过PUT或POST进行查询所附带的信息内容的类型,例如"x-url-encoded"

  • CONTENT_LENGTH:通过PUT或POST进行查询所附带的信息内容的长度。

  • Apache服务器也会在请求中为每一个HTTP头在$_SERVER数组中创建项,对于每一个键,头名称被转换为大写,连字符(-)会被转换成下划线(_),并在其前面加上字符串"HTTP_“,例如User-Agent头对应的项具有"HTTP_USER_AGENT”,最重要和常用的两个头为:

1
HTTP_USER_AGENT
  • 标识浏览器的字符器,如"Mozilla/5.0 (Windows 2000; U) Opera 6.0[en]”,表示访问当前页面的用户使用的操作系统,浏览器类型,版本等。
1
HTTP_REFERER

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!