我使用的是教师注册表和学生注册表。每个字段有十个字段,名字、姓氏、用户名、密码等相似,而部门(教师有 7 个,学生有 3 个)和电子邮件 ID(教师有不同的域名扩展,学生有不同)不同。我使用两张 table ,一张给老师,一张给学生。
现在,我知道我可以使用一个登录表单,使用 JOIN 属性查询这两个表并让它们登录。但我想知道这种方法是否有效,因为正在使用两个表。
或者这种方法是否更有效:在注册表单中,我放置了一个单选按钮来选择教师或学生,并且根据选择的内容,其余字段会发生变化,即,如果我选择教师,则会显示 7 个部门,或者如果我选择教师,则会显示 7 个部门选择学生,只有 3 人出现。这样一来,我就只能使用一张 table 了,至少我是这样认为的。 或者另一种可能性是我使用两个表但两个登录表单,一个用于教师,一个用于学生,我知道这是最简单的方法,但作为一名计算机科学学生,我想选择所有方法中的有效方法。P.S:教师的角色将与网站中学生的角色完全不同。而且老师和学生会有很多事件,他们是完全不同的。维持一张 table 会是一个不错的选择吗?
最佳答案
我想说,教师和学生都是用户,但教师拥有更高的权限,就像管理员一样。
因此,我只会为用户
使用 1 个表,并有一个属性列来指示它们的类型。
他们登录后,您可以将类型变量返回到页面以确定要显示的字段。
而且您实际上甚至不需要单选按钮来指示类型。只需有一个用户名和密码字段。然后,一旦他们通过身份验证,检索类型属性并相应地加载您的表单。
您的 PHP 页面可能如下所示:
<?php
if(isset($_POST['username'])) {
$user = $_POST['username'];
$password = $_POST['password'];
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
$query = "SELECT * FROM tblUser WHERE userid=" . $user;
//Execute SQL
if($mysqli->query($query) === TRUE) {
if ($password == $row['password']) {
$userType = $row['type'];
$mysqli->close();
echo $userType;
else { echo "incorrect password"; }
} else { echo "SQL execution error"; }
} else {
echo "invalid username string";
}
?>
关于php - 存在多个表时最有效的登录方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13852335/