3

Lumen Framework で次のクエリを実行しようとしています。

SELECT * FROM user WHERE (username = $username OR email = $username) AND password = $password AND flag = 1;

私のルーメンコード:

$login =  User::where('pass', '=', md5($pass))
               ->where('flag', '=', $flag)
               ->where('username', '=', $username)
               ->orWhere('email', '=', $username)->first();

どういうわけか、このコードは常に true を返し、ログインをバイパスします。そのクエリの何が問題になっていますか?

クエリから削除するorWhereと、ユーザー名に最適です。

4

3 に答える 3

5

あなたが欲しいのはこれだと私には思えます:

User::where('pass', '=', md5($pass))
    ->where('flag', '=', $flag)
    ->where(function ($query) use ($username) {
        $query->where('username', '=', $username)
              ->orWhere('email', '=', $username);
    })->first();

また、使用しないmd5でください。すべてのパスワードを bcrypt() で再ハッシュしてみてください。

于 2015-06-25T11:30:38.300 に答える
0

http://laravel.com/docs/4.2/queries#advanced-wheresのlaraveladvanceに従ってください

User::where('pass', '=', md5($pass))
->where('flag', '=', $flag)
->where(function ($query) use ($username) {
    $query->where('username', '=', $username)
          ->where('email', '=', $username);
})->first();
于 2015-06-25T11:22:12.740 に答える