[PHP-users 5403] Re: unset($_SESSION['...']) ができない
Toshiyuki Kajii
php-users@php.gr.jp
Thu, 14 Feb 2002 23:17:49 +0900
梶井です。
* Thu, 14 Feb 2002 22:42:12 +0900 (JST)
* Shigeta Hiroyuki <hiro8scp@mbox.nc.kyushu-u.ac.jp> wrote:
>> セッションからこの登録してある変数を削除しようと
>> unset() 関数を呼び出しているのですが、実際は解除されて
>> おらず、他のセッションを使ったページにアクセスすると
>> $_SESSION["object"] が残存していて、困った結果に
>> なっています。
>
>セッションを解除するのはsession_destroy()では
>ないでしょうか。
やりたいことは、ある特定の変数の削除だと思われるので、destroyは
まずいでしょう。
http://www.php.net/manual/ja/function.session-unregister.php
ここを読むと、unsetでいいと思いますけれど、
注意
$_SESSION (またはPHP 4.0.6以前の場合は$HTTP_SESSION_VARS)が使用
されている場合、セッション変数の登録を削除する際に unset()を使用
して下さい。
注意
$HTTP_SESSION_VARS/$_SESSIONを使用している場合、 session_register(),
session_is_registered(), session_unregister()を使用して下さい。
この2つの注意は逆のことを言っているように読めてしまうのですが、
どう理解すればいいのかよくわかりません。
ところで、register_globalsの設定が悪さをしているなんてことはな
いでしょうか。もしregister_globalsがonの場合、
$ojbect = $_SESSION["object"];
となっているので、
unset($_SESSION["object"]);
としても、$objectは残っていますので、その辺の問題かも。
念のために
session_unregister("object");
もあわせてしてみるとか。
*---------------------------------------------------*
Toshiyuki Kajii 梶井 俊幸
e-mail: mikoto@camino.nissan.ne.jp
*---------------------------------------------------*