注意:undefined offset:1 in webservice/dispatcher.php line 36 in prestashop webservice
Notice: undefined offset:1 in webservice/dispatcher.php line 36 in prestashop webservice
我正在使用 prestashop webservice api 在 flutter 上构建应用程序。但是,当我尝试从 api url 获取数据时,我收到了 PHP 作为 "Notice: Undefined offset: 1 in /webservice/dispatcher.php on line 36" 通知和对象列表的响应。这使我无法将对象解码为 json.
我转到那个文件,错误在这个块内:(第 35、36、37 行)
if (isset($_SERVER['HTTP_AUTHORIZATION']) && preg_match('/Basic\s+(.*)$/i', $_SERVER['HTTP_AUTHORIZATION'], $matches)) {
list($name, $password) = explode(':', base64_decode($matches[1]));
$_SERVER['PHP_AUTH_USER'] = strip_tags($name);
}
当我尝试在 postman 或浏览器中获取结果时,根本没有显示通知。
任何人都可以帮助我如何摆脱这个通知或解码对象的任何解决方案?提前致谢
PHP 的 list 语法采用赋值运算符 =
的右侧,对其进行解构,然后将 children 赋给其中的变量。
像这样的列表语句:
list($name, $password) = $some_array;
期望 $some_array
是一个数值数组,其中至少包含 2 children。如果只有 1 个,PHP 会抱怨您缺少第 2 个项目(偏移量 1)。在您的情况下,explode 调用需要在您的 base64_decode 结果中有一个 :
冒号,但情况可能并非如此。
为防止这种情况发生,您可以对其进行修改,使其不直接解构 explode 调用的结果。像这样:
if (isset($_SERVER['HTTP_AUTHORIZATION']) && preg_match('/Basic\s+(.*)$/i', $_SERVER['HTTP_AUTHORIZATION'], $matches)) {
$name_and_password = explode(':', base64_decode($matches[1]));
$name = $name_and_password[0] ?? ''; // if not set, default to be empty string ''
$password = $name_and_password[1] ?? ''; // if not set, default to be empty string ''
$_SERVER['PHP_AUTH_USER'] = strip_tags($name);
}
我正在使用 prestashop webservice api 在 flutter 上构建应用程序。但是,当我尝试从 api url 获取数据时,我收到了 PHP 作为 "Notice: Undefined offset: 1 in /webservice/dispatcher.php on line 36" 通知和对象列表的响应。这使我无法将对象解码为 json.
我转到那个文件,错误在这个块内:(第 35、36、37 行)
if (isset($_SERVER['HTTP_AUTHORIZATION']) && preg_match('/Basic\s+(.*)$/i', $_SERVER['HTTP_AUTHORIZATION'], $matches)) {
list($name, $password) = explode(':', base64_decode($matches[1]));
$_SERVER['PHP_AUTH_USER'] = strip_tags($name);
}
当我尝试在 postman 或浏览器中获取结果时,根本没有显示通知。
任何人都可以帮助我如何摆脱这个通知或解码对象的任何解决方案?提前致谢
PHP 的 list 语法采用赋值运算符 =
的右侧,对其进行解构,然后将 children 赋给其中的变量。
像这样的列表语句:
list($name, $password) = $some_array;
期望 $some_array
是一个数值数组,其中至少包含 2 children。如果只有 1 个,PHP 会抱怨您缺少第 2 个项目(偏移量 1)。在您的情况下,explode 调用需要在您的 base64_decode 结果中有一个 :
冒号,但情况可能并非如此。
为防止这种情况发生,您可以对其进行修改,使其不直接解构 explode 调用的结果。像这样:
if (isset($_SERVER['HTTP_AUTHORIZATION']) && preg_match('/Basic\s+(.*)$/i', $_SERVER['HTTP_AUTHORIZATION'], $matches)) {
$name_and_password = explode(':', base64_decode($matches[1]));
$name = $name_and_password[0] ?? ''; // if not set, default to be empty string ''
$password = $name_and_password[1] ?? ''; // if not set, default to be empty string ''
$_SERVER['PHP_AUTH_USER'] = strip_tags($name);
}