セッションとはなにか
Web アプリケーション開発 入門
ログイン情報はどのように保持されているのか
ログイン
購入
認証
保存
身近なWebアプリケーション
一度ログインするだけで、あらゆる機能が使える
ユーザー
ログイン
商品検索
購入決済
レビュー記載
アカウント編集
支払情報
どの機能でも「ログイン状態」が保たれている
なぜ難しいのか?
Webサイト:1ファイル = 1ページ の原則
login.php
ログインページ
top.php
トップページ
product.php
商品ページ
checkout.php
決済ページ
Q. ログインしたユーザーID を、4つのファイル間で共有できるか?
$userId = ?
$userId = ?
$userId = ?
$userId = ?
✕
✕
✕
通常、複数ファイル間で変数の値を共有することはできない
セッションの仕組み
サーバー側 セッション
session_id = abc123
user_id = 42
username = Tanaka
login.php
$_SESSION['user_id']
top.php
$_SESSION['user_id']
product.php
$_SESSION['user_id']
checkout.php
$_SESSION['user_id']
どのファイルからでも $_SESSION でアクセスできる
ログイン・ログアウトの流れ
ログイン時
ユーザーがID/PW入力
フォームから送信
DBでID/PWを照合
一致したらOK
$_SESSION['user_id'] = 42
セッションに記録
✔ どのページでも user_id が使える
ログアウト時
ログアウトボタン押下
logout.php にリクエスト
session_destroy()
セッション全削除
user_id がなくなる
未ログイン状態に
✔ user_id 削除だけで完全ログアウト
PHP でのセッション操作
① セッション開始(全ページ共通)
<?php
session_start();
// セッションが使えるようになる
② ログイン成功時
// ユーザーIDをセッションに保存
$_SESSION['user_id'] = $userId;
③ 他ページでセッション取得
// どのファイルでも取得できる
$id = $_SESSION['user_id'];
④ ログアウト時
// セッションを削除する
session_destroy();
ポイント:session_start() を最初に呼び出し、$_SESSION['キー名'] で値を読み書きするだけ
まとめ
01
セッションとは サーバー側にデータを保存し、複数ページ間で情報を共有できる仕組み
02
ログイン状態の保持 $_SESSION['user_id'] にユーザーIDを入れることでログイン情報を保持する
03
ログアウトの実装 session_destroy() でセッションを破棄するだけでログアウトできる
04
session_start() 必須 セッションを使うファイルの先頭では必ず session_start() を呼ぶ
セッションを使いこなして、本格的なWebアプリケーションを開発しよう!