LESSON 03 / 03 約5分

ログインは「誰か」を確かめる仕組み

まずは仕組みをつかもう。細かい書き方は覚えなくて大丈夫。

01 これは何?

ログインは、登録した本人かを確かめる仕組みです。パスワードはハッシュ*1にして保存し、照合します。確認できた利用者はセッション*2で引き継ぎます。保存されたパスワードを元の文字に戻して比較する仕組みではありません。

*1 ハッシュ:元の文字へ戻せない形に変換した値。
*2 セッション:次のアクセスでも同じ利用者として扱うための仕組み。

02 なぜ必要?

パスワードをそのまま保存すると、情報が漏れたときに悪用されます。ログイン後も「この投稿を編集してよい人か」の確認が必要です。ログインできることと、他人の投稿を編集できることは別の判断だと理解しましょう。

03 最小限のコード・図

<?php
// 照合だけを示す学習用の例です。
$password = '学習専用の仮パスワード';
$hash = password_hash($password, PASSWORD_DEFAULT);
$matches = password_verify($password, $hash);
var_dump($matches);

04 ここだけ理解する

  • 保存するのはpassword_hashで作った値。
  • 照合にはpassword_verifyを使う。
  • 実装時はHTTPS、試行回数の制限、ログイン後のセッションID更新も必要。

05 覚えなくていいこと

暗号の計算方法は覚えなくてOK。独自のパスワード保存方法を作らず、用意された機能を使います。

ASK AI

06 AIに聞いてみよう

質問文をコピーして、ChatGPTやCodexなどに貼り付けてみましょう。

PHPの投稿サイトにログインを付ける設計を説明してください。password_hashとpassword_verify、セッションIDの更新、Secure・HttpOnly・SameSiteの設定、CSRF対策、試行回数制限、ログアウト、投稿の所有者確認を含めてください。一度に長いコードを書かず、必要な確認を段階ごとに示してください。

07 AIの回答を見るポイント

  • パスワードを元の文字のまま保存・記録していないか。
  • 投稿の編集や削除のたびに、サーバーで所有者を確認するか。

さらに確認する:公式ドキュメント ↗

08 だいたい分かったら、次へ

「理解できた」はいつでも取り消せます。記録せずに次へ進んでも大丈夫です。