SESSION関連の関数
戻る


[9]SESSION関連の関数(SESSIONとは)

【SESSION関連の関数】

SESSIONとは、Perlなど従来のCGI言語の場合、データの引継ぎにCookieを利用することが必須でしたが、 PHPではCookieと共にサポートされるSession関数によるデータの引継ぎが可能です。
これは動作はCookieと同様のものですが、Cookieとは違いCookieファイルを作成保存しないでHTTPプロコトル で変数に格納され、データを引き継がせる事が可能です。
詳細については「 セッション処理関数 」をご覧ください。

では実際に動作させてみましょう。この仕組みはショッピングカートなどを作成する場合に利用するものです。
session関数を使うには必ず"session_start();"という関数から始まり、"session_unset();"で終わります。 session_unset();でセッション関数の終わりを宣言しないと、永遠に指定したセッション変数に値がのこされてしまいます。

■session01.php
<?php
///////////////////////////////////////////
//PHPプログラムの動作テスト1
//session関数
///////////////////////////////////////////

session_start();

$_SESSION['test01']="取りあえずセッション関数を使ってみた!";

print "<a href=\"session02.php\" target=\"_blank\">実験</a>";
?>

■session02.php
<?php
///////////////////////////////////////////
//PHPプログラムの動作テスト2
//session関数
///////////////////////////////////////////

session_start();

print $_SESSION['test01'];

session_unset();
?>

それではこちらで確認してみてください。
最初に"実験"というリンクが表示され、クリックすると "取りあえずセッション関数を使ってみた!"と表示されているはずです。
表示されたら、再読み込みしてみてください。エラーが表示される筈です。
これは"session02.php"で最後にセッション関数の終わり(クリア)"session_unset();"を宣言している為にセッション関数がないことが原因で起こります。
もうお気づきの方もいると思いますが、Cookieを作成していませんが、データを引き継いでいるのが確認できるでしょう。"[4]クッキーを操作する"で説明したようにあえてCookieを作成しなくてもsession関数がCookieを作成してくれています。
便利な関数ですね。では、Cookieを作成しない携帯電話などの場合はどうすればいいのでしょうか?

【Cookieが利用できない場合のプログラミング】
Cookieが利用できない場合、データの受渡しにはセッションID"SID"を使います。

■session03.php
<?php
///////////////////////////////////////////
//PHPプログラムの動作テスト3
//session関数セッションIDによる引渡し
///////////////////////////////////////////

session_start();

$_SESSION['test01']="取りあえずセッション関数を使ってみた!";

print "<a href=\"session02.php?".SID."\" target=\"_blank\">実験</a>";
?>

こちらで確認してください。同じ動作が確認できるでしょう。
※できれば携帯電話などの非Cookie対応ブラウザで確認してみてください。
セッションは、これらを応用する事で多彩な動作を行わす事ができます。
session_unset();は全ての値をクリアする場合にボタンに埋め込んで使うのが良いでしょう。

この項はこれで終わりです。少し難しいかもしれませんね。



TOPへ