PHP_SELF,SCRIPT_NAME,REQUEST_URI区别

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

$_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

(0)

相关推荐

  • php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别

    "PHP_SELF" 当前正在执行脚本的文件名,与 document root 相关.举例来说,在 URL 地址为 http://www.jb51.net/test.php/foo.bar 的脚本中使用 $_SERVER['PHP_SELF'] 将会得到 /test.php/foo.bar 这个结果.__FILE__ 常量包含当前(例如包含)文件的绝对路径和文件名. "SCRIPT_NAME" 包含当前脚本的路径.这在页面需要指向自己时非常有用.__FILE__ 包

  • 不要轻信 PHP_SELF的安全问题

    复制代码 代码如下: <html> <body> <?php if (isset($_REQUEST['submitted']) && $_REQUEST['submitted'] == '1') { echo "Form submitted!"; } ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>"> <input type=

  • Apache Request-URI Too Large错误解决方法

    复制代码 代码如下: Request-URI Too Large The requested URL's length exceeds the capacity limit for this server. 关于上面说的这个 Request-URI Too Large 问题,原因如下: apache的这错误是URL的长度超出了限制.URL的长度限制受浏览器和服务器的影响,常见的IE是2083,Firefox是65,536(实测8182),opera 是4050, Netscape 是8192等.

  • 深入php self与$this的详解

    先谈parent与self: 复制代码 代码如下: <?php/* * Created by YinYiNiao */ class A{  function __construct(){   echo "基类A的构造方法<br />";  } } class B extends A{  function __construct(){   parent::__construct();   echo "子类B的构造方法<br />";   

  • php self,$this,const,static,-&gt;的使用

    今天来总结下. .在类的内部方法访问已经声明为const及static的属性时,使用self::$name的形式.注意的是const属性的申明格式,const PI=3.14,而不是const $PI=3.14 复制代码 代码如下: class clss_a { private static $name="static class_a"; const PI=3.14; public $value; public static function getName() { return se

  • php $_SERVER["REQUEST_URI"]获取值的通用解决方法

    复制代码 代码如下: <?php // 说明:获取 _SERVER['REQUEST_URI'] 值的通用解决方案 function request_uri() { if (isset($_SERVER['REQUEST_URI'])) { $uri = $_SERVER['REQUEST_URI']; } else { if (isset($_SERVER['argv'])) { $uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['argv'][0]; }

  • PHP_SELF,SCRIPT_NAME,REQUEST_URI区别

    $_SERVER[PHP_SELF], $_SERVER[SCRIPT_NAME], $_SERVER['REQUEST_URI'] 在用法上是非常相似的,他们返回的都是与当前正在使用的页面地址有关的信息,这里列出一些相关的例子,帮助确定哪些是在你的脚本最适合的. $_SERVER['PHP_SELF'] 复制代码 代码如下: http://www.yoursite.com/example/ - – - /example/index.php http://www.yoursite.com/exa

  • 详解Nginx几种常见实现301重定向方法上的区别

    Nginx下常见的301跳转有以下三种,虽然都能达到同样的目的.但是三种写法上还是有区别的,主要的区别是在正则匹配的性能上. 第一种:使用rewrite指令,通过正则匹配所有的URI后再去掉开头第一个/(反斜线). rewrite ^/(.*)$ https://www.hi-linux.com/$1; 第二种:同样使用rewrite指令,不同的是通过$request_uri变量匹配所有的URI. rewrite ^ https://www.hi-linux.com$request_uri? p

  • nginx中的两个模块的proxy_pass的区别解析

    1.ngx_stream_proxy_module模块的proxy_pass指令 只能在server段使用使用, 只需要提供域名或ip地址和端口. 可以理解为端口转发,可以是tcp端口,也可以是udp端口. server { listen 127.0.0.1:12345; proxy_pass 127.0.0.1:8080; } server { listen 12345; proxy_connect_timeout 1s; proxy_timeout 1m; proxy_pass exampl

  • jQuery和AngularJS的区别浅析

    最近一直在研究angularjs,最大的感受就是它和之前的jQuery以及基于jQuery的各种库设计理念完全不同,如果不能认识到这点而对于之前做jQuery开发的程序员,去直接学习angularjs的话,很可能学了很久还不知道这个东西能用来干什么以及怎么使用,怎么和UI进行结合等问题,在stackoverflow上找到一篇关于这方面的文章,阅读之后颇有收获,在此基础上将它译成中文,以求抛砖引玉大家一同学习. 原问题:假如我熟悉利用jQuery去开发客户端应用,那么我怎么上手angularjs,

  • Angular中ng-bind和ng-model的区别实例详解

    ng-bind和ng-model的区别 AngularJS的数据绑定有ng-bind和ng-model,一般用于如下: <input ng-model="object.xxx"> <span ng-bind="object.xxx"></span> ng-bind是单向绑定,由作用于$scope到view层,且在HTML控件(HTML控件有:input.select.button和textarea)中不可显示. ng-model是

  • 正则表达式中test、exec、match的区别介绍及括号的用法

    test.exec.match的简单区别 1.test test 返回 Boolean,查找对应的字符串中是否存在模式. var str = "1a1b1c"; var reg = new RegExp("1.", ""); alert(reg.test(str)); // true 2.exec exec 查找并返回当前的匹配结果,并以数组的形式返回. var str = "1a1b1c"; var reg = new Re

  • document.write与writeln的输出内容区别说明

    document.write() //将内容写入文档,当前编辑位置为写入的内容的后一个字符 document.writeln() //将内容写入文档,并添加一个换行符,当前编辑位置为写入的内容的后一行 document.write()和document.writeln都是JavaScript向客户端写入的方法,writeln是以行方式输出的,但并不是指页面实际效果中的换行,两种方法在查看源代码时才看得出区别,除非是输出到pre或xmp元素内 测试一下: with(window.open()){

  • C++ 中引用与指针的区别实例详解

    C++ 中引用与指针的区别实例详解 引用是从C++才引入的,在C中不存在.为了搞清楚引用的概念,得先搞明白变量的定义及引用与变量的区别,变量的要素一共有两个:名称与空间. 引用不是变量,它仅仅是变量的别名,没有自己独立的空间,它只符合变量的"名称"这个要素,而"空间"这个要素并不满足.换句话说,引用需要与它所引用的变量共享同一个内存空间,对引用所做的改变实际上是对所引用的变量做出修改.并且引用在定义的时候就必须被初始化.     参数传递的类型及相关要点: 1 按值

随机推荐