有什么简单的方法可以识别最初处理请求的文件,忽略get参数并处理(至少是基本的)映射,比如/
到/index.php
的映射
理想情况下,我寻找的是类似于$_SERVER['REQUEST_URI']
的东西,除了它返回相同的值而不是get参数,并且该值是请求的文件,而不是URI,也不是当前执行的文件($_SERVER['PHP_SELF']
)。换句话说,就是一个$_SERVER['REQUESTED_FILE']
之类的东西。我还没见过这样的东西。它是否存在,或者我是否需要手动编写一些内容?
更新这里有一些示例URL与我想要的结果配对:
example.com/mypage.php : /mypage.php
example.com/ : /index.php
example.com/foo/?hello=world : /foo/index.php
即使在包含的文件中,这些返回值也是真的。在回答之前请看下面的答案,我想我已经找到了我想要的东西。
发布于 2009-06-12 00:54:07
我决定自己测试一下。$_SERVER['SCRIPT_NAME']
变量提供所请求文件的路径,即使它是一个索引文件,并且没有get参数或任何其他内容。PHP文档指出,它包含文件的路径,但它似乎是相对于文档根目录的,就像PHP_SELF
一样,但没有安全漏洞。
下面是我用来测试的代码:https://gist.github.com/dimo414/5484870
请求example.com/?foo=bar
时的输出
__FILE__: /var/www/index.php
PHP_SELF: /index.php
SCRIPT_NAME: /index.php
REQUEST_URI: /?foo=bar
parse_url(REQUEST_URI): /
__FILE__: /var/www/pathtest.php
PHP_SELF: /index.php
SCRIPT_NAME: /index.php
REQUEST_URI: /?foo=bar
parse_url(REQUEST_URI): /
以及请求example.com/index.php/<strong>XSS</strong>
时的输出
__FILE__: /var/www/index.php
PHP_SELF: /index.php/XSS # note the XSS exploit (this is bold in browser)
SCRIPT_NAME: /index.php # No exploit here
REQUEST_URI: /index.php/%3Cstrong%3EXSS%3C/strong%3E
parse_url(REQUEST_URI): /index.php/%3Cstrong%3EXSS%3C/strong%3E
__FILE__: /var/www/pathtest.php
PHP_SELF: /index.php/XSS
SCRIPT_NAME: /index.php
REQUEST_URI: /index.php/%3Cstrong%3EXSS%3C/strong%3E
parse_url(REQUEST_URI): /index.php/%3Cstrong%3EXSS%3C/strong%3E
如你所见,$_SERVER['SCRIPT_NAME']
总是返回最初处理请求的文件,即URL中的文件,没有任何XSS风险。
发布于 2009-06-11 08:53:43
$_SERVER['PHP_SELF']
应该返回实际的脚本。但也有various methods。
我有一个更好的链接,指向所有与文件相关的各种环境变量的矩阵,但我找不到它。如果出现的话我会编辑的。
编辑:我找到了a nice SO thread that details the differences between them。
发布于 2016-11-18 14:02:17
使用以下代码从请求的URL获取文件名。
basename($_SERVER['URL']);
basename($_SERVER['REQUEST_URI']);
basename($_SERVER['SCRIPT_NAME']);
basename($_SERVER['SCRIPT_FILENAME']);
basename($_SERVER['REQUEST_URI']);
basename($_SERVER['PATH_TRANSLATED']);
basename($_SERVER['PHP_SELF']);
在嵌套的if条件中使用任何一个,所有这些,这样您就不会错过任何文件名了。
https://stackoverflow.com/questions/980018
复制相似问题