[PHP-users 17517]セッション変数が取得できない
三枝 隆司
saegusa @ hcu.co.jp
2003年 8月 26日 (火) 17:23:28 JST
初めまして。SAEといいます。
セッションについて(基本的な事かもしれませんが...)教えて下さい。
以下の環境でセッション変数のテストを行っているのですが、
セッション変数のセットはできるのですが、参照がうまく行きません。
やり方が間違っているのか、基地のバグがあるのか、何かご存知の方
教えていただけますでしょうか。
PHP ver4.3.2
Windows2000server Microsoft-IIS/5.0 (ISAPI経由)
test1.phpでセッション変数をセットして、test2.phpで参照しています。
===========test1.php===========
<HTML><BODY>
<FORM NAME="form1" ACTION="test1.php" METHOD="POST">
セッション変数に登録
<input type="text" name="_message" size=30>
<input type="submit" value="送信">
</form><hr>
<?php
session_start();
session_register('mess');
print '<li>セッション名: ' . session_name() .'<BR>';
print '<li>セッションID: ' . session_id() .'<BR>';
print '<li>現在のセッション変数:' . $_SESSION['mess'] .'<BR>';
print '<li>_message=' . $_REQUEST['_message'] .'<BR>';
print '<li>session_is_registered:' . session_is_registered ("mess")
.'<BR>';
$_SESSION['mess'] = $_REQUEST['_message'];
?>
<HR>
<A HREF="test2.php">test2.php</A>
</BODY></HTML>
===========ここまで===========
===========test2.php===========
<HTML><BODY>
<?php
session_start();
session_register('mess');
print '<li>セッション名: ' . session_name() .'<BR>';
print '<li>セッションID: ' . session_id() .'<BR>';
print '<li>現在のセッション変数:' . $_SESSION['mess'] .'<BR>';
print '<li>session_is_registered:' . session_is_registered ("mess")
.'<BR>';
print '<li>isset:' . isset($_SESSION['mess']) .'<BR>';
?>
<HR>
<A HREF="test1.php">test1.php</A>
</BODY></HTML>
===========ここまで===========
test1.phpを開き、INPUTBOXに値を入れて、SUBMITボタンをクリックします。
結果は以下のとおりで、この時点で$_SESSION['mess']が既に取得できていません。
ただし、セッションファイルには値がセットされているように思えます。
========結果========
・セッション名: PHPSESSID
・セッションID: 8391f41320ce71226fbca33fbe1463cc
・現在のセッション変数:
・_message=ssssssss
・session_is_registered:1
========ここまで========
=====セッションファイルの中身(sess_8391f41320ce71226fbca33fbe1463cc)====
mess|s:8:"ssssssss";
========ここまで========
test2.phpへのリンクをクリックすると、セッションIDは正しく取れているようなの
ですが、
セッション変数の値はやはり取得できません。
====test2.phpの結果========
セッション名: PHPSESSID
セッションID: 8391f41320ce71226fbca33fbe1463cc
現在のセッション変数:
session_is_registered:1
isset:
========ここまで========
セッションファイルの中身はかわらず
====セッションファイルの中身(sess_8391f41320ce71226fbca33fbe1463cc)====
mess|s:8:"ssssssss";
========ここまで========
test2.phpを以下のように変更して実行させると
セッションファイルには書きこまれるので、セッションIDの取得と
セッション変数の更新はできるのですが、読み取りはできません。
========test2.php========
<HTML><BODY>
<?php
session_start();
session_register('mess');
print '<li>セッション名: ' . session_name() .'<BR>';
print '<li>セッションID: ' . session_id() .'<BR>';
print '<li>現在のセッション変数:' . $_SESSION['mess'] .'<BR>';
print '<li>session_is_registered:' . session_is_registered ("mess")
.'<BR>';
print '<li>isset:' . isset($_SESSION['mess']) .'<BR>';
$_SESSION['mess']='AAAAAAAAAAAAA';
print '<li>$mess:' . $_SESSION['mess'] .'<BR>';
print '<li>isset:' . isset( $_SESSION['mess']) .'<BR>';
?>
<HR>
<A HREF="test1.php">test1.php</A>
</BODY></HTML>
========ここまで========
===セッションファイルの中身(sess_8391f41320ce71226fbca33fbe1463cc)===
mess|s:13:"AAAAAAAAAAAAA";
========ここまで========
以上です。
PHP-users メーリングリストの案内