#ユーザー情報をセッションに格納する方法
phpを使用したポートフォリオ作成時にログイン画面を実装しました。
ログイン後、ユーザー情報に紐づいた処理を行うため、ユーザー情報をセッションに格納しました。ログイン → ログアウトまでの中で、セッションに格納に必要な記述をカンタンにまとめました。
##そもそもセッションとは
こちらのサイトの言葉がわかりやすいので引用します。Cookieとの違いも記載しており、わかりやすいです。
セッションとは、コンピュータのサーバー側に一時的にデータを保存する仕組みのことです。
PHPでセッションを使う方法【初心者向け】
##手順
- ログインするときにユーザー情報を格納する
- ログイン成功後、セッションからユーザー情報取得
- ログアウトしてセッションを削除
ものすごく簡単に書きました。
1. ログインするときにユーザー情報を格納する
記載したコードはこちらです。今回私はユーザーIDのみを格納しました。
※まだローカル環境で開発中なので画面遷移はlocationです。
ログイン成功後の画面に遷移する前にセッションに値を格納しました。
//セッションにユーザーID $user_id を格納
session_start();
$_SESSION['user_id'] = $user_id;
//ログイン成功後の画面に遷移
header("Location: ./index.php");
2. ログイン成功後、セッションからユーザー情報取得
ログイン後遷移したファイルにユーザーIDを取得するコードを記載。
//セッションからユーザーID取得
session_start();
$user_id = $_SESSION["user_id"];
セッションからユーザーIDを取得、 $user_id
という変数に格納しました。
こちらの値を元に、画面上にデータを表示させたりします。
3. ログアウトできるようにする
ログアウト つまり 格納したセッションを削除します。
ログイン後の画面上に「ログアウト」ボタンを設置し、ログイン画面に遷移するようにしました。その際にセッションを削除します。
・ログイン後の「ログアウト」ボタン ※ボタン押すとログイン画面に移動
<form action="../users/index.php" method="post">
<input type="hidden" name="action" id="action" value="destroy"/>
<input type="submit" value="ログアウト" />
</form>
・ログイン画面の処理
//ログアウト セッションの値を削除
if ($_POST["action"] == "destroy") {
unset($_SESSION["user_id"] );
}
###まとめ
こちらに記載した内容以外にも、ログイン失敗したときなども考慮が必要ですが、いったんログイン成功パターンの流れを記載しました。セッションでの記述は思った以上にシンプルでスムーズに記載できたので、今後も活用していきたいと思います。