田中裕之@グリニッジ
tanak****@green*****
2005年 10月 6日 (木) 13:28:58 JST
スズキさん、はまださん、こんにちは。 グリニッジの田中です。 私も、別件でadmin側と、catalog側でのセッション周りの差異、 そして、MS2との違いをチェックしていたのですが、いくつか気が ついたことがありました。 まず、 admin/includes/application_top.php 171行目〜 // lets start our session tep_session_start(); if (function_exists('session_set_cookie_params')) { session_set_cookie_params(0, substr(DIR_WS_ADMIN, 0, -1)); } というところですが、本来であれば、セッションをスタートする前に session_set_cookie_paramsを呼び出す必要があるので、以下の形が 正しいのではと思います。 // lets start our session if (function_exists('session_set_cookie_params')) { session_set_cookie_params(0, substr(DIR_WS_ADMIN, 0, -1)); } tep_session_start(); また、MS2ではsession_set_cookie_params部分は、以下の形になって おりました。 session_set_cookie_params(0, DIR_WS_ADMIN); なぜ末尾の/を切り落とす必要があるのか分かりませんが、 MS2に倣う形で問題がないのではないのかなと思います。 これに合わせて、catalog側も調整し、以下の形で動作確認中です。 ----- catalog/includes/application_top.php 217行目〜 // lets start our session if (isset($HTTP_POST_VARS[tep_session_name()])) { tep_session_id($HTTP_POST_VARS[tep_session_name()]); } elseif ( (getenv('HTTPS') == 'on') && isset($HTTP_GET_VARS[tep_session_name()]) ) { tep_session_id($HTTP_GET_VARS[tep_session_name()]); } if (function_exists('session_set_cookie_params')) { session_set_cookie_params(0, DIR_WS_CATALOG); } ----- admin/includes/application_top.php 171行目〜 // lets start our session if (function_exists('session_set_cookie_params')) { session_set_cookie_params(0, DIR_WS_ADMIN); } tep_session_start(); 当方でも、サーバー環境によって、URLにセッションIDが付いて回る現象が 起きていた場合があったのですが、上記に変更して改善されたようです。 蛇足ですが、html_output.phpのtep_href_linkにて、SSL指定のURL生成では 必ずURLにセッションIDを付けるなっているようですが、これが正しい仕様 なのか悩んでいます。 httpからhttps(またはその逆)に切り換る際にURLにセッションIDをつけて さえあげるれば済むと思うのですが。MS2でもこのように変更されているよ うです。 +------------------------------------------+ Hiroyuki Tanaka <tanak****@green*****> http://www.greenwich.co.jp/ +------------------------------------------+