PHP $_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI']

$_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI'] 三者非常相似,返回的都是与当前 URL 或 PHP 程序文件相关的信息:

  1. $_SERVER['PHP_SELF']:相对于网站根目录的路径及 PHP 程序名称。
  2. $_SERVER['SCRIPT_NAME']:相对于网站根目录的路径及 PHP 程序文件名称。
  3. $_SERVER['REQUEST_URI']:访问此页面所需的 URI 。

一个简单的例子可以看出它们的区别。URL 地址如下:

http://www.5idev.com/php/index.php/test/foo?username=hbolive
  • $_SERVER['PHP_SELF'] 得到:/php/index.php/test/foo
  • $_SERVER['SCRIPT_NAME'] 得到:/php/index.php
  • $_SERVER['REQUEST_URI'] 得到:/php/index.php/test/foo?username=hbolive

从该例子可以看出:

  1. $_SERVER['PHP_SELF'] 则反映的是 PHP 程序本身;
  2. $_SERVER['SCRIPT_NAME'] 反映的是程序文件本身(这在页面需要指向自己时非常有用);
  3. $_SERVER['REQUEST_URI'] 则反映了完整 URL 地址(不包括主机名)

其实从各自的命名上,也可以体现出它们之间的细微差别。

特别的,对于如下地址:

http://www.5idev.com/
  • $_SERVER['PHP_SELF'] 得到:/index.php
  • $_SERVER['SCRIPT_NAME'] 得到:/index.php
  • $_SERVER['REQUEST_URI'] 得到:/

至于有人提到 $_SERVER['PHP_SELF'] 与 $_SERVER['SCRIPT_NAME'] 在 PHP 以 CGI 模式运行下会有区别。由于 PHP 在 CGI 模式运行下并不多见,测试较为麻烦,在此就不再叙述了。如有这种情况,可注意并自行测试。

希望在理解了它们之间的区别之后,以便选择更适合自己程序的来使用。

转自:

http://www.5idev.com/p-php_server_php_self_script_name_request_uri.shtml

PHP $_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI'] 之间的区别的更多相关文章

  1. $_SERVER["QUERY_STRING"],$_SERVER["REQUEST_URI"],$_SERVER["SCRIPT_NAME"] 和$_SERVER["PHP_SELF"]

    $_SERVER["QUERY_STRING"],$_SERVER["REQUEST_URI"],$_SERVER["SCRIPT_NAME" ...

  2. $_SERVER['SCRIPT_NAME']、$_SERVER['SCRIPT_FILENAME']及__FILE__不同

    $_SERVER['SCRIPT_NAME'].$_SERVER['SCRIPT_FILENAME']及__FILE__不同 在PHP中,有时需要知道脚本所处的位置,这时会用到$_SERVER['SC ...

  3. $_SERVER变量 以及 PHP 使用 $_SERVER['PHP_SELF'] 获取当前页面地址及其安全性问题

    PHP $_SERVER['PHP_SELF'] $_SERVER['PHP_SELF'] 表示当前 php 文件相对于网站根目录的位置地址,与 document root 相关. 假设我们有如下网址 ...

  4. $_SERVER["SCRIPT_NAME"]、$_SERVER["PHP_SELF"]、$_SERVER["QUERY_STRING"]、$_SERVER["REQUEST_URI"]

    1.$_SERVER["SCRIPT_NAME"] 说明:包含当前脚本的路径 2.$_SERVER["PHP_SELF"] 说明:当前正在执行脚本的文件名 3. ...

  5. [PHP学习教程 - 网络]002.$_SERVER["SCRIPT_NAME"]、$_SERVER["PHP_SELF"]、$_SERVER["QUERY_STRING"]、$_SERVER["REQUEST_URI"]介绍($_SERVER URL Infomation)

    引言:在使用原生PHP的时候,对于URL路径的切割,如:域名,查询参数等等的提取,通常绝大多数兄弟会忽略$_SERVER中定义的内置常量的关系,这里为大家讲解一下. 常用的URL请求路径$_SERVE ...

  6. Nginx-uri、request_uri、document_uri之间的区别

    在nginx中有几个关于uri的变量,包括$uri.$request_uri.$document_uri,下面看一下他们的区别 :$request_uri: /stat.php?id=1585378& ...

  7. php $_SERVER中的一些选项说明

    1, $_SERVER['SCRIPT_FILENAME'] 和 常量 __FILE__的区别(一般情况下两者的显示相同,都是显示文件的绝对路径,包括文件名,显示的起点是 电脑根目录 /) ①,如果在 ...

  8. PHP获取当前url路径的函数及服务器变量:$_SERVER["QUERY_STRING"],$_SERVER["REQUEST_URI"],$_SERVER["SCRIPT_NAME"],$_SER

    1,$_SERVER["QUERY_STRING"] 说明:查询(query)的字符串 2,$_SERVER["REQUEST_URI"] 说明:访问此页面所需 ...

  9. php $_SERVER中的SERVER_NAME 和HTTP_HOST的区别以及REQUEST_URI的讲解

    今天再次遇到了这个问题通过$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']获取域名及请求的URL的问题,便再次百度了,发现没学习一次都有新的知识,便分享出 ...

随机推荐

  1. sql server 常见问题

    自动生成的值 @@identity 存储过程参数应指定参数长度,且不大于数据库长度,自定义方法里如果有参数,也应指定长度,否则会报错,提取数据长度被断 connectionString 可以指定app ...

  2. 创见WiFi SD卡破解之路

    我最近搞了张Transcend WiFi SD,颇为得意.它可以让我在几秒钟内将单反(奶昔,相当便携)中拍摄的照片传到任何支持wifi的设备上.我很喜欢在旅途中拍摄和分享图片,所以对我而言,可以无线传 ...

  3. FastJson中@JSONField注解使用

    最近做项目中,使用了json格式在服务器之间进行数据传输.但是发现json格式数据不符合JAVA中的变量定义规则,并且难以理解,因此需要在后台中做二次处理,将数据处理成我们系统中定义的格式. 思路: ...

  4. CodeIgniter结合Bootstrap

    CodeIgniter-Bootstrap结合了 cI和bootstrap的长处,一个专注于服务器端,一个专注于ui,这个把2个结合起来了.框架地址: http://www.andyhawthorne ...

  5. perl5 第四章 列表和数组变量

    第四章 列表和数组变量 by flamephoenix 一.列表二.数组--列表的存贮  1.数组的存取  2.字符串中的方括号和变量替换   3.列表范围  4.数组的输出  5.列表/数组的长度  ...

  6. Flex TextInput的restrict属性应用

    1,<mx:TextInput id="test_ti" width="160" maxChars="20" restrict=&qu ...

  7. dedecms的入门使用

    前段时间(其实也很远了)一直在学习dedecms,这里对前段时间的学习做一个总结. dedecms学习网址:http://help.dedecms.com/v53

  8. Linux 环境下 fork 函数和 exec 函数族的使用

    前言 接触 Linux 已经有几个月了,以前在网上看各路大神均表示 Windows 是最烂的开发平台,我总是不以为然,但是经过这段时间琢磨,确实觉得 Linux 开发给我带来不少的便利.下面总结一下学 ...

  9. 用composer安装 Laravel | Laravel需要的环境配置

    一:安装 参考网站 http://v4.golaravel.com/docs/4.2/installation 1.先确保安装好了PHP,和服务器环境 2.然后下载composer可执行文件到当前目录 ...

  10. java读写

    IO流下分为字节流与字符流,每个流又分为输入输出以及读写. 字节流的两个基类为InputStream与OutputStream. 字符流为Reader和Writer