2017-10-09 20 views
0

password_verifyの実装のためにログインファイルに問題があります。ファイルはpassword_verify()検証なしで正常に動作していました。私のログインファイルの下phpログインがpassword_verify(Android)で動作しません

<?php 
     include 'config.inc.php'; 
// Innitialize Variable 
     $result=''; 
     $username = $_POST['username']; 
     $userpassword = $_POST['password']; 

     // Query database for row exist or not 
     $sql = 'SELECT password FROM user WHERE email = :username'; 
     $stmt = $connection->prepare($sql); 
     $stmt->bindParam(':username', $username, PDO::PARAM_STR); 
     $stmt->bindParam(':userpassword', $userpassword, PDO::PARAM_STR); 
     $stmt->execute(); 

     // $row = mysqli_fetch_array($stmt); 
     $row = $stmt->fetchAll(PDO::FETCH_ASSOC); 

     if (password_verify($userpassword, $row['password'])) { 
      $result="true"; 
        } else { 
         $result="false"; 
          } 

     // send result back to android 
     echo $result; 

    ?> 

ここでは、参考のために(うまく機能している)私のレジスタファイルもある:あなたのサポートのための

<?php 

include 'config.inc.php'; 

// Check whether username or password is set from android 
if(isset($_POST['user']) && isset($_POST['email']) && isset($_POST['password'])) 
{ 
     // Innitialize Variable 
    $result=''; 
     $user = $_POST['user']; 
     $email = $_POST['email']; 
     $password = $_POST['password']; 

     // Encryption of password 
     $options = [ 
     'cost' => 12, 
     ]; 
     $password = password_hash($password, PASSWORD_BCRYPT, $options); 

     // Query database for row exist or not 
     $sql = 'INSERT INTO user VALUES (NULL, :user, :email, :password, 0, 1, 1)'; 
     $stmt = $connection->prepare($sql); 
     $stmt->bindParam(':user', $user, PDO::PARAM_STR); 
     $stmt->bindParam(':email', $email, PDO::PARAM_STR); 
     $stmt->bindParam(':password', $password, PDO::PARAM_STR); 
     $stmt->execute(); 
    if($stmt->rowCount()) 
     { 
     $result="true";  
     } 
     elseif(!$stmt->rowCount()) 
     { 
      $result="false"; 
     } 

     // send result back to android 
     echo $result; 
} 

?> 

ありがとう!

オリバー

+0

'$ row ['password']'はハッシュされていないようです。マニュアルを確認する[password_verify](http://php.net/manual/en/function.password-verify.php) –

+0

また、ここですでに '$ stmt-> bindParam( ':password'、$ password、PDO :: PARAM_STR); 'それでは、もう一度'検証する 'の目的は何ですか? –

+0

':userpassword'をlogin SELECTにバインドする際にエラーが発生しませんか? – mario

答えて

-1

1>パスワードは、インサートハッシュフォーマットされている場合>ログインページSQLクエリチェック後>あなたのパスワードフィールドのデータベースは、それが

2を挿入してフォーマットされた値をハッシュである

3をご確認くださいあなたの投稿パスワードを選択するには PHPハッシュ関数でパスワードを選択する必要があります

関連する問題