私は簡単な登録とログイン機能を作成する必要があります。私たちはsha1(私は安全ではないことがわかっています)を使用してパスワードをハッシュし、パスワードの先頭に特定の塩を追加する必要があります。データはmySQLデータベースに格納されています。 registration.phpは機能しているようですが、html形式のパスワードとデータベースに保存されているパスワードを比較するのに問題があります。今のところグーグルグーグルではありますが、私はpassword_verify()関数を使ってログイン機能を見つけるだけです。これはsha1で動作しないようです。お詫び申し上げます場合は、ソリューションや明白な、非常に新しいphp。PHP - ログイン機能がsha1ハッシュされたパスワードを使用して、働かせることができません大学のプロジェクトのために
コードの一部が含まれていないため、意図したとおりに動作しています。 html形式のフィールドに何を入力しても、何があっても「無効なユーザー名またはパスワード」が出力されます。
$formUsername = mysqli_real_escape_string($connect, $_REQUEST['username']);
$formPassword = mysqli_real_escape_string($connect, $_REQUEST['password']);
$sql = "SELECT passord FROM bruker WHERE brukerNavn = '$formUsername';";
$passwordFraDatabase = mysqli_query($connect, $sql);
$row = mysqli_fetch_assoc($passwordFraDatabase);
$passordSomString = $row['passord'];
$salt = 'IT2_2018';
$passwordFraForm = sha1($salt . $formPassword);
if ($passwordFraForm == $passordSomString) {
echo("Logged in");
}
else echo("invalid username or password");
編集:私はSHA1を使用してはならないと言っているものと、全体の質問を読んで、私は、特に私はSHA1、その大学のプロジェクトを使用するために必要と述べました。 誰かが尋ねたので、これはパスワードが最初の場所に登録されている方法です:PHPのデフォルトで
$email = mysqli_real_escape_string($connect, $_REQUEST['email']);
$username = mysqli_real_escape_string($connect, $_REQUEST['username']);
$password = mysqli_real_escape_string($connect, $_REQUEST['password']);
$salt = 'IT2_2018';
$securepassword = sha1($salt . $password);
$sql = "INSERT INTO bruker (ePost, brukerNavn, passord) VALUES ('$email', '$username', '$securepassword')";
if(mysqli_query($connect, $sql)){
echo "user registered!";
} else{
echo "could not register user " . mysqli_error($connect);
}
データベースにパスワードを登録する方法を教えてください –
パスワードを暗号化するためにSHA1を使用しないでください。 SHA256のようなものを使用するか、単に元のPHP関数 'password_hash();' – Nicolas
**を使用してください**危険**:あなたは[不適当なハッシングアルゴリズム](http://php.net/manual/en/faq.passwords.php )、あなたのユーザーのパスワードの[注意を払う]必要があります(https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet)。 – Quentin