1. ホーム
  2. php

[解決済み] ログイン時にactivation_codeがactivateされていないことを確認する。「ONLY" activation_code

2022-02-26 15:28:06

質問

ログイン時に使用するコードです。

            $q = $lacz->query("SELECT email, pass, activation_code
                                    FROM users
                                    WHERE  email='". $nazwa_uz_l ."' 
                                    AND pass = '". $haslo_l ."' 
                                    AND activation_code IS NULL ");     

        if($q->num_rows>0) {
            $_SESSION['prawid_uzyt'] = $nazwa_uz_l; }
        else 
        {
            echo 'Pass or Log are wrong, or activation code is not confirmed (check email).';
            exit;
        }

このクエリでは、Eメール、パスワード、アクティベーションコードの3つをすべてチェックし、エラーを出力しています。パスやログが間違っている場合は最初のエラー、アクティベーションコードがNULLでない場合は2番目のエラー(elseifのようなもの)を出力したいのです。elseifと2つのクエリを試しましたが、エラーが発生しました。助けていただけますか?私は答えをチェックし、ポイントを与える、ありがとうございます。

解決方法は?

クエリから "AND activation_code IS NULL" を削除し、以下のようにします。

if($q->num_rows>0) 
{
  $row = $q->fetch_assoc();
  if(!is_null($row['activation_code']))
  {
    $_SESSION['prawid_uzyt'] = $nazwa_uz_l;
  }
  else 
  {
    echo 'Activation code is not confirmed (check email).';
    exit;
  }
}
else 
{
  echo 'Pass or Log are wrong.';
  exit;
}