【Session】PHPで一時的にデータを保持する方法

こんにちは。お久しぶりです。
ここのところ忙しくてなかなか更新できていませんでした。
今回はPHPでセッション(Session)を利用する方法について書いてみようと思います。
セッションとは、データを一時的に保持する機能のようなもので、ユーザーのログインの有無や買い物カートなど様々なプログラムに使用されています。

セッションを利用する

通常、セッションを利用するために必要なコードはとてもシンプルです。
セッションを利用するためにはまず一番最初(ファイルの一番上)の部分にsession_startを記述する必要があります。
(※クッキーに基づくセッションを使用している場合にはヘッダー情報を送付するため、すべての出力の前にsession_startのコールが必要なのです。よくわからない人は、「とにかく最初に書いておけばいい!」と理解してください。)

<?php
//セッションの開始(一番最初に記述)
session_start();

//セッション[test]にデータを保存する
$_SESSION['test'] = "セッションテストだよ。";

//出力
echo "結果:" .$_SESSION['test'];
?>

これでセッションの書き込みと読み込みが実装できています。
さて、別のページで表示したい場合はどのようにすればよいのでしょうか。

<?php
//書き込み用php
//index.php
//セッションの開始(一番最初に記述)
session_start();
//セッション[name]にデータを保存する
$_SESSION['name'] = "カニモモンガ";
echo "データのセーブが終わりました。<br>
<a href='./test.php'>こちらで確認できます。";
?>

このようなファイルを作成した後、表示用のtest.phpを作成します。

<?php
//読み込み用php
//test.php
//セッションの開始(一番最初に記述)
session_start();
//セッション[name]から読み取る
$name = $_SESSION['name'];
//出力
echo $name ."さん、ようこそ!";
?>

これで2ファイルできました。
この状態でindex.phpにアクセスしてから、test.phpに飛ぶとデータが受け渡されていることがわかります。
このようにページ間でデータをやり取りすることができます。
※うまくいかない場合はクッキーが有効になっているか確認してみてください。

このセッション(Session)は$_POSTや$_GETと組み合わせてユーザーの認証に利用したり、買い物カートに商品を保存していくことができます。
セッションの有効期限はphpの設定によって変わりますが、多くの場合、数日〜数週間が初期値だと思います。

セッションの破棄

セッションを破棄したいこともあるかも知れません。
その場合はsession_destroyをコールしましょう。

<?php
//セッションの開始(一番最初に記述)
session_start();
//まずグローバル変数を初期化
$_SESSION = array();
//セッションを破壊
session_destroy();
?>

これを実行すればセッションが空っぽになって、セッションが新規作成されます。
よくある「カートを空にする」とか「ログアウト」とかはこれでオッケーです。

セッション名の変更

すこしマニアックな話になるかもしれませんが、セッションにsession_name()という関数で名前をつけることもできます。
この場合session_start()の前に、毎回その名前をコールしないと正しく読み込まれません。

<?php
//セッションに名前をつける
session_name("KaniMomo");
//※現在のセッション名を知りたい場合は
$session_name = session_name();
session_start();

echo "セッション名を書き換えました。";
echo "現在のセッション名は" .$session_name ."です。";
?>

こんな感じです。
この機能を知ると、少しwebサイト作ってみたくなりませんか?笑

  1. コメント 0

  1. トラックバック 0

return top