[PHP-users 8260] Re: $_SESSIONの使い方( 少し長文)

Morikawa [encore-ann] php-users@php.gr.jp
Tue, 25 Jun 2002 11:32:45 +0900


もりかわ esepg です。
すみません、スレッド見落としてました。

> はあ、その点はマニュアルを何度も読んで、重々承知してテストしていたんですが、
> $_SESSION['hist']=$hist;
> とすると、前回の値が保存できないんです。

$hist == '' だとか?前回の値ってことは一回は保存されている!?
$hist の値が$_SESSION['hist']に保存されるべき値でなければ、
当然おかしな値で上書きしちゃいますよね。

もしそうだとすると下の順序でないと動作しない理由も理解できるんですが。
$hist = $_SESSION['hist'];
gootara();
$_SESSION['hist'] = $hist;


> //セッションへ変数を登録 session_register('hist')と同じ?
> $hist=$_SESSION[hist];
> ---- snip ----
> printf("<!-- %s -->\n","\$histがセッションに登録されているか="
>  .(isset($hist) ? "True":"False"));

それで、前回のセッション値を受け取っているのだと解釈すれば、
上記[8182]のコードはすごく正しいことをしているようにも思います。

> //セッションへ変数を登録 session_register('hist')と同じ?

変数を登録じゃなくて値を登録って考えるべきなんかもしれない。。。
このあたり、確かにややこしいかも。言葉が。

http://www.php.net/manual/ja/ref.session.php
「track_vars が有効で register_globals が無効の場合、グローバル変数配列
$HTTP_SESSION_VARSのメンバーのみを セッション変数として登録可能です。
回復されたセッション変数は配列 $HTTP_SESSION_VARSでのみ利用可能です。 」

ということなので、PHP上、あくまでもセッション変数は $_SESSION[hist] 
ってことで。

「register_globals が有効な場合、...セッション変数は対応するグローバル変数
として回復されます。」と対にして考えるとよいかも。
# セッション変数はセッションの変数(たとえばCookieに書かれた名前)で
# PHPの変数と切り離したほうがよいですね、マニュアルを読んでるときは。
# たぶん。。。


もりかわ [ENCORE|ANN]
プログラマ募集: http://it.encore-ann.com/about_rec.php