PHP面试知识复习(三):超全局变量——SERVER常用元素

PHP有很多超全局变量

  • $GLOBALS
  • $_SERVER
  • $_GET
  • $_POST
  • $_FILES
  • $_COOKIES
  • $_SESSION
  • $_REQUEST
  • $_ENV

其中只有$_SERVER是需要特别记忆的,其中有一些元素我认为比较常用,挑出来专门记忆一下

以链接为例,假设访问链接是http://www.example.com/test/test.php?value=test

键名
SERVER_PROTOCOLHTTP/1.1
SERVER_NAMEwww.example.com
SERVER_PORT80
PHP_SELF/test/test.php
SCRIPT_NAME/test/test.php
QUERY_STRINGvalue=test
REQUEST_URI/test/test.php?value=test
SCRIPT_FILENAMED:/WWW/test/test.php
DOCUMENT_ROOTD:/WWW/
HTTP_HOSTwww.example.com
SERVER_ADDR127.0.0.1
REMOTE_ADDR127.0.0.1
HTTP_REFERER 
REQUEST_METHODGET
PATH_INFO 

HTTP_HOST与SERVER_NAME区别

HTTP_HOST实际显示内容为SERVER_NAME:SERVER_PORT,在端口为80时不显示,所以看起来和SERVER_NAME一样

PHP_SELF与SCRIPT_NAME区别

$_SERVER[‘PHP_SELF’]

域名返回值
http://www.example.com/test//test/index.php
http://www.example.com/test/index.php/test/index.php
http://www.example.com/test/index.php?a=test/test/index.php
http://www.example.com/test/index.php/dir/test/dir/test
  • 无论是否包含index.php,都会在返回值包含index.php
  • 如果文件名后再加斜线,就把斜线后面的内容返回

$_SERVER[‘SCRIPT_NAME’]

域名返回值
http://www.example.com/test//test/index.php
http://www.example.com/test/index.php/test/index.php
http://www.example.com/test/index.php?a=test/test/index.php
http://www.example.com/test/index.php/dir/test/test/index.php

都返回当前文件名/test/index.php

HTTP_REFERER

HTTP_REFERER显示的是从上一页跳转到当前页时,上一页的地址,但我是直接输入链接访问的,所以值为空

PATH_INFO

PATH_INFO显示的是脚本名称之后,查询语句(QUERY_STRING)之前的路径信息,这里没有,所以为空,如果访问的是

http://www.example.com/test/test.php/some/stuff/?value=test,则返回/some/stuff/

参考