2016-06-13 15 views
-1

私は小さなディテールが不足していると思いますが、何が分かりませんか?私のデータベースは100%確実に接続されています。私のregister.phpページはデータを完全に読み込みます。私はログインシステムを設定しようとすると、私は同じエコー "無効な電子メールまたはパスワード"を取得する私は良い情報または悪い(ちょうど確認する)を入力します。ある時点でphp mysqlログインシステムの問題

データベースから自分のページにデータを投稿できるかどうかを確認するコードを変更しました。完全に機能するので、データベースへのPDO接続が良好であると思います。なぜ私はいつも両方の状況で同じエコーを持っていますか?

<body> 
    <form method="POST" action="login.php"> 
     <table width="400" border="5" align="center"> 
      <tr> 
       <td colspan="5">Login</td> 
      </tr> 
      <tr> 
       <td align="center">Email</td> 
       <td><input type="text" name="email"></input></td>     
      </tr> 
      </tr> 
      <tr> 
       <td align="center">Password</td> 
       <td><input type="password" name="password"></input></td>      
      </tr> 
      </tr> 
      <tr> 
       <td><input type="submit" name="submit" value="sign up"></input></td>      
      </tr> 
     </table>   
    </form> 
</body> 

+0

フォームを入力してください...のようになるはずです。 –

+0

http://php.net/manual/en/function.error-reporting.phpパスワードの列の長さが60以上であることを確認してください。そうでないと、自動的に失敗します。 –

+0

あなたが指定したテーブル名を確認し、指定したボタン名を確認してください – user3386779

答えて

0

問題の

<?php 

if (isset($_POST['submit'])){ 

$db_server = "localhost"; 

$db_user = "root"; 

$db_password = ""; 

$db_name = "newsite"; 

try{ 

$conn = new PDO("mysql:host=$db_server;dbname=$db_name", $db_user, $db_password); 

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    } 
catch(PDOException $e){ 

     echo "Connection failed: " . $e->getMessage(); 
    } 


if (!empty($_POST['email']) && !empty($_POST['password'])){ 

$req = $conn->prepare('SELECT id,email, password FROM users_tb WHERE email= :email'); 

$req->bindParam(':email',$_POST['email']); 

$req->execute(); 

$result= $req->fetch(PDO::FETCH_ASSOC); 

    if (count($result)>0 && password_verify($_POST['password'], $result['password'])){ 

    echo "Alleluia!"; 

    }else{ 

    echo "invalid email or password"; 
    } 

}  
} 

?> 

は、パスワード がハッシュと一致することを確認 password_verifyを使用していることです。

ハッシュを保存していませんが、実際のパスワードは0987654です。データベースにパスワードを入力する際your_passwordがあなたのパスワードです

だから、あなただけの値を格納するのではなく、

password_hash("your_password", PASSWORD_DEFAULT)の結果を保存しなければならないような0987654

あなたのハッシュは60文字でなければなりませんデフォルトで、それは

$2a$04$PnJr5Vo/EDwbCV0z16ceyuj.z4Cw..6L/0cfFPgTCPv0un0qBp.qm

+0

私はようやく私はmysqli接続thxみんなに変更することによって得たので、申し訳ありません! – Juju