> i ve got 4 separate tables to store login data.
>>> tables are **admin_login staff_login >tutor_login student_login**.
>>>>>> my php registration form is storing data into this fields.
- 现在我需要一些建议如何制作登录脚本?
- 我已经准备好登录表格。
> i ve got 4 separate tables to store login data.
>>> tables are **admin_login staff_login >tutor_login student_login**.
>>>>>> my php registration form is storing data into this fields.
首先,为什么有 4 张桌子?为什么没有 1 带有登录类型字段?
多个表的一般规则与一个表相同。您要检查用户名/电子邮件地址,然后检查密码。
开始查询您的表以获取用户名电子邮件地址。计算结果。如果他们是结果,则检查密码(无论您是否使用任何加密)匹配并登录。如果没有结果,则向用户发送一条消息,说明没有人匹配该用户名/电子邮件,如果密码不匹配然后告诉他们。
我不会为你写它,但这里是它的要点:
$query = mysql_query("CHECK FOR EMAIL ADDRESSES OR USERNAMES"); // Just query multiple tables if you're going to do it this way (I'd still use the one though)
$count = mysql_num_rows($query);
if ($count > 0) { // Email address exists
// Check the passwords match up
if (PASSWORDS MATCH) {
// Do your login here
} else {
// Password wrong error
}
} else {
// No username error here
}
您可以使用UNION
's 解决问题,但最好将数据库重构为单个表,其中包含一个字段,表示它们是管理员/导师等。
您可以先使用连接查询,也可以为所有用户创建一个统一表,其中包含如下accessLevel
字段:用户表:
username | passwordHash | accessLevel
---------+--------------+------------
abc | mnbdjhgs | admin
pqr | kfgjkfbb | stud
然后您可以简单地检查从腰部表格中获得的用户详细信息,例如:
$result = $mysqli->query("SELECT passwordHash, accesslevel FROM users WHERE username = '{$username}' ");
if($result)
{ $data = $result->fetch_assoc();
if($data)
{ if($password === $data['passwordHash'])
{ //identify the user-type here..
$accesslevel = $data['accessLevel'];
//now u can do session initialization and other stuff..
}
}
}
else
{ //show wrong username or password messages
}