[PHP-users 2093] Re: セッションの基本的な質問

KOYAMA Tetsuji php-users@php.gr.jp
Fri, 14 Sep 2001 20:42:36 +0900


  小山です。

At Fri, 14 Sep 2001 19:44:12 +0900,
安嶋貴志 wrote:
> セッション関数での話なのですが、
>  session_start();
>  session_register("foo");
> と設定しますと、変数$fooに対してセッションIDが作られますよね?

  正確には、「まずセッションIDが作られて、それに対して変数 foo が保存
対象として指定される」ですね。

> それを<a href=next.php?<?=sid?>>でnext.phpに飛ぶようになるのですが、
> next.phpではecho $fooとすれば変数$fooが表示されるというのがsession
> の仕組みだと思っています。

  next.php 内でも、それまでのセッション情報を復元するために
session_start() が必要です。

> では、next.phpから1つ前のページに戻る時にブラウザの「戻る」キー
> (javascript:history.go()でも同様)を使うわけなのですが、戻った先
> の画面が『警告: ページの有効期限切れ』と表示されてしまうのは仕様な
> のでしょうか?もしくは、別の関数が用意されているのでしょうか?
>
> 個人的に可能性のある関数がsession_set_save_handlerだと思うのですが、

  いえ、関連があるのは php.ini のこの設定です。

session.cache_limiter = nocache

  この値を private または public にすれば、おそらく警告画面は出なくな
ると思います。ただし、session に保存している内容によって PHP 側の処理
を変更しているような場合、キャッシュに入った古いページからのアクション
によって不整合が起きることもありますので注意してください。

# ちなみに session_set_save_handler() は、セッション情報をサーバ側に
# 保存する方法を指定する関数で、ブラウザのキャッシュコントロールとは
# 関係ありません。

-- 
	小山 哲志@ビート・クラフト
	koyama@beatcraft.com
	koyama@hoge.org