人気ブログランキング | 話題のタグを見る

[PHP] セッションに挑戦

phpをちゃんと書き始めて2ヶ月ほどですが、
よたよたしながら、果敢にもセッションに挑戦してみました。

ページをまたいで
巨大なデータを読み込んであるオブジェクトを渡したいなぁと
思ったわけなのですね。
何か方法はないかなぁと探していて、
「セッション」と言うのを使えば、
オブジェクトの受け渡しができるらしいと、わかりました。

このあたりの仕様や、推奨される方法は、
php のバージョンごとに色々変化しているようです。
web ページを参考にする場合は、
そのページが書かれた年月日に注意した方が良いみたいです。

まぁ初めてコーディングするお約束で、色々試行錯誤したのですが、
やっとできたので、メモっておきます。

セッションを破棄してしまえば、もうそのデータにはアクセスできないので、
「ログイン」という形でセッションを開始し、
セッションの破棄で「ログアウト」というのができるわけで、
別途、認証用のCookieを持たなくて良いから楽チン。

セッションで保存されたデータにアクセスするには
「セッションID」というのが必要だそうです。
その「セッションID」は、 Cookie で渡す方法と、
CGI 引数として渡す方法があるみたいです。
以下の例は、Cookie を使った場合ですが、
CGI 引数の場合は、
「test.php?ID=<?php echo htmlspecialchars(SID); ?>」とか
「test.php?ID=<?php echo htmlspecialchars(session_id()); ?>)とかして、
ページ間を渡します。

test_obj.phpm
<?php
class Test_obj {
  var $ID ;
  var $DATA ;
  function Test_obj() {  // コンストラクタ
   $this->ID = NULL ;
   $this->DATA = Array() ;
  }
}
?>


データ作成部
require_once 'test_obj.phpm' ;

session_name("test_session") ;
session_start();
$_SESSION["test_obj"] = new Test_obj() ;

$id = '01234' ;
for ($i=0 ; $i<1000 ; $i++) {
 array_push($data_list, $i.'番目') ;
}

$_SESSION["test_obj"]->ID = $id ;
$_SESSION["test_obj"]->DATA = $data_list ;



データ読み込み部
require_once 'test_obj.phpm' ;

session_name("test_session") ;
session_start() ;
$user_id = $_SESSION['test_obj']->ID ;
$user_list = $_SESSION['test_obj']->DATA ;


セッションデータの破棄
session_name("test_session"); // セッション開始
session_start();
session_destroy();

by xiaoxia | 2004-11-18 20:36 | プログラム言語
<< クリスマスに聞きたいクラシック [Ruby] 文字コード変換をする >>