文档章节

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

X
 XueYongWei
发布于 2015/05/02 11:51
字数 404
阅读 59
收藏 2
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__ 包含当前文件的绝对路径和文件名(例如包含文件)。 

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

找到更好的原因是: 
今天在Dreamhost上安裝一套PHP程序時發現連接的地址都會多出一個cgi-system來,但是程序的config並沒有問題,查了查資料才發現是SCRIPT_NAME和PHP_SELF不同造成的問題。 
通常在本機測試 $_SERVER['SCRIPT_NAME'] 跟 $_SERVER['PHP_SELF'] 大概看不出有什麼不同,因為大部分的PHP不是以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

© 著作权归作者所有

X
粉丝 1
博文 25
码字总数 26713
作品 0
海淀
私信 提问
关于php的魔术常量

$SERVER存储当前服务器信息,其中有几个值如$SERVER["QUERY_STRING"],$_SERVER["REQUEST_URI"],$_SERVER["SCRIPT_NAME"]和$_SERVER["PHP_SELF"]常常容易混淆,以下通过实例详解$_SERVER函数......

坑爹的谢尼玛
2016/02/06
86
1
$_SERVER函数中QUERY_STRING和REQUEST_URI等四个变量区别

$SERVER存储当前服务器信息,其中有几个值如$SERVER["QUERY_STRING"],$_SERVER["REQUEST_URI"],$_SERVER["SCRIPT_NAME"]和$_SERVER["PHP_SELF"]常常容易混淆,以下通过实例详解$_SERVER函数......

落枫眠
2011/12/14
199
0
PHP_$_SERVER中QUERY_STRING,REQUEST_URI的用法

$_SERVER存储当前服务器信息,其中有几个值如 $SERVER["QUERYSTRING"], $SERVER["REQUESTURI"], $SERVER["SCRIPTNAME"], $SERVER["PHPSELF"] 常常容易混淆,以下通过实例详解$SERVER函数中......

喵王不瞌睡
2014/03/30
6.5K
0
PHP $_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI'] 之间的区别

PHP $SERVER['PHPSELF']、$SERVER['SCRIPTNAME'] 与 $SERVER['REQUESTURI'] $SERVER['PHPSELF']、$SERVER['SCRIPTNAME'] 与 $SERVER['REQUESTURI'] 三者非常相似,返回的都是与当前 URL 或 ......

ywppengpeng
2016/11/17
22
0
php获取网站域名 及 SERVER 相关变量

//获取当前域名echo $SERVER['HTTPHOST'];echo $SERVER['SERVERNAME'];//获取当前ipecho $SERVER['SERVERADDR'];//获取当前服务器标识的字串,在响应请求时的头部中给出echo $SERVER['SERVE......

欣儿
2014/05/07
281
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.4K
15
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
41
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部