[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 メーリングリストの案内