2017-10-31 21 views
0

パスワード「admin」のユーザー「admin」を含むデータベースがあります。 db.phpではRedBeaNPHPに接続しました。 DB : id,user,password,authority。しかし、私はパスワードを比較することはできません。何がうまくいかないの?ここデータベースのパスワードを比較できません

if(empty($errors)) 
    { 
     $user = R::find('users', 'login = ?' , array($data['login'])); 
     if($user) 
      { 
       $password_db = R::find('users', 'password = ?' , 
             array($data['password'])); 
       if($password_db) 
        { 
         echo 5555; 
        } 
      } else 
      { 
       echo 'Wrong password'; 
      } 

HTMLコード:

<div id="login"> 
    <h1>Auth</h1> 
    <form name='form-login' method="post"> 
     <span class="fontawesome-user"></span> 
     <input type="text" name="user" placeholder="Username"> 
     <span class="fontawesome-lock"></span> 
     <input type="password" name="password" placeholder="Password"> 
     <input type="submit" value="Login" name="do_login"> 
    </form> 
+0

'$ data ['password']'に 'trim()'を使ってみてください。文字列から空白が削除されます –

+0

特に何がうまくいかないのですか?あなたは "間違ったパスワード"メッセージを受け取りますか?トラブルシューティングをしましたか?エラーメッセージが出ますか? '$ data'、' $ user'、 '$ password_db'の値は何ですか? – showdev

+0

また、私はRedBeanPHPに精通していませんが、私はあなたのコードのロジックに従っていません。特定のユーザー名を持つユーザーを見つけて、別のクエリを実行して特定のパスワードを持つユーザーを特定しますが、決して特定のユーザー名とパスワードのペアは見つけられないようです。ユーザーが見つからない場合は、「間違ったパスワード」と表示されます。パスワードが見つからない場合は、何も起こりません。ユーザー名とパスワードのペアを認証しようとしていますか? – showdev

答えて

0

私は問題は、あなたがそこに無効なデータを渡しているログインでユーザーを見つけることである参照してください。 $データが投稿データを持つことを考慮してください。

$user = R::find('users', 'login = ?' , array($data['user'])); 
+0

'$ data'に投稿されたデータが含まれているという合理的な仮定の下で、これはおそらく解決策のようです。 – showdev

0

Repalce

$user = R::find('users', 'login = ?' , array($data['login'])); 
// $data['login'] is not defined. 

あなたはRedBeanドキュメント(https://redbeanphp.com/index.php?p=/finding)を読めば、あなたは "見つける" ことがわかります何の結果が存在しない場合アレイと、空の配列を返します。 私はFindOneを使用してログインの目的で最初の行またはnullのみを返します。 もう1つのヒントは、ログインについて話しているときにコードで経済的ではありません。 コードとSQ​​Lインジェクションを忘れることはできません。

関連する問題