PHP_SELF SCRIPT_NAME REQUEST_URI区别

Posted JasonXu徐晓峰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP_SELF SCRIPT_NAME REQUEST_URI区别相关的知识,希望对你有一定的参考价值。

$_SERVER[php_SELF], $_SERVER[SCRIPT_NAME], $_SERVER[‘REQUEST_URI‘] 在用法上是非常相似的,他们返回的都是与当前正在使用的页面地址有关的信息,这里列出一些相关的例子,帮助确定哪些是在你的脚本最适合的。

1 if (isset($_SERVER[‘PHP_SELF‘]))
2 {
3       define(‘PHP_SELF‘, $_SERVER[‘PHP_SELF‘]);                
4 }
5 else
6 {
7        define(‘PHP_SELF‘, $_SERVER[‘SCRIPT_NAME‘]); 
8 }

 

 

$_SERVER[’PHP_SELF’]

  • http://www.yoursite.com/example/ — – — /example/index.php
  • http://www.yoursite.com/example/index.php — – — /example/index.php
  • http://www.yoursite.com/example/index.php?a=test — – — /example/index.php
  • http://www.yoursite.com/example/index.php/dir/test — – — /dir/test

当我们使用$_SERVER[‘PHP_SELF‘]的时候,无论访问的URL地址是否有index.php,它都会自动的返回 index.php.但是如果在文件名后面再加斜线的话,就会把后面所有的内容都返回在$_SERVER[‘PHP_SELF‘]。

$_SERVER[‘REQUEST_URI‘]

  • http://www.yoursite.com/example/ — – — /
  • http://www.yoursite.com/example/index.php — – — /example/index.php
  • http://www.yoursite.com/example/index.php?a=test — – — /example/index.php?a=test
  • http://www.yoursite.com/example/index.php/dir/test — – — /example/index.php/dir/test

$_SERVER[‘REQUEST_URI‘]返回的是我们在URL里写的精确的地址,如果URL只写到”/”,就返回 “/”

$_SERVER[‘SCRIPT_NAME‘]

  • http://www.yoursite.com/example/ — – — /example/index.php
  • http://www.yoursite.com/example/index.php — – — /example/index.php
  • http://www.yoursite.com/example/index.php — – — /example/index.php
  • http://www.yoursite.com/example/index.php/dir/test — – — /example/index.php

在所有的返回中都是当前的文件名/example/index.php

以上是关于PHP_SELF SCRIPT_NAME REQUEST_URI区别的主要内容,如果未能解决你的问题,请参考以下文章

PHP 中的 PHP_SELF、SCRIPT_NAME 和 REQUEST_URI 有啥区别? [复制]

__FILE__ $_SERVER['PHP_SELF'] $_SERVER['SCRIPT_NAME'] $_SERVER['SCRIPT_FILEN

isset 和empty 两个函数的用法

php 获取当前脚本的url的案例

关于如何用php 获取当前脚本的url

$_SERVER存储