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");
}
}
?>
当我给$_SESSION['username']
$info['username']
的值时,我有一个错误,称为:
未定义的索引:用户名
未定义索引:密码
你不需要分配值,你只需要使用一个=
所以使用这个:
$_SESSION['username'] = $info['username'];
$_SESSION['password'] = $info['password'];
此外,我会在每个标头后放置一个exit();
,以便您确保脚本停止执行!
header("Location: test.php");
exit();
使用 =
在会话中分配值,而不是==
(比较)。
还有我认为!empty('role')
会!empty($info['role'])
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'];
}