暗号化されたパスワードはデータベースに保存されますが、どうやら間違っていますか?

ジョシュ

チュートリアルで暗号化するためにmd5を使用したチュートリアルを使用して、単純なログインを作成しました。md5の代わりにpassword_hashを使用しました。

$password = password_hash("$password_1", PASSWORD_DEFAULT);

暗号化されたパスワードが機能し、データベースに保存されますが、暗号化されていないパスワードでログインしようとすると、「ユーザー名またはパスワードを入力してください」というメッセージが表示されます。使用しているコードは次のとおりです。サーバー情報を削除しただけです。

<?php
session_start();

// initializing variables
$username = "";
$email    = "";
$errors = array(); 

// REGISTER USER
if (isset($_POST['reg_user'])) {
// receive all input values from the form
$username = mysqli_real_escape_string($db, $_POST['username']);
$email = mysqli_real_escape_string($db, $_POST['email']);
$password_1 = mysqli_real_escape_string($db, $_POST['password_1']);
$password_2 = mysqli_real_escape_string($db, $_POST['password_2']);

// form validation: ensure that the form is correctly filled ...
// by adding (array_push()) corresponding error unto $errors array
if (empty($username)) { array_push($errors, "Username is required"); }
if (empty($email)) { array_push($errors, "Email is required"); }
if (empty($password_1)) { array_push($errors, "Password is required"); }
if ($password_1 != $password_2) {
array_push($errors, "The two passwords do not match");
}

// first check the database to make sure 
// a user does not already exist with the same username and/or email
$user_check_query = "SELECT * FROM users WHERE username='$username' OR 
email='$email' LIMIT 1";
$result = mysqli_query($db, $user_check_query);
$user = mysqli_fetch_assoc($result);

if ($user) { // if user exists
if ($user['username'] === $username) {
  array_push($errors, "Username already exists");
}

if ($user['email'] === $email) {
  array_push($errors, "email already exists");
}
}

// Finally, register user if there are no errors in the form
if (count($errors) == 0) {
$password = password_hash("$password_1", PASSWORD_DEFAULT);//encrypt the 
password before saving in the database
$query = "INSERT INTO users (username, email, password) 
          VALUES('$username', '$email', '$password')";
mysqli_query($db, $query);
$_SESSION['username'] = $username;
$_SESSION['success'] = "You are now logged in";
header('location: testlogin.php');
 }
}

// ... 

// LOGIN USER
if (isset($_POST['login_user'])) {
$username = mysqli_real_escape_string($db, $_POST['username']);
$password = mysqli_real_escape_string($db, $_POST['password']);

if (empty($username)) {
    array_push($errors, "Username is required");
}
if (empty($password)) {
    array_push($errors, "Password is required");
}

if (count($errors) == 0) {
    $password = password_hash("$password", PASSWORD_DEFAULT);
    $query = "SELECT * FROM users WHERE username='$username' AND 
 password='$password'";
    $results = mysqli_query($db, $query);
    if (mysqli_num_rows($results) == 1) {
      $_SESSION['username'] = $username;
      $_SESSION['success'] = "You are now logged in";
      header('location: testlogin.php');
    }else {
        array_push($errors, "Wrong username/password combination");
    }
  }
 }

?>

password_hashを機能させるために含める必要があるものはありますか?

atymic

ユーザーのパスワードを確認するときは、このpassword_verify機能を使用する必要があります。以下のログインコードを採用しました。

