【发布时间】:2021-12-27 19:34:13
【问题描述】:
我正在尝试获取当前页面的 URL,它可能看起来像这样:
http://www.example.com/login.php/?redirect=myprofile.php
...然后在“重定向”之后获取所有内容。到目前为止,这是我的代码:
$uri = $_SERVER['REQUEST_URI'];
$protocol = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
//the complete URL is
$url = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
//parse URL and return an array containing the URL components
$url_components = parse_url($url);
//check to see if there is anything after the "?" by looking at "query" in the parsed URL
if (array_key_exists(parse_str($url_components['query'], $params), $url_components))
{
echo "query exists in parse_str";
}
else { echo "query doesn't exist in parse_str"; }
但是,如果数组中不存在索引query,我会不断收到错误消息:
注意:未定义索引:查询
我试过isset:
if (isset(parse_str($url_components['query'], $params)))
加载页面时出现 HTTP ERROR 500 错误。
empty 给了我与第一个相同的错误。
if (!empty(parse_str($url_components['query'], $params)))
我是 PHP 新手,因此非常感谢任何帮助。
【问题讨论】:
-
您能否展示您为
isset尝试的内容和/或isempty的内容?我想if(!empty($url_components['query'])) { -
if (isset(parse_str($url_components['query'], $params))) 实际上给了我来自服务器的 500 错误,甚至不会加载页面。我编辑了上面的帖子以进行详细说明。
-
如果
$url_components['query']没有设置,你不能在它上面调用parse_str。试试if (!empty(url_components['query'])) { parse_str($url_components['query'], $params); } -
就是这样,谢谢@drew010