2016-12-22 8 views
1

私は自分のI-Phoneアプリからユーザー名とパスワードの値を取得する簡単なPHPスクリプトを作成しました。正しいユーザー名とパスワードをデータベースに挿入するため、正しいユーザー名とパスワードを取得することが確実です。しかし、データベースに挿入する前にパスワードをハッシュしようとすると、パスワードが正しく機能しませんでした。PHPハッシュされたパスワードがデータベースに挿入されていない

スクリプトは以下のとおりです。 $ queryステートメントは実行されません。理由はわかりません。 ありがとうございました!あなたのコードで

<?php 
    @session_start(); 
    @ob_start(); 

    $host='localhost'; 
    $user='root'; 
    $pass='root'; 
    $db_name="deep_freeze"; 

    $connection = mysqli_connect($host,$user,$pass, $db_name); 

    $username_p = $_POST['username']; 
    $password_p = $_POST['password']; 
    // Hash the password. $hashedPassword will be a 60-character string. 
    $hashPwd = mysql_real_escape_string(password_hash('hello', PASSWORD_DEFAULT)); 

    if(!$connection){ 
     die('Connection Failed'); 
    } 
    else{ 
     $dbconnect = @mysqli_select_db($connection, $db_name); 

     if(!$dbconnect){ 
      die('Could not connect to Database'); 
     } 
     else{ 
      //echo $hashPwd; 
      $query = "INSERT INTO deep_freeze VALUES ('$username_p','$hashPwd')"; 
      mysqli_query($connection, $query) or die(mysql_error()); 

      echo 'Successfully added.'; 
      echo $query; 
      echo $username_p.$password_p; 
     } 
    }  
?> 
+2

接続にはmysqliを使用し、エスケープ文字列にはmysql_real_escape_stringを使用しています。 –

+0

mysql_ *関数とmysqli_ *関数を混在させないでください。また、mysql_ *関数を使用しないでください。 – Musa

+1

データベースのパスワードの長さはどのくらいですか?あなたのハッシュの長さが100文字で、データベースで 'varchar(80)'にフィールドを設定した場合、パスワードは切り捨てられます。また、上で述べたように、mysql_ *ではなくmysqli_ *関数を使用してください。 – AnthonyB

答えて

0

は、あなたのデータベースにあなたが少なくとも60 varchar(60)の長さで、あなたのフィールドを設定する必要がありますので、あなたのハッシュの長さは、(password_hash方法に従って)60個の文字であると述べました。

データベースフィールドの長さが60未満の場合、パスワードは挿入時に切り捨てられます。

password_hashを参照してください。

関連する問題