[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
*---------------------------------------------------*