2015-10-14 29 views
-2

我正要通过PhileCMS的源代码,并在整个下面的脚本来了:了解在服务器变量的检查是什么

看到这个代码在这里:

if (isset($this->server['PHP_SELF'])) { 
    $url = preg_replace('/index\.php(.*)?$/', '', $this->server['PHP_SELF']); 
} 

现在$this->server实际上是$_SERVER;

我想知道,如果真的检查条件,上面是什么?

整个脚本可以看出HERE

+1

它检查PHP_SELF是否存在。如果是这样,就打乱它。 –

+0

'$ _SERVER ['PHP_SELF']'是当前正在运行的脚本的路径。 http://php.net/manual/en/reserved.variables.server.php –

+0

@RocketHazmat看到了文档,我知道,只是想知道如果条件是什么! –

回答

2

按照PHP docs$_SERVER['PHP_SELF']包含:

当前正在执行的脚本,相对于文档根的文件名。

现在我不知道为什么存在的代码或者为什么它检查isset(我敢肯定绝不会有在那里$_SERVER['PHP_SELF']未设置的情况下),但它是什么做的是在URL和删除index.php及其后的所有内容。

例如,如果您导航到:http://example.com/foo/bar/index.php/info?test=123,那么$_SERVER['PHP_SELF']将是/foo/bar/index.php/info(查询字符串不包括在内)。因此,所示的preg_replace声明将删除/index.php/info,从而留下/foo/bar

UPDATE:您是否注意到名称该代码是该函数的一部分? public function getBaseUrl()。它获取index.php的路径(或“基本URL”)。它正在计算出安装位置的路径。