最近、登録ページでパスワードに暗号化を追加しました。
ページ抽出の登録:
$hashed_password = crypt('pass1');
mysqli_query($mysqli, "INSERT INTO Persons (Username, Password, Email, Gender) VALUES ('$euser', '$hashed_password', '$eemail', '$gender')");
私が見る限り、これは正常に機能し、すべてのデータがデータベースに正しく入力されています。
ただし、ログインページはフォームを検証しません。
ログインページの抽出
if( $page_mode == 'Login' )
{
$username = $_POST['username'];
$password = $_POST['password'];
if( trim($username) == '' || trim($password) == '' )
{
$error_string .= '<font color=red>You have left either the username or password field blank!</font>';
}
else
{
require "globe.php";
$result = mysqli_query("SELECT PlayerID, Username, Password FROM Persons WHERE Username='" . mysqli_real_escape_string($username) . "'");
$has_pass = crypt($password, $row['Password']);
if( !($row = mysqli_fetch_assoc($result)) || ($row['Password'] != $has_pass) )
{
$error_string .= '<font color=red>Please check your username or password. Your details weren\'t correct.</font> ';
}
else
{
$error_string .= '<font color=red>login not ready </font> ';
mysqli_close($mysqli);
}
}
}
それはそれをチェックしていないようです。なぜかわからない?誰もが知っている
間違いなく機能するのは、ユーザー名とパスワードのフィールドが空白の場合のエラーメッセージだけです。
編集:
パスワードが「テスト」だったとしましょう。テストを入力すると、パスワードを認証するページ(ログインページも)がバックグラウンドのみで返されます。
他に何か入力しても同じ問題です。
編集:
すべてのサポートを追加しました。しかし、それでも運がありません