【问题标题】:Error when using "parse_str" ... Undefined index: query使用“parse_str”时出错...未定义索引:查询
【发布时间】: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

标签: php arrays


【解决方案1】:

您不想检查函数调用返回。您想检查query 索引是否存在。您可以通过以下方式实现:

$url = 'http://www.example.com/login.php/?redirect=myprofile.php';
$url_components = parse_url($url);
if (!empty($url_components['query'])){
    parse_str($url_components['query'], $params);
    print_r($params);
} else { 
    echo "query doesn't exist in parse_str";
}

当您拥有query 索引时,然后可以使用parse_str

https://3v4l.org/Vt3aa

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-20
    • 2019-05-02
    • 1970-01-01
    • 2012-12-08
    • 2015-10-16
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多