如何从多个表创建登录脚本?

时间:2012-04-04 11:20:10

标签: php

> 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. 
  1. 现在我需要一些建议如何制作登录脚本?
  2. 我已准备好登录表单。

3 个答案:

答案 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
}