[PHP-users 7860] session.use_cookies が無効時のセッションIDについて

二人乗り php-users@php.gr.jp
Sun, 2 Jun 2002 13:43:59 +0900


どうも、大山です。
いつも参考にさせていただいてます。
1ヶ月程悩んだあげく、未だ答えがわからず
最後の手段として投稿させていただきました。

セッションIDについてなんですが、
あるページでセッションIDを発行しセッションに変数を登録した後、
次のページでそのセッション変数を復元したいのですがうまくいきません。
過去ログも参照しまして、それらしいのを見つけたと思いきや

[PHP-users 7243] POSTメソッドによるセッション情報の受け渡しについて
http://ns1.php.gr.jp/pipermail/php-users/2002-April/007251.html

…誰も返答せず。
こちらの現象としてはなぜか、
セッションIDが次のページでは別のものになってしまうんです。
これが原因だと思うのですが、なかなかうまくいきません。
GET引数として渡しても、hiddenで渡しても違うセッションIDになっているもよ
う。
以下、簡単なサンプルです。

------------------ a.php ------------------
//出力前
<?php
session_start();
$_SESSION["aaa"] = "aaa";

// 無理やりここでprint session_id();とした場合と
// 下記hiddenでのsession_id()とが全く違うという現象の経験あり…
?>

//フォーム部分
<form action="b.php" method="get">
<input type="hidden" name="sid" value="<?php print session_id(); ?>">
<input type="submit" value="送信">

------------------ b.php ------------------
<?php
session_start();
// ここで無理やりprint session_id();とした場合
// 渡されたセッションIDと違うのです。
?>
<html>
<head><title>…セッションのイジワル</title></head>
<body>
<?php print $_SESSION["aaa"]; ?>
</body>
</html>

------------- 出力結果 ------------

// もちろん何も出力せず…
----------------------------------
session_id() のところを SID にしたりもしましたがダメでした。
GET引数のリンクで渡しても同じ結果です。
どうして セッションに登録した値が復元できないのでしょうか?

ためしに、バージョンUPして php4.2.1で試してみましたが同じ結果です。
しかし、session.use_trans_sid=1 の設定にすれば何故かうまくセッションIDを
渡してくれるのです。不思議です。
マニュアルでは明示的にsession_start()とすれば
セッションIDが渡されたかどうが勝手に判断してくれるということなので
その辺で、phpの方がセッションIDを見つけられていないのでは…?
悩みに悩んで、試しに試してみましたが納得のいく答えが見つかりません。

session.use_trans_sid=0 かつ session.use_cookies=0 にした場合の
セッションに登録した値の受け渡し方法はご存知ないでしょうか?
よろしくおねがいします。

…もしかして、これもSuper FAQ?

バージョンは
PHP 4.1.2
Apache 1.3.23
です。
PHP.ini はデフォルトのまま、クッキー無効にした状態です。
どうぞ、よろしくおねがいします。