2016-12-22 3 views
0

これは私のための頭のスクラッチャーです。 ServerはApache 2.4、MySQL、およびPHP 7.0.8のUbuntuです。私はドキュメントを読んで、GoogleとSOを検索して、運がない場合の可能な回答を探しました。私は基本的な機能を持っている:PHP 7 - password_hashはNULLを返します

public function updatePassword($pw) 
{ 
    $passwd = password_hash($pw, PASSWORD_DEFAULT); 

    if($passwd !== NULL) 
    { 
     $this->sql = "UPDATE {$this->table} SET passwd='{$passwd}' WHERE id=".$_SESSION[PUBLIC_SITE]['uid']; 
     $this->execSql("Updating User Password", UPDATE); 
    } 
} 

$passwdNULLある、と私は理由を把握するように見えることはできません。また、2番目の引数をPASSWORD_BCRYPTに設定してみたところ、password_hashはまだNULLを返しています。ここの問題は何ですか?彼らは新しいアルゴリズムや何かの言及を含むようにドキュメントを更新していないのですか?それとも私はここに何か他のものを逃している?

+2

エラーが有効になっていますか?デバッグの試行は? – Devon

+2

ええ、RFCを読んだ後、私自身の質問に答えました。文字列ではなく関数に配列を渡します。これを一時的に削除する。そしてもう1杯のコーヒーを掴む。 – TomJ

+1

@TomJおそらく自分自身に答えることを考えてください:) – chrki

答えて

2

https://wiki.php.net/rfc/password_hashを確認し、デバッグのエラーフラグを思い出した後、私はすぐに関数に配列を渡していることを認識しました。 password_hash()は、最初の引数として文字列が必要です。正しい、予想される入力を渡すことで解決されました。

関連する問題