2017-08-05 10 views
0

データベースに保存されているハッシュパスワードを、ユーザーがログインするためのパスワードで確認しようとしています。しかし、私はそれに失敗しています。私はパスワードを比較するためにpassword_verifyを使用していますが、正しいパスワードを入力していても答えが真ではありません。 私を助けてください!入力したパスワードでハッシュパスワードを確認する際に問題が発生しました

 <?php 
     print_r($_POST); 
     include('connect.php'); 
     var_dump($_POST); 
     print_r($_POST); 
     $tbl_name = 'userC'; 


     if(isset($_POST["USERNAME"]) && isset($_POST["USER_PASSWORD"])) 
     { 
      $username1 = $_POST["USERNAME"]; 
      $password1 = $_POST["USER_PASSWORD"]; 
     } 

    // To protect MySQL injection 
     $username1 = stripslashes($username1); 
     $password1 = stripslashes($password1); 



     $stid = oci_parse($conn, "SELECT * FROM $tbl_name where 
     user_name='$username1'"); 
     $result = oci_execute($stid); 
     //$re = oci_fetch_all($stid,$abc); 

     while(($row = oci_fetch_array($stid,OCI_BOTH)) != false) 
     { 
     $password = $row[6]; 
     $username = $row[2]; 
      $re = 1; 
     } 
     if(isset($password)) 
     { 
     if (password_verify($password1, $password)) 
     { 
      $re1=1; 
     } 
     else 
      { 
      $re1 = 0; 
      } 
      } 
     else 
      { 
      $re1 = 0; 
      } 

    // If result matched $username and $password, table row must be 1 row 
     if($re >= 1 && $re1 >= 1) 
     { 
    // Register $username, $password and redirect to file "login_success.php" 
     session_start(); 
     $_SESSION["username"] = $username; 
     header("location:form.php"); 
    } 
     if($re < 1) { 
      $failed = 1; 
       header("location:login.php?msg=failed"); 
     } 
     if($re1 < 1) { 
      $failed = 1; 
      header("location:verify.php?msg1=failed"); 
     } 

      ?> 
+0

それが働いたありがとう、それは –

答えて

1

コードから$password1 = stripslashes($password1);を削除します。入力したパスワードを変更してから、password_verify(または同じ問題についてはpassword_hash)に渡すことは避けてください。

ところで、stripslashesはSQLインジェクションからを保護していません。代わりに、準備された文とoci_bind_by_nameを使用します。

$stid = oci_parse($conn, "SELECT * FROM $tbl_name where user_name=:uname"); 
oci_bind_by_name($stid, ":uname", $username1); 
$result = oci_execute($stid); 
+0

を' '結果とエコー$ password'結果を追加してください。 –

+0

を働いたありがとう、あなたの質問に 'password_hash($パスワード1、PASSWORD_DEFAULT) –

関連する問題