[PHP-users 8270] Re: $_SESSIONの使い方

Naofumi Kondoh php-users@php.gr.jp
Tue, 25 Jun 2002 14:30:34 +0900


ソフト工房の近藤です。

"Morikawa [encore-ann]" wrote:
> 
> もりかわ esepg です。
...略...
> $hist の値が$_SESSION['hist']に保存されるべき値でなければ、
> 当然おかしな値で上書きしちゃいますよね。
> 
> もしそうだとすると下の順序でないと動作しない理由も理解できるんですが。
> $hist = $_SESSION['hist'];
> gootara();
> $_SESSION['hist'] = $hist;
....略.....

私は、PHP4 のセッション管理を使わないで自前で管理して
いるのですが、PHP4 のセッション変数を使うときは、面倒
なんで、オブジェクトの参照( & )を代入して使っています。

最初に、 $_SESSION['Save'] = &$Save;  を実行しておくと
以後、 $Save->hoge = 'foo';  などとするだけで、いちいち
$_SESSION 配列に代入しないですむので楽です。ご参考迄。

------------------------------------------------------

<xmp>

<script language=PHP>
class save_class { }
ini_set('register_globals', '0');
$Save = new save_class();
session_start();
echo "<pre>[開始時 \$_SESSION ]<br>"; print_r($_SESSION); echo "</pre><hr>";
if (isset($_SESSION['Save'])) $Save = $_SESSION['Save'];
$_SESSION['Save'] = &$Save;
foreach(array('cnt','myday','uniq') as $k){if(!isset($Save->$k))$Save->$k='';}
echo "cnt = {$Save->cnt} uniq = {$Save->uniq} myday = {$Save->myday} <hr>\n";
++$Save->cnt;
$Save->uniq  = md5(uniqid(''));
$Save->myday = date("Y-m-d H:i:s");
$SID = SID;
echo <<< EOD____EOD
<form action="{$PHP_SELF}?{$SID}" method=post>
    <input type=submit><br>
</form>
EOD____EOD;
echo "<pre>[途中 \$_SESSION ]<br>"; print_r($_SESSION); echo "</pre><hr>";
</script>

</xmp>

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 (株)ソフト工房   近藤直文        Email:  nkon@shonan.ne.jp 
http://www.SOFTKOUBOU.co.jp/      http://www.shonan.ne.jp/~nkon/
2002-07-27(土)14:00-16;30 JPUG 業務アプリ分科会 セミナー/勉強会
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/