2016-04-14 2 views
-2

PHPはハッシュされたパスワードをファイルに書き込まないでしょうか?私は現在、PHPのパスワードの検証をテストしようとすると、次のコードを使用して、そうやって

HTMLファイル:

<form action="post.php" method="post" id="set"> 
    <label>Set</label> 
    <input name="password1" id="password1"> 
    <input type="submit" name="submit1" value="Add password"> 
</form> 
<form action="check.php" id="check"> 
    <label>Check</label> 
    <input name="password2" id="password2"> 
    <input type="submit" name="submit2" value="Test Password"> 
</form>  

PHPは、ファイルにパスワードを追加します。

<?php 
    $password = $_POST['password1']; 
    $hashed_password = password_hash($password, PASSWORD_DEFAULT); 
    $file = 'hash.txt'; 
    file_put_contents($file, $hashed_password, FILE_APPEND); 
?> 

PHPは、入力されたのコンペアファイル内のパスワードとパスワード:

<?php 
    $password = $_POST['password2']; 
    $hashed_password = password_hash($password, PASSWORD_DEFAULT); 
    if (password_verify($password, $hashed_password)) { 
     echo 'Correct'; 
    } 
    echo 'Wrong'; 
?> 

私はファイルにパスワードを保存することは賢明なアイデアではありませんが、これはテストすることです。

私がやっていることは、最初のフォームにパスワードを入力してヒットサブミットし、ハッシュされたパスワードをhash.txtに保存して、2番目のフィールドにパスワードを再入力すると、 。

私が午前問題は、私が最初にフォームに、送信]を押したときに、それはpost.phpに私を送信し、ファイルからパスワードを読み取るためにhash.txt

+2

あなたは2番目のスクリプトに戻ったファイルからパスワードを読んでいません! – RiggsFolly

+3

ファイルは書き込み可能ですか? – Daan

+0

エラー報告を有効にしたか、エラーログを確認しましたか? – deceze

答えて

1

Check.phpニーズにハッシュされたパスワードを追加しないで、あなたそれをチェックできるように保存しました。

if then elseは、そうでない場合、あなたはいつもあなたは、このスクリプトでエラー報告をオンにした場合に関係なく

これはおそらく、非常に明白であったであろうecho 'Wrong';メッセージが表示されますあなたのメッセージを出力するためのより良いでしょう。あなたがLIVEサーバーで作業していると仮定して、デフォルトでは無効になります。

post.phpいくつかのエラー報告を追加し、FILE_APPENDを削除してください。このコードは、このファイルに格納されている複数のハッシュに対処できません。たぶんあなたの問題の1つです!

<?php 
    error_reporting(E_ALL); 
    ini_set('display_errors', 1); 

    $password = $_POST['password1']; 
    $hashed_password = password_hash($password, PASSWORD_DEFAULT); 
    $file = 'hash.txt'; 
    file_put_contents($file, $hashed_password); 
?> 

Check.php

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

$password = $_POST['password2']; 

$hashed_password= file_get_contents('hash.txt'); 

if(password_verify($password, $hashed_password)) { 
    echo 'Correct';  
} else { 
    echo 'Wrong'; 
} 
?> 
関連する問題