作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在使用:
$domain = $_SERVER['HTTP_HOST'];
$path = $_SERVER['SCRIPT_NAME'];
$themeurl = $domain . $path;
但这当然给出了完整的 URL。相反,我需要完整的 URL 减去当前文件和向上一个目录并减去尾部斜线。
因此无论浏览器 URL 域是什么,例如 localhost、https://、http://等,父目录的完整真实(绕过任何 mod 重写)URL 路径都没有尾部斜杠。
这是怎么做到的?安全地,所以没有 XSS,因为我猜(从阅读中)使用除了“SCRIPT_NAME”之外的任何东西都有这样的风险..虽然ofc不确定..只是读了很多书试图弄清楚这一点。
例子:如果给出:
https://stackoverflow.com/questions/somequestions/index.php
需要:
https://stackoverflow.com/questions
没有尾部斜杠。
也应该适用于 say:
http://localhost/GetSimple/admin/load.php
得到
http://localhost/GetSimple
这就是我想要做的。
谢谢。
$url = isset($_SERVER['HTTPS']) ? 'https://' : 'http://';
$url .= $_SERVER['SERVER_NAME'];
$url .= htmlspecialchars($_SERVER['REQUEST_URI']);
$themeurl = dirname(dirname($url)) . "/theme";
它完美地工作。
最佳答案
这很简单 - 使用函数 dirname
两次:)
echo dirname(dirname('https://stackoverflow.com/questions/somequestions/index.php'));
另请注意@Sid 的评论。当您需要当前脚本的完整 uri 以及协议(protocol)和服务器时,请使用如下内容:
$url = isset($_SERVER['HTTPS']) ? 'https://' : 'http://';
$url .= $_SERVER['SERVER_NAME'];
$url .= $_SERVER['REQUEST_URI'];
echo dirname(dirname($url));
关于php - 如何安全地获取当前 PHP 页面父目录的完整 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15110355/
我是一名优秀的程序员,十分优秀!