Php会话错误未定义索引

Php会话错误未定义索引,php,session,indexing,undefined,Php,Session,Indexing,Undefined,当我给$\u SESSION['username']调用的$info['username']值时出错: 未定义索引:用户名 未定义索引:密码 您不需要分配值,只需使用一个=,因此请使用以下方法: session_start(); if (isset($_POST['username'] , $_POST['password'])) { $extractabout = $db->prepare("SELECT * FROM user WHERE username = :usern

当我给
$\u SESSION['username']
调用的
$info['username']
值时出错:

未定义索引:用户名
未定义索引:密码


您不需要分配值,只需使用一个
=
,因此请使用以下方法:

session_start();

if (isset($_POST['username'] , $_POST['password'])) {

    $extractabout = $db->prepare("SELECT * FROM user WHERE username = :username && password = :password");

    $extractabout->execute([
        'username' => $_POST['username'],
        'password' => $_POST['password']
    ]);

    $infos = $extractabout->rowCount() ? $extractabout : [] ;

    foreach ($infos as $info) {
        if(!empty($info['username']) && !empty($info['password']) && !empty($info['id']) && !empty('role')) {
            $_SESSION['username'] == $info['username'];
            $_SESSION['password'] == $info['password'];         
        }

    }

    if(isset($_SESSION['username'], $_SESSION['password'], $_SESSION['user_id'], $_SESSION['role'])) {
        header("Location: test.php");
    }   

}

?>
我还会放一个
exit()在每个头之后,以便确保脚本停止执行

$_SESSION['username'] = $info['username'];
$_SESSION['password'] = $info['password']; 

使用
=
在会话中分配值,而不是
=
(比较)

还有什么是
!空('role')
我想应该是
!空($info['role'])


您的代码中有语法错误,更正如下:

if(!empty($info['username']) && !empty($info['password']) && !empty($info['id']) && !empty($info['role'])) {
        $_SESSION['username'] = $info['username'];
        $_SESSION['password'] = $info['password'];                     
}

发现多个错误<代码>=
=
不同。记住在
标题(“位置:$url”)之后退出()调用为什么分开
isset()
调用?这不是必需的。此isset($会话['username']、$会话['password']、$会话['user\u id']、$会话['role'])是错误的,我只是更正了语法。@NeedhiAgrawal您可以在isset()follow中使用逗号分隔的多重检查
if(!empty($info['username']) && !empty($info['password']) && !empty($info['id']) && !empty($info['role'])) {
        $_SESSION['username'] = $info['username'];
        $_SESSION['password'] = $info['password'];                     
}
if(!empty($info['username']) && !empty($info['password']) && !empty($info['id']) && !empty($info['role'])) {
    $_SESSION['username'] = $info['username'];
    $_SESSION['password'] = $info['password']; 
}