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']
给予{<1}}时,我出错了。
未定义的索引:用户名
未确定索引:密码
答案 0 :(得分:3)
您没有分配值,您只需使用一个=
,请使用此功能:
$_SESSION['username'] = $info['username'];
$_SESSION['password'] = $info['password'];
此外,我会在每个标题后添加exit();
,以确保脚本停止执行!
header("Location: test.php");
exit();
答案 1 :(得分:1)
使用=
在会话中分配值而不是==
(比较)。
!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'];
}
答案 2 :(得分:-1)
您的代码中存在语法错误,更正的是:
if(!empty($info['username']) && !empty($info['password']) && !empty($info['id']) && !empty($info['role'])) {
$_SESSION['username'] = $info['username'];
$_SESSION['password'] = $info['password'];
}