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 だいたい分かったら、次へ
「理解できた」はいつでも取り消せます。記録せずに次へ進んでも大丈夫です。
