根据用户级别从数据库获取和存储PHP会话变量
我有一个登录页面,根据用户级别将用户重定向到网站的不同部分。根据用户级别从数据库获取和存储PHP会话变量,php,mysql,Php,Mysql,我有一个登录页面,根据用户级别将用户重定向到网站的不同部分。用户表没有他们的名字和姓氏。它包含他们的idnumber和password以及其他一些列 根据用户级别,用户的名字和姓氏存储在不同的表中。例如,在教师表中,它有名字等,在学生表中也有 我想获取登录用户的名称并将其存储在会话变量中,这样我就可以输出诸如“Hi,John”之类的内容 我试过了,但似乎不起作用。有没有更有效的方法来实现这一点,或者我走的是正确的道路 代码摘录 if (isset($_POST['login'])) {
用户表
没有他们的名字和姓氏。它包含他们的idnumber和password以及其他一些列
根据用户级别,用户的名字和姓氏存储在不同的表中。例如,在教师
表中,它有名字等,在学生表中也有
我想获取登录用户的名称并将其存储在会话变量中,这样我就可以输出诸如“Hi,John”之类的内容
我试过了,但似乎不起作用。有没有更有效的方法来实现这一点,或者我走的是正确的道路
代码摘录
if (isset($_POST['login'])) {
$idnumber = mysqli_real_escape_string($con, $_POST['user-name']);
$password = mysqli_real_escape_string($con, $_POST['user-password']);
$result = mysqli_query($con, "SELECT * FROM users WHERE idnumber = '" . $idnumber . "' and password = '" . md5($password) . "'");
if ($row = mysqli_fetch_array($result)) {
$_SESSION['usr_id'] = $row['id'];
$_SESSION['email'] = $row['email'];
$_SESSION['userlevel'] = $row['userlevel'];
$_SESSION['idnumber'] = $row['idnumber'];
echo $_SESSION['usr_id'];
if ($_SESSION['userlevel']=="1"){
$loggedinusername = mysqli_query($con, "SELECT a.idnumber, b.firstnames, b.surname FROM users a LEFT JOIN educationdirectors b ON a.idnumber=b.idnumber WHERE idnumber = '" . $_SESSION['idnumber']. "'");
if ($row = mysqli_fetch_array($loggedinusername)) {
$_SESSION['idnumber'] = $row['firstnames'];
header("Location: v1/ued/");
}
}
else
if ($_SESSION['userlevel']=="2"){
header("Location: v1/ced/");
}
} else {
$errormsg = "Incorrect Email or Password!!!";
}
}
这种数据库设计有什么特别的原因吗?用户都有自己的名字(除非你允许机器人),那么为什么不将公共属性存储在这个表中呢。这会让其他表(教师)存储有关其角色的详细信息,而不是他们作为一个人的详细信息。我最初有一个不同的数据库设计,但最终采用了这种设计,因为这种设计的编码更容易,因为我不必为简单的查询不断进行连接。一旦获取用户记录进行验证,您应该在会话中存储所需的值,而不是不断地从数据库中获取它们。