-1

ログインスクリプトがあります。データベースのユーザーテーブルをチェックして、値が存在するかどうかを確認します。ユーザーがログインを許可されているかどうかを制御するために、テーブルに「close_account」列を追加しました。「close_account」= 1 の場合はログインできず、「close_account」= 0 の場合はログインできます。

使用されたログイン資格情報が無効かどうか (つまり、データベースに存在しないかどうか) を示す if / else ステートメントが既にあるので、「close_account」フラグを追加でチェックして、メッセージを表示できるようにする必要があります。アカウントが無効になっていることを伝えるユーザー。

これは可能ですか?

これが私の既存のコードです:

// Check database to see if email and the hashed password exist there.
            $query = "SELECT id, email, close_account ";
            $query .= "FROM ptb_users ";
            $query .= "WHERE email = '{$email}' ";
            $query .= "AND password = '{$hashed_password}' ";
            $query .= "AND close_account = '0' ";
            $query .= "LIMIT 1";
            $result_set = mysql_query($query);
            confirm_query($result_set);

redirect_to("dashboard.php");
            } else {
                // email/password combo was not found in the database
                $message = "<div class=\"infobox\"><strong>Email/Password combination incorrect.</strong><br />
                    Please make sure your caps lock key is off and try again.</div>";
            }
4

3 に答える 3

0

以下のようにロジックを書き直してください。

 //confirm_query($result_set);
 if(mysql_num_rows($result_set) > 0) {
       redirect_to("dashboard.php");
  } else {
            // email/password combo was not found in the database
            $message = "<div class=\"infobox\"><strong>Email/Password combination incorrect.</strong><br />
                Please make sure your caps lock key is off and try again.</div>";
  }
于 2012-10-27T15:20:36.243 に答える
0

クエリの where 句に close_account を含めないでください。詳細が正しいことを確認したら、それをテストしてください。

$q = "SELECT id, email, close_account 
        FROM ptb_users 
       WHERE email = '$email'
         AND password = '$hashed_password'";

$results = mysql_query($q);
$user    = mysql_fetch_assoc($results);

if(!empty($user))
{
    if($user['close_account']) // If close_account is 1
    {
        // Display error, showing that account is closed.
    }
    else // If close_account is 0
    {
        redirect_to('dashboard.php');
    }
}
else 
{
    // Display error, showing that bad credentials were entered.
}
于 2012-10-27T15:22:23.793 に答える
0

わかりましたので、これが私の答えです

$query = mysql_query("select * from ptb_users where WHERE email = '".$_POST['email']."' and password = '".$_POST['password']."' ")
while($check_account = mysql_fetch_array($query))
{
  $email_check = $check_account['email'];
  $pass_check = $check_account['password'];//whatever if this is hashed_password i dunno
  $blocked_acc = $check_account['close_account'];
}   
if($block_acc == 1) //or what ever your specs in the database are
{
 echo "Your Account has been blocked";
}
else if($email_check != $_POST['email'] && $pass_check != $_POST['password'])
{
 echo "Invalid E-mail or Password";
}

http://www.jaywebtechnologies.co.cc

于 2012-10-27T15:35:30.933 に答える