> 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.
答案 0 :(得分:2)
对于初学者来说,为什么有4张桌子?为什么不使用登录类型字段?
多个表的一般规则与一个规则相同。您想检查用户名/电子邮件地址,然后检查密码。
开始查询表格中的用户名电子邮件地址。计算结果。如果他们是一个结果,那么检查密码(无论你使用的任何加密)匹配并登录。如果没有结果向用户抛出一条消息,说没有人匹配该用户名/电子邮件,如果密码不匹配然后告诉他们。
我不打算为你写,但这是它的要点:
$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
}
答案 1 :(得分:0)
你可以使用UNION
来解决问题,但最好将数据库重新分解为一个表,其中一个字段表示它们是否为Admin / Tutor等。
答案 2 :(得分:0)
您可以先使用加入查询,也可以为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
}