その挙動を確認してみたくて、FF3でCookieを切ってみて、こういうコードを書いてみました。
<?php
ini_set('session.auto_start', 0);
ini_set('session.use_trans_sid', 1);
ini_set('session.use_only_cookies', 0);
ini_set('session.use_cookies',0);
session_start();
echo session_id();
?>
ここでechoされるsession_id()がページを更新する度にIDが変わってしまい、ずっとステートレスな状態になってしまっています。
Cookieが送信されないと毎回別Sessionと看做しているようなのですが、このように毎回SessionIDが変わるという現象においてどういうことが原因として考えられますでしょうか?
当方の環境は以下の通りです。
PHP:5.2.5(Xampp1.6.6a)
OS:Win XP Pro SP3
session_start();
セッションがここで開始されますので、新しいセッションIDになります。
この書き方だと毎回セッションIDが変わるのは仕様どおりです。
お恥ずかしい限りです。失礼しました。
また、URLもしくはhiddenで常にセッションIDを引き渡さない限り
別Sessionになることも同時に理解しました。ありがとうございました。
>ini_set('session.use_trans_sid', 1);
これの戻り値を確認してみてください。
session.use_trans_sidはPHP5以降ではPHP_INI_PERDIRレベルらしいので、
ini_setできないのではないでしょうか?
http://jp2.php.net/manual/ja/ini.list.php
その場合、php.ini、httpd.conf、.htaccessのいずれかに記述すればいけると思います。
ini_get('session.use_trans_sid')したら1でした。
id:hijk05さんのご指摘の通り、リロードする度にstart()が呼ばれてしまうのが原因のようです。
それに、URLにSessionIDを引き渡していないままリロードしているので、毎回別のSessionIDが
振られるのも正しい挙動のように思います。
ご回答ありがとうございました。
URLにsession.nameで引き渡ない限り、別Sessionになるという基本的なことを失念していました。
ご回答ありがとうございました。