7

ユーザーが電子メールまたはユーザー名でログインできるようにしようとしています。現時点では、ユーザー名のみが受け入れられます。私の作業中のSQLは次のようになります。

$sql = "SELECT * FROM customers WHERE login = '".$username."' AND password = '".$password."'";

情報:

  • $usernameの値を持っています$_POST['username']
  • $passwordの値を持っていますmd5($_POST['password'])

ここで、顧客がプロファイルに入力できる電子メール アドレスに拡張したいと考えています。私のSQLは次のようになります。

$sql = "SELECT * FROM customers WHERE (login = '".$username."' OR email = '".$username."') AND password = '".$password."'";

この SQL を次のようにチェックします。

$result = mysql_query($sql);    
mysql_num_rows($result)

しかし、現時点では機能しません。ORSQL で使用すると、mysql_num_rowsが返されます0。何が問題なのですか?または、これを達成するための別のより良い方法はありますか?

4

6 に答える 6

0

これを試してください: ユーザー名には、ユーザー名または電子メール ID のいずれかが含まれている可能性があります。したがって、最初にユーザー名文字列に「@」記号があるかどうかを確認してください。

あれは

if(stripos($username,'@') !== FALSE){
$sql = "SELECT * FROM customers WHERE email = '".$username."' AND password = '".$password."'";
}else{
 $sql = "SELECT * FROM customers WHERE login = '".$username."' AND password = '".$password."'";
}

したがって、条件が成功すると、電子メールが検証されます。それ以外の場合、ログイン名が検証されます

于 2013-05-08T11:15:35.533 に答える
0

これを試してみてください。うまくいくと確信しています:

$sql = "SELECT * FROM customers WHERE login = '".$username."' | email = '".$username."' AND password = '".$password."'";

また、パスワードが間違っているか、ログイン資格情報だけが間違っているかを判断するには、次のようにします。

これを追加 :

if (mysql_num_rows($result)==0) {echo 'ユーザー名またはパスワードが間違っています!';}

于 2014-03-22T20:30:10.877 に答える
-1

or2つのクエリと条件を使用するだけです

$query=mysql_query("select * from customers where user='$username' and password='$password'");
$query1=mysql_query("select * from customers where email='$username' and password='$password'");
if(mysql_num_rows($query)==1 || mysql_num_rows($query1)==1)
{
//YOUR CODE
}
else
{
//YOUR CODE
}
于 2014-07-03T11:57:53.010 に答える
-1

問題はキャラクターの場合でしょうか?

SELECT * FROM `customers` WHERE (LOWER(`login`)='" . strtolower($username) . "' OR
LOWER(`email`)='" . strtolower($username) . "') AND `password`='" . $password . "'"
于 2013-05-08T09:30:59.930 に答える
-1
 $sql = "SELECT * FROM customers 
         WHERE EXISTS(select 1 from customers where login = '".$username."'
                      OR email = '".$username."') 
               AND password = '".$password."'";

これを試してみてください。問題が解決することを願っています。

于 2013-12-02T07:55:46.143 に答える