未定义的偏移量 1 与 $qString

问题描述

尝试清理网站,但此错误一直显示

注意:未定义偏移量:1 in /var/www/includes/client.controller.PHP 第 34 行注意:未定义偏移量:1 英寸 /var/www/includes/client.controller.PHP 第 39 行。

我对此很陌生,希望有人能发现我在下面的代码中遗漏的内容

        $qString = explode("?",$_SERVER['REQUEST_URI']);

        $qString = $qString[1];
        foreach (explode('&',$qString) as $q)
        {
            $parts = explode('=',$q);
            $key = $parts[0];
            $val = urlencode($parts[1]);
            if (!isset($_GET[$key]))
                $_GET[$key] = $val;
        }

解决方法

您需要考虑到不是 URL 将具有查询字符串的事实。所以你需要在访问它之前检查是否 $qString[1] 以避免警告。

    $qString = explode("?",$_SERVER['REQUEST_URI']);
    if(isset($qString[1])) {
        $qString = $qString[1];
        foreach (explode('&',$qString) as $q)
        {
            $parts = explode('=',$q);
            $key = $parts[0];
            $val = urlencode($parts[1]);
            if (!isset($_GET[$key]))
                $_GET[$key] = $val;
        }
    } 

另外,我不确定这里的逻辑,似乎这段代码是从 $_GET 重新创建 $_SERVER['REQUEST_URI'] 系统变量?如果是关于对值进行 urlencoding,你可以循环 $_GET 来做同样的事情。