[PHP-users 5279] Re: session_register 内での配列について

千秋 元宏 php-users@php.gr.jp
Thu, 7 Feb 2002 12:22:27 +0900


宮原さま、setoさまご回答ありがとうございます。

確かに、 session_register()内で配列を使うのは
想定外の使用法かもしれませんね。

自分の疑問のみを小出しにするのは失礼にあたるかと
思いますので、全体の構想と、なぜ配列を利用したいと
考えたかの経緯をざっとお話します。

モノ自体は、ショッピングカーとつきの通販サイトを
想定しています。
PostgreSQLに商品のデータベースをおき、phpで
商品の検索、表示、ショッピングカートの制御を
しようというものです。かなり省略して書かせていただきますが、
例えばこんな感じです。


商品を検索すると、shouhin_hit.php に飛ぶ
 

------ shouhin_hit.php -----

〜省略 pg_connect()後、検索にヒットした商品のデータを受け取る

for --   {            //ヒットした商品数だけループ
 print<<<foo
   <table>      〜                //商品の表示と同時に<form
action="">を
      <form action="cart.php">                 //つけ、選択した商品のsubmit
で商品名や
      <input  [$hinmei=--     $nedan=--] >   // 値段等の情報がcart.phpに渡さ
れる
      <input type="submit"></form>           //
   </table>
  foo;
}

------ cart.php ----------
<?php
session_start();
session_register("count");    //カートの中の商品数
 for ($i=1;$i <= $count_s;$i++) {    //カートの中の商品数分だけ
   session_register("hinmei[$i]");   //配列変数でセッション変数を
   session_register("nedan[$i]");  //登録する
}

〜省略 カート内の表示等
      <form><input type="submit"></form>  //購入申し込み
      sendmail 等の処理
        



というシステムを考えたとき、カート内を保持しておくために
・cookie を使う
・postgreSQLに一時的なデータベースを生成する
・session を使う
という方法が考えられると思います。ただ、
  cookie だと情報量が限られる
  postgreSQL だとuser [nobady あるいは httpd] に
  書き込み権を与える事になるので、セキュリティに問題がある
ということで、session_register ( ) で効率よく配列が利用できない
かなあと考えたわけです。

もう少しほかの手段も含め、考えてみます。
なにかご助言がありましたら、よろしくお願いいたします。


 
                              千秋@タスク