php - 存在多个表时最有效的登录方式

标签 php mysql authentication registration

我使用的是教师注册表和学生注册表。每个字段有十个字段,名字、姓氏、用户名、密码等相似,而部门(教师有 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/

相关文章:

html - 如何在我的 PHP 文件中引用我的 MySQL 数据库之一?

php - 替换unicode字符

session - Yii2 Advanced 应用程序,带有子域的前端和后端的不同 session

php - 如何合并 SQL 查询

php - 更新生产服务器上的数据库结构的最佳方法?

mysql - 特殊的 SELECT 语句

mysql - 数据库同步服务器到本地

c# - 尽管登录成功,ASP.NET 表单例份验证始终为 false

ruby-on-rails - token 和摘要有什么区别?

php - 以度数符号存储,不用php SQL LIKE语句也能搜索