php 不建议使用false到数组的自动转换

hgb9j2n6  于 2022-12-17  发布在  PHP
关注(0)|答案(1)|浏览(199)

我在PHP 8+中专门用于检查页面内部用户的一大块指令中得到了这个警告:

if ($_POST['go'] ?? null) {
// $_SESSION_VALUES is an array $db, $nick are classes of mine
    $_SESSION_VALUES = $nick->get_cookie (COOKIE_NAME); // get the name of the cookie
    if ($db->check_user (USERS_TABLE, $_POST['nick'], $db->encode_password($_POST['password']))) {
        $_SESSION_VALUES['_USERNAME'] = $db->user_rec['nick'];  // get the nickname from the cookie
        $_SESSION_VALUES['_PASSWORD'] = $db->user_rec['password']; //get the password
        $_SESSION_VALUES['_USER'] = $db->user_type;
        if (! $nick->set_cookie (COOKIE_NAME, $_SESSION_VALUES)) die ('Cannot write the cookie');           // record the cookie
        header('Location: ./copertina'); }
        else $_SESSION_VALUES['_USER']  = -1;
    }

执行

else $_SESSION_VALUES['_USER']  = -1;

给出“不推荐将false自动转换为数组”
根据堆栈溢出的建议,我尝试了以下方法:

$\_SESSION_VALUES = \[\];

if ($\_POST\['go'\] ?? null) {

...

但很明显这不管用
你知道吗?
谢谢

7nbnzgx9

7nbnzgx91#

我假设$nick->get_cookie(COOKIE_NAME);返回false
尝试更改:

else $_SESSION_VALUES['_USER']  = -1;

致:

else $_SESSION_VALUES = ['_USER' => -1];

这可能会消除您报告的错误消息,但我不知道您的代码的其余部分(我看不到)是否会接受这一点。

相关问题