PHP $_SERVER['PHP_SELF']
$_SERVER['PHP_SELF']
表示当前 php
文件相对于网站根目录的位置地址,与 document root
相关。
假设我们有如下网址,$_SERVER['PHP_SELF']
得到的结果分别为:
http://www.sskj.work/php/ :/php/index.php
http://www.sskj.work/php/index.php :/php/index.php
http://www.sskj.work/php/index.php?test=foo :/php/index.php
http://www.sskj.work/php/index.php/test/foo :/php/index.php/test/foo
因此,可以使用 $_SERVER['PHP_SELF']
很方便的获取当前页面的地址:
$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
以上面的地址为例,得到的结果如下:
http://www.sskj.work/php/index.php
上面是简单获取 http 协议的当前页面 URL ,只是要注意该地址是不包含 URL 中请求的参数(?及后面的字串)的。如果希望得到包含请求参数的完整 URL 地址,请使用 $_SERVER['REQUEST_URI']
。
为了安全
使用 htmlentities($_SERVER['PHP_SELF'])
替代 $_SERVER['PHP_SELF']
,让URL
中可能的恶意代码转换为用于显示的 html
代码而无法执行。
可以的条件下,使用 $_SERVER['SCRIPT_NAME']
或 $_SERVER['REQUEST_URI']
替代 $_SERVER['PHP_SELF']
在公共代码里将$_SERVER['PHP_SELF']
进行重写:
$phpfile = basename(__FILE__);
$_SERVER['PHP_SELF'] = substr($_SERVER['PHP_SELF'], 0, strpos($_SERVER['PHP_SELF'], $phpfile)).$phpfile;
结束记录
网友评论