if (count($errors) == 0) {
    $query = "SELECT * FROM users WHERE username='$username'";
    $result = mysqli_query($db, $query);

    if (mysqli_num_rows($result) === 1) {
        $user = mysqli_fetch_assoc($result);

        if (password_verify($password, $user['password'])) {
            $_SESSION['username'] = $username;
            $_SESSION['success'] = "You are now logged in";
            header('Location: testlogin.php');
            die();
        }
    }

    array_push($errors, "Wrong username/password combination");
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

PHP、アップロードされた画像のURLはデータベースに保存されません。どこが間違っているのですか?

分類Dev

bcryptを使用してデータベースから暗号化されたパスワードを取得するにはどうすればよいですか?

分類Dev

laravelを使用してデータベースのプレーンパスワードを暗号化されたパスワードに変換しますか?

分類Dev

暗号化された(base64)パスワードがデータベースhsqlに保存されない

分類Dev

データベースに保存され、jhipster Webアプリによって生成されたパスワードを復号化するにはどうすればよいですか?

分類Dev

パスワードが「salt」で暗号化されている場合、データベースでパスワードを確認するにはどうすればよいですか?

分類Dev

SQLデータベースにレコードが存在するかどうかを確認すると、間違った結果が返されます

分類Dev

Teradata DBに接続している間、ローカルデータソースから保存されたパスワードを取得しています。

分類Dev

mysqlデータベースからエコーされる日付が間違っています

分類Dev

Chromeは、保存されているパスワードなどを書き込むSQLiteデータベースファイルをどこに保存しますか?

分類Dev

NodeJSは、ユーザーパスワードではなく、復号化して読み取る必要のある暗号化されたデータベースパスワードを保存しますか?

分類Dev

Android:Androidの部屋データベースが資格情報で暗号化されているかどうか誰かが知っていますか?

分類Dev

CryptoJSで暗号化されたパスワードをデータベースに保存する方法

分類Dev

zipまたはgzipがパスワードで暗号化されているかどうかを確認します(Node.JS)

分類Dev

UCanAccessをデータベースパスワードで暗号化されたAccessデータベースに接続するにはどうすればよいですか?

分類Dev

Fluent NHibernate +複数のデータベース= Fluently.Configure()が間違ったデータベースにマッピングされていますか?

分類Dev

プロキシパスワードは暗号化またはハッシュ化されていますか?

分類Dev

「SYSKEY」パスワードはどこに保存されますか?そして、パスワードを暗号化するためにどのようなアルゴリズムを使用しますか?

分類Dev

keytoolから「間違ったパスワード」を取得するにはどうすればよいですか?

分類Dev

oAuth「パスワードは指定されていませんが、秘密鍵は暗号化されています」

分類Dev

すでに暗号化されたパスワードをデバイスモデルに挿入するにはどうすればよいですか?

分類Dev

パスワードが間違っている場合は、ログイン試行がデータベースに保存します

分類Dev

C#のデータベースからsha1で暗号化されたパスワードをクエリできないのはなぜですか

分類Dev

データベースのパスワードが変更された場合、Java BasicDataSourceはどのようにしてデータベースへの新しい接続を作成しますか?

分類Dev

データベースのパスワードが変更された場合、Java BasicDataSourceはどのようにしてデータベースへの新しい接続を作成しますか?

分類Dev

AndroidDebugKeyキーストアが改ざんされたか、パスワードが間違っていました

分類Dev

docker loginコマンドが暗号化されていないパスワードをコンピューターに保存するのはなぜですか?

分類Dev

PHPパスワード変更スクリプトは常にデータベースから間違ったパスワードを検出します

分類Dev

ハッシュされたパスワードを取得してデータベースに渡すにはどうすればよいですか?

Related 関連記事

  1. 1

    PHP、アップロードされた画像のURLはデータベースに保存されません。どこが間違っているのですか?

  2. 2

    bcryptを使用してデータベースから暗号化されたパスワードを取得するにはどうすればよいですか?

  3. 3

    laravelを使用してデータベースのプレーンパスワードを暗号化されたパスワードに変換しますか?

  4. 4

    暗号化された(base64)パスワードがデータベースhsqlに保存されない

  5. 5

    データベースに保存され、jhipster Webアプリによって生成されたパスワードを復号化するにはどうすればよいですか?

  6. 6

    パスワードが「salt」で暗号化されている場合、データベースでパスワードを確認するにはどうすればよいですか?

  7. 7

    SQLデータベースにレコードが存在するかどうかを確認すると、間違った結果が返されます

  8. 8

    Teradata DBに接続している間、ローカルデータソースから保存されたパスワードを取得しています。

  9. 9

    mysqlデータベースからエコーされる日付が間違っています

  10. 10

    Chromeは、保存されているパスワードなどを書き込むSQLiteデータベースファイルをどこに保存しますか?

  11. 11

    NodeJSは、ユーザーパスワードではなく、復号化して読み取る必要のある暗号化されたデータベースパスワードを保存しますか?

  12. 12

    Android:Androidの部屋データベースが資格情報で暗号化されているかどうか誰かが知っていますか?

  13. 13

    CryptoJSで暗号化されたパスワードをデータベースに保存する方法

  14. 14

    zipまたはgzipがパスワードで暗号化されているかどうかを確認します(Node.JS)

  15. 15

    UCanAccessをデータベースパスワードで暗号化されたAccessデータベースに接続するにはどうすればよいですか?

  16. 16

    Fluent NHibernate +複数のデータベース= Fluently.Configure()が間違ったデータベースにマッピングされていますか?

  17. 17

    プロキシパスワードは暗号化またはハッシュ化されていますか?

  18. 18

    「SYSKEY」パスワードはどこに保存されますか?そして、パスワードを暗号化するためにどのようなアルゴリズムを使用しますか?

  19. 19

    keytoolから「間違ったパスワード」を取得するにはどうすればよいですか?

  20. 20

    oAuth「パスワードは指定されていませんが、秘密鍵は暗号化されています」

  21. 21

    すでに暗号化されたパスワードをデバイスモデルに挿入するにはどうすればよいですか?

  22. 22

    パスワードが間違っている場合は、ログイン試行がデータベースに保存します

  23. 23

    C#のデータベースからsha1で暗号化されたパスワードをクエリできないのはなぜですか

  24. 24

    データベースのパスワードが変更された場合、Java BasicDataSourceはどのようにしてデータベースへの新しい接続を作成しますか?

  25. 25

    データベースのパスワードが変更された場合、Java BasicDataSourceはどのようにしてデータベースへの新しい接続を作成しますか?

  26. 26

    AndroidDebugKeyキーストアが改ざんされたか、パスワードが間違っていました

  27. 27

    docker loginコマンドが暗号化されていないパスワードをコンピューターに保存するのはなぜですか?

  28. 28

    PHPパスワード変更スクリプトは常にデータベースから間違ったパスワードを検出します

  29. 29

    ハッシュされたパスワードを取得してデータベースに渡すにはどうすればよいですか?

ホットタグ

アーカイブ