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


Posted in PHP onSeptember 05, 2009

“PHP_SELF”
当前正在执行脚本的文件名,与 document root 相关。举例来说,在 URL 地址为 https://3water.com/test.php/foo.bar 的脚本中使用 $_SERVER['PHP_SELF'] 将会得到 /test.php/foo.bar 这个结果。__FILE__ 常量包含当前(例如包含)文件的绝对路径和文件名。

“SCRIPT_NAME”
包含当前脚本的路径。这在页面需要指向自己时非常有用。__FILE__ 包含当前文件的绝对路径和文件名(例如包含文件)。

主要的原因如像:$_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];

找到更好的原因是:
今天在Dreamhost上安?一套PHP程序?r???接的地址都??喑鲆??cgi-system?恚??浅绦虻?onfig?K?]有???,查了查?料才??是SCRIPT_NAME和PHP_SELF不同造成的???。
通常在本?C?y? $_SERVER['SCRIPT_NAME'] 跟 $_SERVER['PHP_SELF'] 大概看不出有什?不同,因?榇蟛糠值?HP不是以CGI模式?行的。
但 DreamHost 上的 PHP 是以 CGI 方式?行,二者就有明?不同的差?。
echo $_SERVER['SCRIPT_NAME']; // (/cgi-system/php.cgi)
echo $_SERVER['PHP_SELF']; // (/admin/test.php)

从http://lists.nyphp.org/pipermail/talk/2005-July/015339.html 发现了一个说明。老外说的。

SCRIPT_NAME solves all the problems mentioned
in this thread - it's just the script name, without any extra garbage
that might be tacked on by the user. PHP_SELF explicitly includes that
extra garbage, so solutions in this thread that involve stripping the
garbage off of PHP_SELF to make it safe are really, really missing the
point - just use SCRIPT_NAME instead. Please don't use FORM ACTION=”";
according to the spec, what the browser does with that is undefined, so
even if it works in current browsers, it might not work in future ones

PHP 相关文章推荐
PHP安全配置
Oct 09 PHP
PHP静态类
Nov 25 PHP
PHP中=赋值操作符对不同数据类型的不同行为
Jan 02 PHP
关于crontab的使用详解
Jun 24 PHP
解析csv数据导入mysql的方法
Jul 01 PHP
php代码审计比较有意思的例子
May 07 PHP
2014最热门的24个php类库汇总
Dec 18 PHP
php图片上传类 附调用方法
May 15 PHP
ThinkPHP和UCenter接口冲突的解决方法
Jul 25 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
Feb 17 PHP
PHP长连接实现与使用方法详解
Feb 11 PHP
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
Apr 11 PHP
php getsiteurl()函数
Sep 05 #PHP
PHP 内存缓存加速功能memcached安装与用法
Sep 03 #PHP
用PHP读取flv文件的播放时间长度
Sep 03 #PHP
用php将任何格式视频转为flv的代码
Sep 03 #PHP
ajax php 实现写入数据库
Sep 02 #PHP
php 正则表达式小结
Aug 31 #PHP
自动把纯文本转换成Web页面的php代码
Aug 27 #PHP
You might like
JS 网站性能优化笔记
2011/05/24 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
2014/07/25 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
jQuery前端分页示例分享
2015/02/10 Javascript
jQuery使用slideUp方法实现控制元素缓慢收起
2015/03/27 Javascript
javascript实现俄罗斯方块游戏的思路和方法
2015/04/27 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
两种js监听滚轮事件的实现方法
2016/05/13 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
jQuery实现倒计时(倒计时年月日可自己输入)
2016/12/02 Javascript
Vue.js使用v-show和v-if的注意事项
2016/12/13 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
详解webpack 多页面/入口支持&公共组件单独打包
2017/06/29 Javascript
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
2018/04/17 Javascript
vue.js路由mode配置之去掉url上默认的#方法
2019/11/01 Javascript
JS实现放烟花效果
2020/03/10 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
JavaScript实现切换多张图片
2021/01/27 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
2021/02/08 Javascript
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
Python tkinter事件高级用法实例
2018/01/31 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
关于python 的legend图例,参数使用说明
2020/04/17 Python
在python3.64中安装pyinstaller库的方法步骤
2020/06/02 Python
python 通过exifread读取照片信息
2020/12/24 Python
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
升旗仪式演讲稿
2014/05/08 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
房屋租赁协议书(标准版)
2014/10/02 职场文书
董事长秘书岗位职责
2015/02/13 职场文书
党员个人总结自评
2015/02/14 职场文书
保密法制宣传月活动总结
2015/05/07 职场文书