HOME   入り口   MENU


No26.毎度おなじみセッションです! ----session_start




変数はページがリロードされるとクリアされてしまうけれど
セッション機構を使うことによってセッション変数の中にいれたデータは
保持することができます。(^_^)
セッション機構を使うには

このページはセッション機構を使いますよ!

という意思表示(笑)が必要です。

それがsession_start();

そうすると上のようにセッション用のカートが用意されます♪

session_start();


異なるページ間でセッションを使ってデータの受け渡しをしたい場合
そのページにはsession_start();を入れてあげる必要があります。
スクリプトページは用意されたセッション(上のカートをイメージしてね)から
その中に入っている変数を使います。
他のページがその中の変数に値を入れてあったら、そのままその値が使えるというわけです。(^_^)

では、使ってみましょー!!!
<?php
session_start();
$_SESSION['a']="竜";
echo $_SESSION['a'];
?>

とやると

と表示されます。
$_SESSION['a']には「竜」というデータが入りました。

じゃあ違うページへジャンプ

「竜」の文字が表示されてましたね。(^_^)
ジャンプ先の「このページのソース」を見てもらうと

echo $_SESSION['a'];//セッション内容を出力


となっいてこのページで作成したセッション変数a
あちらにも渡ってることがわかります。

FORMタグのPOSTやGETで渡さなくてもセッション変数に入れてあげれば
他のページにデータが持ち運べるのです。(べんり〜)

セッション変数が設定されているかどうかはどうやって確かめるでしょう?
<?php
if (isset($_SESSION['a'])){echo "aはあるよ!";}else{echo "aはないよ";}
if (isset($_SESSION['b'])){echo "bはあるよ!";}else{echo "bはないよ";}
?>

issetでセッション変数チェックをしましょう。

aはあるよ!bはないよ

ね♪
普通の変数と同じようにissetで確認できます。
aはあるけれど、bはないと確認できますね。

じゃあ使い終わったセッション変数は?

<?php
unset($_SESSION['a']);
?>

で抹消できます。普通の変数破棄といっしょです。(^_^)

え?今まで変数の破棄なんか意識したことない?

そうですよね〜。私もそうです。(笑)

でもセッション変数はブラウザを閉じるまで、
あるいはphp.iniでのセッションのタイムアウト時間まで
ずっと有効になので、破棄する必要もあるときがあります。
えーと、一番身近な例ではセッションを使ったショッピングカートかな?
買い物が終わったあと買ったものがまだカート中に残ってるのはイヤですね。
そんなとき、必要なくなったときは破棄しましょう。(^_^)


サンプル: こう書くと   ==>    こうなる!

ショッピングカート風。


(オマケ)
セッションはセッションIDで管理されていて、そのセッションIDはCookieとして保存されてます。
なのでブラウザがCookieを許可していない場合、セッション機構が利用できなかったりします。
もしもしCookieを許可しないブラウザも対応したかったら
SIDをURLにつけてページリンクしたり、POSTしたりするとセッション機構が利用できるようになります。


<A HREF="php200309272.php?<?php echo SID; ?>">違うページへジャンプ</A>

--------------------------------------------------------

<FORM ACTION="xxxx.php?<?php echo SID; ?>" METHOD="POST">


  HOME