我可以使用普通用户和管理员用户登录网站, 我想检查该用户是普通用户还是管理员用户,然后将其发送到其他页面,但是当我尝试以下操作时我无法使用任何凭据登录,此方法不起作用。
我修改数据库表以为userType添加一列,如果是管理员则添加2列,如果是普通用户则添加1列
这是尝试过的:
if($_SESSION['usertype'] == 2)
{
//do stuff here
}
if ($_SESSION['usertype'] == 1)
{
//do stuff here
}
这是我的php文件:
<?php
if (isset($_POST['login-submit'])) {
require 'dbh.php';
$mail = $_POST['email'];
$password = $_POST['pwd'];
$sql = "SELECT * FROM user WHERE utepEmail=?";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
header("Location: index.php?error=sqlerror");
exit();
} else {
mysqli_stmt_bind_param($stmt, "s", $mail);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
if ($row = mysqli_fetch_assoc($result)) {
$pwdCheck = password_verify($password, $row['Password']);
if ($pwdCheck == false) {
header("Location: index.php?error=wrongpwd");
exit();
} elseif ($pwdCheck == true) {
session_start();
$_SESSION['username'] = $row['Name'];
header("Location: index.php?success");
exit();
} else {
eader("Location: index.php?error=wrongpwd");
exit();
}
} else {
header("Location: login.php?error=noouser");
exit();
}
}
} else {
header("Location: index.php");
exit();
}
答案 0 :(得分:0)
在主PHP文件中,您可能需要为用户类型设置会话变量,以便以后使用该类型时,已经设置了该值。 正确的地方是在选中密码后。
...
elseif ($pwdCheck == true) {
session_start();
$_SESSION['username'] = $row['Name'];
$_SESSION['usertype'] = $row['usertype']; // <- add user type to the session
header("Location: index.php?success");
exit();
}
...
加载“成功”页面后,它将选择用户类型,然后您的结构便可以使用。