2016-08-25 12 views
-2

password_hash($password, PASSWORD_DEFAULT); MySQLのデータベースにユーザーを挿入パスワードを保存する機能が、 私は

$verify_password=password_verify ($password,PASSWORD_DEFAULT); 

を使用してログインをチェックしようとすると、誰もが、エラーが何を教えて、それは私にエラーを示しています。 passwordverify php関数のデフォルトパラメータはpassword_verify (string $password , string $hash)です。これは$ hashです。

+1

ハッシュは 'password_hash'があなたに与えたものである。.. – tkausl

+0

実際に私はすなわち password_hash($パスワード、PASSWORD_DEFAULT)デフォルトのハッシュ関数を使用。このシナリオでハッシュが何であるか教えてください。 –

+2

'password_hash' __returns__ハッシュを、このハッシュをデータベースに保存しますか? – tkausl

答えて

0

password_verifyを使用する代わりにpassword_hashを使用してください。

$verify_password=password_hash($password,PASSWORD_DEFAULT); 

password_hash()は強い一方向のハッシュアルゴリズムを使用して新しいパスワードのハッシュを作成します。 password_hash()はcrypt()と互換性があります。したがって、crypt()によって作成されたパスワードハッシュをpassword_hash()とともに使用することができます。

次のアルゴリズムは、現在サポートされています。

PASSWORD_DEFAULT - bcryptのアルゴリズム(PHP 5.5.0のようにデフォルト)を使用します。この定数は、新しい強力なアルゴリズムがPHPに追加されたときに、時間の経過と共に変化するように設計されています。そのため、この識別子を使用した結果の長さは時間とともに変化する可能性があります。したがって、60文字を超えて拡張できるデータベース列に結果を格納することをお勧めします(255文字は良い選択です)。

PASSWORD_BCRYPT - CRYPT_BLOWFISHアルゴリズムを使用してハッシュを作成します。これは、 "$ 2y $"識別子を使用して標準のcrypt()互換ハッシュを生成します。結果は常に60文字の文字列になります。失敗した場合はFALSEになります。 サポートされているオプション:

  • パスワードは、パスワードをハッシュするときに手動で塩を提供します。これにより、塩が自動的に生成されないようにすることができます。
  • 省略すると、パスワードハッシュごとにpassword_hash()によってランダムな塩が生成されます。これが意図された動作モードです。

  • コストは、使用するアルゴリズムコストを示します。これらの値の例はcrypt()ページにあります。

省略すると、デフォルト値の10が使用されます。これは基本的なコストですが、ハードウェアによってはそれを増やすことを検討してください。

+2

私はこのmrを知っています。私の質問は、どのようにログインを確認することができるだけです –

1

password_verify()関数に渡すパラメータが間違っています。代わりに、2番目の引数として保存されたハッシュを使用します。

// Hash a new password for storing in the database. 
// The function automatically generates a cryptographically safe salt. 
$hashToStoreInDb = password_hash($password, PASSWORD_DEFAULT); 

// Check if the hash of the entered login password, matches the stored hash. 
// The salt and the cost factor will be extracted from $existingHashFromDb. 
$isPasswordCorrect = password_verify($password, $existingHashFromDb); 
関連する問題