-6
> 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. ログインフォームの準備ができました。
4

3 に答える 3

2

まず、なぜ 4 つのテーブルがあるのですか? ログインタイプフィールドで1を持たないのはなぜですか??

一般的な規則は、複数のテーブルでも 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
}
于 2012-04-04T11:28:20.463 に答える
0

最初に結合クエリを使用するか、次のaccessLevelようなフィールドを持つすべてのユーザーに対して 1 つの統合テーブルを作成することができます: users-table:

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
}
于 2012-04-04T11:44:15.267 に答える
0

を使用して何かを解決することもできUNIONますが、管理者/チューターなどであるかどうかを示すフィールドを持つ単一のテーブルにデータベースをリファクタリングすることをお勧めします。

于 2012-04-04T11:23:37.877 に答える