オリジナルではURLにセッションIDを付加してセッションを管理するタイプのスクリプトでしたが、ある事情から、これまたフリーの拡張スクリプトでセッションIDがつかないようにしました。その結果、本番用にはつかないのですが、同じソースなのに試験用にはついてしまいます。
カンで結構ですのでアドバイス頂けたら幸いです。
ズバリ的中した方には900pt以上差し上げます。
お言葉に甘えてカンで回答です。すいません。
このようなケースでは標記のようなの問題が発生するかもしれません。
セッションをDBに入れている設定になっているのではないでしょうか?
http://www.res-system.com/weblog/item/619
session_set_save_handlerも見直すといいかもしれません。
http://jp.php.net/manual/ja/function.session-set-save-handler.php
あとはphp.iniの設定を見比べる必要がありますね。
(拡張スクリプトを組み込んでセッションIDが付加しないようにした当初は、SEOの関係でただURLから消したいという一心でそこまで考えていなかった。)
拡張スクリプトはURLにセッションIDが付加しないようにするためのものですが、これは現在無効になっています。ですのでこの件は無視して下さい。
本番用、試験用ともに、商品ページURLの文字列作成時にセッションIDを付加する流れとなっていますが、本番用ではセッションIDの変数が空になっているため、本番用のみ単なるURLとなっているという状況です。
なお、クッキーを読み込んでいるというのも正確ではありませんでした。
セッションとは無関係のクッキーは読み込んでいますが、セッションクッキーは読み込んでいないようです。(※昨日までセッションクッキーというものを知りませんでした)
session.use_trans_sid はオフ(0)になっていますし、セッション名の変数(PHPSESSID)を表示させてみましたが、両者とも何も表示されません。
(php.iniではデフォルトのsession.name = PHPSESSIDになっています。)
なお、まだハッキリしませんが、URLに付加するセッションIDは"SID"(クライアントが適当なクッキーを送信しない場合に定義される定数)のようです。
このことからもセッションクッキーは使っていないように思われます。
もうしばらく質問を続けますが、解明できなかった場合は、視点を変えて別の質問をするかもしれません。出来ましたらまたご回答お願いします。
ソース中にもSIDが度々出てきているのですが、どこにも定義されておらず以前から謎でした。"クライアントが適当なクッキーを送信しない場合に定義される定数" とわかって納得です。
セッションクッキーの確認方法に問題があり、判断を誤りました。
それから、セッション名はphp.iniではデフォルトのPHPSESSIDのままですが、
スクリプトの内部でにセッション名を"osCsid"というものに変更しておりました。
セッションをスタートした直後の変数は、
<本番用>
$HTTP_POST_VARS["osCsid"]:
$HTTP_GET_VARS["osCsid"]:
$_COOKIE["osCsid"]:982c7870d48dcd16d1decaff158a5f0d
$HTTP_COOKIE_VARS["osCsid"]:982c7870d48dcd16d1decaff158a5f0d
<試験用>
$HTTP_POST_VARS["osCsid"]:
$HTTP_GET_VARS["osCsid"]:c9c70a28ae08ef6e495cc33b1868dc58
$_COOKIE["osCsid"]:
$HTTP_COOKIE_VARS["osCsid"]:
という具合です。
何らかの理由により、本番用のドメインからのクッキーは受け付け、試験用のドメインからのクッキーは受け付けなくなっている
このようなケースでは標記のようなの問題が発生するかもしれません。