[Svn-src-all:2725] [version-2_12-dev 21624] #1694 (SC_SessionFactory#getInstance モバイルの default が不自然な動作)
Seasoft
admin @ mail.ec-cube.net
2012年 3月 11日 (日) 15:22:55 JST
Subversion committed to /home/svn/open 21624
http://svn.ec-cube.net/open_trac/changeset/21624
┌────────────────────────────┐
│更新者 : Seasoft │
│更新日時: 2012-03-11 15:22:55 +0900 (日, 11 3月 2012)│
└────────────────────────────┘
Log:
--------------------------------------------------------
#1694 (SC_SessionFactory#getInstance モバイルの default が不自然な動作)
#1695 (同一ホストに複数の EC-CUBE や他の PHP アプリケーションを導入した場合、セッションキーを共有する)
#1613 (typo修正・ソース整形・ソースコメントの改善)
Changed: [U:修正,A:追加,D:削除]
--------------------------------------------------------
U branches/version-2_12-dev/data/class/SC_Cookie.php
U branches/version-2_12-dev/data/class/SC_SessionFactory.php
U branches/version-2_12-dev/data/class/sessionfactory/SC_SessionFactory_UseCookie.php
変更: branches/version-2_12-dev/data/class/SC_Cookie.php
===================================================================
--- branches/version-2_12-dev/data/class/SC_Cookie.php 2012-03-09 12:14:46 UTC (rev 21623)
+++ branches/version-2_12-dev/data/class/SC_Cookie.php 2012-03-11 06:22:55 UTC (rev 21624)
@@ -21,7 +21,10 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-/* 日時表示用クラス */
+/**
+ * クッキー用クラス
+ *
+ */
class SC_Cookie {
var $expire;
@@ -34,10 +37,14 @@
// クッキー書き込み
function setCookie($key, $val) {
- setcookie($key, $val, $this->expire, '/', DOMAIN_NAME);
+ setcookie($key, $val, $this->expire, ROOT_URLPATH, DOMAIN_NAME);
}
- // クッキー取得
+ /**
+ * クッキー取得
+ *
+ * EC-CUBE をURLパスルート以外にインストールしている場合、上位ディレクトリの値も(劣後ではあるが)取得する点に留意。
+ */
function getCookie($key) {
return isset($_COOKIE[$key]) ? $_COOKIE[$key] : null;
}
変更: branches/version-2_12-dev/data/class/SC_SessionFactory.php
===================================================================
--- branches/version-2_12-dev/data/class/SC_SessionFactory.php 2012-03-09 12:14:46 UTC (rev 21623)
+++ branches/version-2_12-dev/data/class/SC_SessionFactory.php 2012-03-11 06:22:55 UTC (rev 21624)
@@ -68,14 +68,14 @@
// クッキーを使用する
case 'useCookie':
+ default:
// モバイルの場合はSC_SessionFactory_UseRequestを使用する
if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE) {
$session = new SC_SessionFactory_UseRequest;
$session->setState('mobile');
- break;
+ } else {
+ $session = new SC_SessionFactory_UseCookie;
}
- default:
- $session = new SC_SessionFactory_UseCookie;
break;
}
変更: branches/version-2_12-dev/data/class/sessionfactory/SC_SessionFactory_UseCookie.php
===================================================================
--- branches/version-2_12-dev/data/class/sessionfactory/SC_SessionFactory_UseCookie.php 2012-03-09 12:14:46 UTC (rev 21623)
+++ branches/version-2_12-dev/data/class/sessionfactory/SC_SessionFactory_UseCookie.php 2012-03-11 06:22:55 UTC (rev 21624)
@@ -40,14 +40,14 @@
/**
* セッションパラメーターの指定
* ・ブラウザを閉じるまで有効
- * ・すべてのパスで有効
- * FIXME 多分、同一ホスト名に複数の EC-CUBE をインストールした場合に望ましくない状態である。特段の事由がなければ、アプリケーションルートを指定すべきだし、あればコメントに残すべき。
+ * ・EC-CUBE ルート配下で有効
* ・同じドメイン間で共有
+ * FIXME セッションキーのキーが PHP デフォルトのため、上位ディレクトリーで定義があると、その値で動作すると考えられる。
**/
function initSession() {
ini_set('session.cache_limiter', 'none');
if (session_id() === '') {
- session_set_cookie_params(0, '/', DOMAIN_NAME);
+ session_set_cookie_params(0, ROOT_URLPATH, DOMAIN_NAME);
if (!ini_get('session.auto_start')) {
// セッション開始
session_start();
Svn-src-all メーリングリストの案内