Zen Cart を xrea / coreserver の共用 SSL で運用する場合の TIPS です。
「管理画面 -> 一般設定 -> セッション管理の設定」を以下のように設定します。
クッキーに保存するドメイン名の設定 | True |
クッキー利用を必須にする | False |
SSLセッションIDチェック | True |
User Agentチェック | False |
IPアドレスチェック | True |
ロボット(スパイダー)のセッションを防止 | True |
セッション再発行 | True |
IPアドレス変換の設定 | true |
2009/08/26 追記
※以前は [User Agentチェック] を [True] としていましたが、IE8 (Internet Explorer 8) の無責任な仕様とバグのため、[False] としないとセッションの引き継ぎができない場合がありますので仕方がなく [False] としています。
但しこれはセキュリティ上あまり好ましくないので、良い方法を模索中です。
セキュリティ対策を考えると「クッキー利用を必須にする」を TRUE とすべきなのですが、そのような設定で運用すると、SSL ページと非 SSL ページ間で URL のドメイン部が変り、クッキーの引き継ぎが出来なくなります。
また、xrea / coreserver の共用 SSL の仕様のため、Zen Cart のデフォルトの状態では SSL 通信が誤判定され、SSL 通信が外れてしまう事があります。以下のファイルに変更を加え、SSL 通信を誤判定を防ぎます。
includes/init_includes/init_file_db_names.php
変更前(わかりやすい様に途中改行してあります。)
1 2 3 4 5 6 7 8 9 10 11 | /** * set the type of request (secure or not) */ $request_type = ( (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == '1') || (isset($_SERVER['HTTP_X_FORWARDED_BY']) && strstr(strtoupper($_SERVER['HTTP_X_FORWARDED_BY']),'SSL')) || (isset($_SERVER['HTTP_X_FORWARDED_HOST']) && strstr(strtoupper($_SERVER['HTTP_X_FORWARDED_HOST']),'SSL')) || (isset($_SERVER['SCRIPT_URI']) && strtolower(substr($_SERVER['SCRIPT_URI'], 0, 6)) == 'https:') || (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ) ) ? 'SSL' : 'NONSSL'; |
変更後
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | /** * set the type of request (secure or not) for coreserver and xrea by zero-office */ $request_type = ( (isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == '1') || (isset($_SERVER['HTTP_X_FORWARDED_BY']) && strstr(strtoupper($_SERVER['HTTP_X_FORWARDED_BY']),'SSL')) || (isset($_SERVER['HTTP_X_FORWARDED_HOST']) && strstr(strtoupper($_SERVER['HTTP_X_FORWARDED_HOST']),'SSL')) || (isset($_SERVER['SCRIPT_URI']) && strtolower(substr($_SERVER['SCRIPT_URI'], 0, 6)) == 'https:') || (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ) || (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && strstr(strtoupper($_SERVER['HTTP_VIA']), 'SS1.CORESSL.JP:3128')) /* for coreserver*/ || (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && strstr(strtoupper($_SERVER['HTTP_VIA']), 'SS1.XREA.COM:3128')) /* for xrea ss1 */ || (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && strstr(strtoupper($_SERVER['HTTP_VIA']), 'SS2.XREA.COM:3128')) /* for xrea ss2 */ ) ? 'SSL' : 'NONSSL'; |
以前に、 zen-cart.jp の掲示板には、REMOTE_ADDR を ネットワーク内のローカル IP で判定する方法を書きましたが、これをアップデートして、汎用性を持たせてあります。
2009/08/26 追記
※以前は [User Agentチェック] を [True] としていましたが、IE8 (Internet Explorer 8) の無責任な仕様とバグのため、[False] としないとセッションの引き継ぎができない場合がありますので仕方がなく [False] としています。
但しこれはセキュリティ上あまり好ましくないので、良い方法を模索中です。
このモディファイ(カスタマイズ)を、弊社 DOWNLOAD & STORE に登録しました。
無料でご利用いただけますので、是非お試しください。