[PHP-users 17107]Re: Sessionの保持ができない問題

Akihiro Kawamoto kawamoto @ sea.biglobe.ne.jp
2003年 8月 1日 (金) 00:55:04 JST


こんばんは、河本です。

> HTTPプロトコルによる通信は基本的に一回のrequest/responseで
> セッションを終了します。
> ユーザが入力したデータもサーバが生成したデータも次のrequest
> の時には消滅しています。
> ですから、a.phpでとあるsession_idの(PHPの)セッションを利用
> していたという情報はb.phpをrequestしたときには消滅しています。
なるほど、非常によく解かる説明ありがとうございました。
Session自体が保持されない問題について納得できました。

しかし・・・こうなると、一つ大きな問題が出てしまいます。
本来の目的(?)である、Sessionの保持ができなくなってしまいませんか?
PHPとはまったく違うものなのかもしれませんが、ASPのセッションでは、
最初にセッションを発行すれば、基本的にブラウザを閉じない限りは、
Actionを行ってページ移動などを行っても、
Session自体は保持し続けられるような仕様だと思うのですが・・・
これに代わるものは、みなさまはPHPでどのように作られているのでしょうか?

> そのため、新しくページをrequestするごとにその前のページで
> セッションを利用していたということと、そのセッションのIDを
> PHPに教えてセッションの復帰を指示してあげなければいけません。
セッションのIDを、formやURLに埋め込み、
セッションIDを渡す(b.phpに教えてやる)ところまでは問題なく動作します。
しかし、session_id("〜〜〜")で、引き継いだセッションIDに指定し、
session_start()を行うと、確かに同じセッションIDにはなりますが、
a.phpでセッションを保存する一時フォルダ(/tmp等)のファイルが
b.phpでstartされた時に、新規ファイルで上書きされるような形になり、
格納したデータが消えてしまいます。

やはり、個々の値に関しては、その都度セッションID等をキーにして、
DBなどで管理して保持するしかないのでしょうか?
変数が多いため、ページ移動の際に、できればformやURLに埋め込むのではな
く、
1つの何か(変数・配列・構造体など)でページ移動をしたいと考えております。

長々と続いてしまっておりますが、よろしくお願い致します。

-- Akihiro Kawamoto




PHP-users メーリングリストの案内