[PHP-users 10199] session格納法について

S.Okazaki php-users@php.gr.jp
Wed, 18 Sep 2002 15:14:03 +0900


こんにちは、岡崎です。
subjectの付け方が難しかったのですが、次のような問題
にぶつかりました。

ページが "mode" によってが複数に別れたスクリプトがあります。

----a.php-----
case "1":
case "2":
case "3":
   :

それぞれのmodeからデータをPOSTし、次ページで配列で格納してから
sessionに登録しています。
case "1":
  <form action=\"$_SERVER[PHP_SELF]?mode=2\" method=post>
    <input type=text name=\"data1\">
    <input type=text name=\"data2\">
         :
  </form>

case "2":
$ses1=array($_POST[data1],$_POST[data2],・・・);
session_register("ses1");

case "3":
$ses2=array($_POST[data10],$_POST[data11]・・・);
session_register("ses2");

と言った感じです。
何がしたいかと言えば、ページ毎に分けたデータを
$ses1 , $ses2 , $ses3 , …のようにセッションに登録したいのです。

登録が終了し、/tmp/sess_*****(セッションファイル)を見てみると

ses1|a:7:{
  i:0;s:4:"2002";
  i:1;s:1:"9";
  i:2;s:2:"18";
     :
}
ses2|a:19:{
  i:0;s:1:"8";
  i:1;s:3:"202";
  i:2;s:8:"5";
     :
}

ときっちりと別れて登録されていますが、print_r($ses1)で見てみると

Array ( 
         [0] => Array ( [0] => 2002 [1] => 9 [2] => 18 …) //ses1
         [1] => Array( [0] => 8 [1] => 202 [2] => 5 …)    //ses2
)

と、一つの配列として表示されてしまいます。
ses2以下にも同様に全く同じものが登録されています。
また、session_unregister("ses1");
とやれば、全てのセッションデータが削除されます。
どうやら、ses1 = ses2 = … = Array($ses1 , $ses2 , …)
と見なされているようです。

これは正しい仕様なのでしょうか?
よろしくお願い致します。

/_/_/_/_/_/_/_/_/_/_/_/_/_/
Japan Human Base 
Sotaro Okazaki
Email : okazaki@jp-hb.com
/_/_/_/_/_/_/_/_/_/_/_/_/_/