☆スキーウエアNOW ON SALE!!☆★2ピース上下スーツ★ 【エァウォーク】幼児用ウエアAWT‐5524 ピンク(桃色)サイズ:100・110・120
沖縄産スナックパイン1玉(500g〜800g) N−95D23L/C3 technorati RobotReplay 2004/09/30から 今日: 昨日: 最近のツッコミ10発 |
2008-03-11 EC-CUBE更新内容 [長年日記]_ [EC-CUBE] 更新内容EC-CUBEの更新内容が自動でメール送信されるように先日仕込んでみた。その第1通目が、届いた。 Date: 2008-03-11 13:01:25 +0900 (Tue, 11 Mar 2008) New Revision: 14 Modified: eccube2/trunk/data/class/pages/admin/design/LC_Page_Admin_Design_Template.php Log: auto commit Modified: eccube2/trunk/data/class/pages/admin/design/LC_Page_Admin_Design_Template.php =================================================================== --- eccube2/trunk/data/class/pages/admin/design/LC_Page_Admin_Design_Template.php 2008-03-07 00:36:02 UTC (rev 13) +++ eccube2/trunk/data/class/pages/admin/design/LC_Page_Admin_Design_Template.php 2008-03-11 04:01:25 UTC (rev 14) @@ -31,7 +31,7 @@ * * @package Page * @author LOCKON CO.,LTD. - * @version $Id: LC_Page_Admin_Design_Template.php 16769 2007-11-08 14:47:40Z adachi $ + * @version $Id: LC_Page_Admin_Design_Template.php 17117 2008-03-11 04:04:03Z satou $ */ class LC_Page_Admin_Design_Template extends LC_Page { @@ -111,12 +111,12 @@ // DBへ使用するテンプレートを登録 $this->lfRegisterTemplate($template_code); - // テンプレートの上書き - $this->lfChangeTemplate($template_code); - // XXX コンパイルファイルのクリア処理を行う $objView->_smarty->clear_compiled_tpl(); + // ブロック位置を更新 + $this->lfChangeBloc($template_code); + // 完了メッセージ $this->tpl_onload="alert('登録が完了しました。');"; break; @@ -252,21 +252,46 @@ $masterData->createCache("mtb_constants", $mtb_constants, true, array("id", "remarks", "rank")); } + /** - * テンプレートを上書きコピーする. + * ブロック位置の更新 */ - function lfChangeTemplate($template_code){ - $from = TPL_PKG_PATH . $template_code . '/user_edit/'; - - if (!file_exists($from)) { - $mess = $from . 'は存在しません'; - } else { - $to = USER_PATH; - $mess = sfCopyDir($from, $to, '', true); + function lfChangeBloc($template_code) { + $objQuery = new SC_Query(); + $filepath = USER_TEMPLATE_PATH. $template_code. "/sql/update_bloc.sql"; + + // ブロック位置更新SQLファイル有 + if(file_exists($filepath)) { + if($fp = fopen($filepath, "r")) { + $sql = fread($fp, filesize($filepath)); + fclose($fp); + } + // 改行、タブを1スペースに変換 + $sql = preg_replace("/[\r\n\t]/", " " ,$sql); + $sql_split = split(";", $sql); + foreach($sql_split as $key => $val){ + if (trim($val) != "") { + $objQuery->query($val); + } + } } - return $mess; } + /** + * テンプレートパッケージの削除 + */ + function lfDeleteTemplate($template_code) { + // DB更新 + $objQuery = new SC_Query(); + $objQuery->delete('dtb_templates', 'template_code = ?', array($template_code)); + // テンプレート削除 + $templates_dir = SMARTY_TEMPLATES_DIR. $template_code. "/"; + SC_Utils_Ex::sfDelFile($templates_dir); + // ユーザーデータ削除 + $user_dir = USER_TEMPLATE_PATH. $template_code. "/"; + SC_Utils_Ex::sfDelFile($user_dir); + } + function lfGetAllTemplates() { $objQuery = new SC_Query(); $arrRet = $objQuery->select('*', 'dtb_templates'); @@ -274,12 +299,5 @@ return $arrRet; } - - function lfDeleteTemplate($template_code) { - $objQuery = new SC_Query(); - $objQuery->delete('dtb_templates', 'template_code = ?', array($template_code)); - - SC_Utils_Ex::sfDelFile(TPL_PKG_PATH . $template_code); - } } ?> _ [EC-CUBE] 更新内容2Date: 2008-03-11 15:01:34 +0900 (Tue, 11 Mar 2008) New Revision: 15 Modified: eccube2/trunk/data/class/helper/SC_Helper_Mobile.php eccube2/trunk/data/class/pages/LC_Page.php eccube2/trunk/data/class/pages/frontparts/LC_Page_FrontParts_LoginCheck.php eccube2/trunk/data/class/util/SC_Utils.php eccube2/trunk/data/mtb_constants_init.php eccube2/trunk/html/admin/require.php eccube2/trunk/html/install/sql/insert_data.sql eccube2/trunk/html/mobile/require.php eccube2/trunk/html/require.php Log: auto commit Modified: eccube2/trunk/data/class/helper/SC_Helper_Mobile.php =================================================================== --- eccube2/trunk/data/class/helper/SC_Helper_Mobile.php 2008-03-11 04:01:25 UTC (rev 14) +++ eccube2/trunk/data/class/helper/SC_Helper_Mobile.php 2008-03-11 06:01:34 UTC (rev 15) @@ -31,7 +31,7 @@ * * @package Helper * @author LOCKON CO.,LTD. - * @version $Id: SC_Helper_Mobile.php 16582 2007-10-29 03:06:29Z nanasess $ + * @version $Id: SC_Helper_Mobile.php 17118 2008-03-11 05:58:45Z adachi $ */ class SC_Helper_Mobile { @@ -249,7 +249,13 @@ if (basename(dirname($_SERVER['SCRIPT_NAME'])) != 'unsupported') { $this->lfMobileCheckCompatibility(); - $this->lfMobileInitSession(); + /** + * 共有SSL対応のため、SC_SessionFactory_useRequest::initSession()へ移行 + * また、他のセッション関連メソッドもSC_SessionFactory_useRequestのインスタンスから呼び出すこと + * + * @see data/class/session/sessionfactory/SC_SessionFactory_useRequest.php + */ + // $this->lfMobileInitSession(); } $this->lfMobileInitOutput(); Modified: eccube2/trunk/data/class/pages/LC_Page.php =================================================================== --- eccube2/trunk/data/class/pages/LC_Page.php 2008-03-11 04:01:25 UTC (rev 14) +++ eccube2/trunk/data/class/pages/LC_Page.php 2008-03-11 06:01:34 UTC (rev 15) @@ -105,7 +105,7 @@ * @param string $url リダイレクト先 URL * @param boolean $isMobile モバイル用にセッションIDを付与する場合 true * @return void|boolean $url に SITE_URL 及び, SSL_URL を含まない場合 false, - * 正常に遷移可能な場合は, $url の URL へ遷移する. + * 正常に遷移可能な場合は, $url の ロケーションヘッダを出力する. * @see Net_URL */ function sendRedirect($url, $isMobile = false) { @@ -117,11 +117,15 @@ if (!empty($_SERVER['QUERY_STRING'])) { $netURL->addRawQueryString($_SERVER['QUERY_STRING']); } - if ($isMobile) { + + $session = SC_SessionFactory::getInstance(); + if ($isMobile || $session->useCookie() == false) { $netURL->addQueryString(session_name(), session_id()); } + $netURL->addQueryString(TRANSACTION_ID_NAME, $this->getToken()); header("Location: " . $netURL->getURL()); + return; } return false; } Modified: eccube2/trunk/data/class/pages/frontparts/LC_Page_FrontParts_LoginCheck.php =================================================================== --- eccube2/trunk/data/class/pages/frontparts/LC_Page_FrontParts_LoginCheck.php 2008-03-11 04:01:25 UTC (rev 14) +++ eccube2/trunk/data/class/pages/frontparts/LC_Page_FrontParts_LoginCheck.php 2008-03-11 06:01:34 UTC (rev 15) @@ -90,7 +90,7 @@ if(count($arrErr) == 0) { if($objCustomer->getCustomerDataFromEmailPass($arrForm['login_pass'], $arrForm['login_email'], true)) { - $this->sendRedirect($this->getLocation($_POST['url'])); + $this->sendRedirect($this->getLocation($_POST['url'], array(), false)); exit; } else { $arrForm['login_email'] = strtolower($arrForm['login_email']); @@ -106,7 +106,7 @@ } } else { // 入力エラーの場合、元のアドレスに戻す。 - $this->sendRedirect($this->getLocation($_POST['url'])); + $this->sendRedirect($this->getLocation($_POST['url'], array(), false)); exit; } break; @@ -116,9 +116,9 @@ $mypage_url_search = strpos('.'.$_POST['url'], "mypage"); //マイページログイン中はログイン画面へ移行 if ($mypage_url_search == 2){ - $this->sendRedirect($this->getLocation(URL_DIR . "mypage/login.php")); + $this->sendRedirect($this->getLocation(URL_DIR . "mypage/login.php", array(), false)); }else{ - $this->sendRedirect($this->getLocation($_POST['url'])); + $this->sendRedirect($this->getLocation($_POST['url'], array(), false)); } exit; break; Modified: eccube2/trunk/data/class/util/SC_Utils.php =================================================================== --- eccube2/trunk/data/class/util/SC_Utils.php 2008-03-11 04:01:25 UTC (rev 14) +++ eccube2/trunk/data/class/util/SC_Utils.php 2008-03-11 06:01:34 UTC (rev 15) @@ -955,28 +955,13 @@ return $arrRet; } - /* ドメイン間で有効なセッションのスタート */ - function sfDomainSessionStart() { - $ret = session_id(); - /* - ヘッダーを送信していてもsession_start()が必要なページがあるので - コメントアウトしておく - if($ret == "" && !headers_sent()) { - */ - if($ret == "") { - /* セッションパラメータの指定 - ・ブラウザを閉じるまで有効 - ・すべてのパスで有効 - ・同じドメイン間で共有 */ - session_set_cookie_params (0, "/", DOMAIN_NAME); + /** + * ドメイン間で有効なセッションのスタート + * 共有SSL対応のための修正により、この関数は廃止します。 + * セッションはrequire.phpを読み込んだ際に開始されます。 + */ + function sfDomainSessionStart() {} - if(!ini_get("session.auto_start")){ - // セッション開始 - session_start(); - } - } - } - /* 文字列に強制的に改行を入れる */ function sfPutBR($str, $size) { $i = 0; @@ -1913,10 +1898,10 @@ return $str; } - + /** * 配列をテーブルタグで出力する。 - * + * * @return string */ function getTableTag($array) { @@ -1926,11 +1911,11 @@ $html.="<th>$key</th>"; } $html.= "</tr>"; - + $cnt = count($array); - + for($i = 0; $i < $cnt; $i++) { - $html.= "<tr>"; + $html.= "<tr>"; foreach($array[$i] as $val) { $html.="<td>$val</td>"; } Modified: eccube2/trunk/data/mtb_constants_init.php =================================================================== --- eccube2/trunk/data/mtb_constants_init.php 2008-03-11 04:01:25 UTC (rev 14) +++ eccube2/trunk/data/mtb_constants_init.php 2008-03-11 06:01:34 UTC (rev 15) @@ -624,6 +624,10 @@ define('MOBILE_URL_SHOP_COMPLETE', MOBILE_URL_DIR . "shopping/complete.php"); /** モジュール追加用画面 */ define('MOBILE_URL_SHOP_MODULE', MOBILE_URL_DIR . "shopping/load_payment_module.php"); +/** セッション維持の方法 */ +define('SESSION_KEEP_METHOD', 'useCookie'); +/** セッションの存続時間 (秒) */ +define('SESSION_LIFETIME', 1800); /** オーナーズストアURL */ define('OSTORE_URL', "http://store.ec-cube.net/"); /** オーナーズストアURL */ Modified: eccube2/trunk/html/admin/require.php =================================================================== --- eccube2/trunk/html/admin/require.php 2008-03-11 04:01:25 UTC (rev 14) +++ eccube2/trunk/html/admin/require.php 2008-03-11 06:01:34 UTC (rev 15) @@ -68,10 +68,14 @@ require_once($include_dir . "/.." . HTML2DATA_DIR . "module/Mail.php"); require_once($include_dir . "/.." . HTML2DATA_DIR . "module/Mail/mime.php"); - -// セッションハンドラ開始 -$objSession = new SC_Helper_Session_Ex(); // インストールチェック SC_Utils_Ex::sfInitInstall(); + +// セッションハンドラ開始 +$objSession = new SC_Helper_Session_Ex(); +// セッション初期化・開始 +require_once CLASS_PATH . 'session/SC_SessionFactory.php'; +$sessionFactory = SC_SessionFactory::getInstance(); +$sessionFactory->initSession(); ?> Modified: eccube2/trunk/html/install/sql/insert_data.sql =================================================================== --- eccube2/trunk/html/install/sql/insert_data.sql 2008-03-11 04:01:25 UTC (rev 14) +++ eccube2/trunk/html/install/sql/insert_data.sql 2008-03-11 06:01:34 UTC (rev 15) @@ -1046,6 +1046,8 @@ INSERT INTO mtb_constants VALUES ('MOBILE_DETAIL_P_HTML', 'MOBILE_URL_DIR . "products/detail.php?product_id="', 415,'商品詳細(HTML出力)'); INSERT INTO mtb_constants VALUES ('MOBILE_URL_SHOP_COMPLETE', 'MOBILE_URL_DIR . "shopping/complete.php"', 416,'購入完了画面'); INSERT INTO mtb_constants VALUES ('MOBILE_URL_SHOP_MODULE', 'MOBILE_URL_DIR . "shopping/load_payment_module.php"', 417,'モジュール追加用画面'); +INSERT INTO mtb_constants VALUES ('SESSION_KEEP_METHOD', '"useCookie"', 418,'セッション維持方法:useCookie|useRequest'); +INSERT INTO mtb_constants VALUES ('SESSION_LIFETIME', '"1800"', 419,'セッション維持方法:useCookie|useRequest'); INSERT INTO mtb_constants VALUES ('OSTORE_URL', '"http://store.ec-cube.net/"', 500, 'オーナーズストアURL'); INSERT INTO mtb_constants VALUES ('OSTORE_SSLURL', '"https://store.ec-cube.net/"', 501, 'オーナーズストアURL'); INSERT INTO mtb_constants VALUES ('OSTORE_LOG_PATH', 'DATA_PATH . "logs/ownersstore.log"', 502, 'オーナーズストアログパス'); @@ -1070,4 +1072,4 @@ INSERT INTO mtb_constants VALUES ('OSTORE_E_C_PERMISSION', '"2009"', 521, 'オーナーズストア通信エラーコード'); INSERT INTO mtb_constants VALUES ('OSTORE_E_C_BATCH_ERR', '"2010"', 522, 'オーナーズストア通信エラーコード'); -INSERT INTO dtb_module (module_id,module_code,module_name,update_date,create_date)values(0,0,'patch',now(),now()); \ No newline at end of file +INSERT INTO dtb_module (module_id,module_code,module_name,update_date,create_date)values(0,0,'patch',now(),now()); Modified: eccube2/trunk/html/mobile/require.php =================================================================== --- eccube2/trunk/html/mobile/require.php 2008-03-11 04:01:25 UTC (rev 14) +++ eccube2/trunk/html/mobile/require.php 2008-03-11 06:01:34 UTC (rev 15) @@ -79,6 +79,11 @@ // セッションハンドラ開始 $objSession = new SC_Helper_Session_Ex(); +// セッション初期化・開始 +require_once CLASS_PATH . 'session/SC_SessionFactory.php'; +$sessionFactory = SC_SessionFactory::getInstance(); +$sessionFactory->initSession(); + // モバイルサイト用の初期処理を実行する。 if (!defined('SKIP_MOBILE_INIT')) { $objMobile = new SC_Helper_Mobile_Ex(); Modified: eccube2/trunk/html/require.php =================================================================== --- eccube2/trunk/html/require.php 2008-03-11 04:01:25 UTC (rev 14) +++ eccube2/trunk/html/require.php 2008-03-11 06:01:34 UTC (rev 15) @@ -91,17 +91,22 @@ } else { $url = MOBILE_SITE_URL; } - + if (preg_match('|^' . URL_DIR . '(.*)$|', $_SERVER['REQUEST_URI'], $matches)) { $path = $matches[1]; } else { $path = ''; } - + header("Location: ". SC_Utils_Ex::sfRmDupSlash($url . $path)); exit; } +// セッション初期化・開始 +require_once CLASS_PATH . 'session/SC_SessionFactory.php'; +$sessionFactory = SC_SessionFactory::getInstance(); +$sessionFactory->initSession(); + // 絵文字変換 (除去) フィルターを組み込む。 ob_start(array('SC_MobileEmoji', 'handler')); ?> _ [EC-CUBE] 更新内容3Date: 2008-03-11 16:01:35 +0900 (Tue, 11 Mar 2008) New Revision: 16 Modified: eccube2/trunk/data/class/helper/SC_Helper_Mobile.php Log: auto commit Modified: eccube2/trunk/data/class/helper/SC_Helper_Mobile.php =================================================================== --- eccube2/trunk/data/class/helper/SC_Helper_Mobile.php 2008-03-11 06:01:34 UTC (rev 15) +++ eccube2/trunk/data/class/helper/SC_Helper_Mobile.php 2008-03-11 07:01:35 UTC (rev 16) @@ -31,7 +31,7 @@ * * @package Helper * @author LOCKON CO.,LTD. - * @version $Id: SC_Helper_Mobile.php 17118 2008-03-11 05:58:45Z adachi $ + * @version $Id: SC_Helper_Mobile.php 17119 2008-03-11 06:19:26Z adachi $ */ class SC_Helper_Mobile { @@ -250,10 +250,10 @@ if (basename(dirname($_SERVER['SCRIPT_NAME'])) != 'unsupported') { $this->lfMobileCheckCompatibility(); /** - * 共有SSL対応のため、SC_SessionFactory_useRequest::initSession()へ移行 - * また、他のセッション関連メソッドもSC_SessionFactory_useRequestのインスタンスから呼び出すこと + * 共有SSL対応のため、SC_SessionFactory_UseRequest::initSession()へ移行 + * また、他のセッション関連メソッドもSC_SessionFactory_UseRequestのインスタンスから呼び出すこと * - * @see data/class/session/sessionfactory/SC_SessionFactory_useRequest.php + * @see data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php */ // $this->lfMobileInitSession(); } _ [EC-CUBE] 更新内容4Date: 2008-03-11 17:08:23 +0900 (Tue, 11 Mar 2008) New Revision: 17 Added: eccube2/trunk/data/class/session/ eccube2/trunk/data/class/session/SC_SessionFactory.php eccube2/trunk/data/class/session/sessionfactory/ eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseCookie.php eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php eccube2/trunk/html/user_data/packages/default/sql/ eccube2/trunk/html/user_data/packages/default/sql/update_bloc.sql Log: auto commit Added: eccube2/trunk/data/class/session/SC_SessionFactory.php =================================================================== --- eccube2/trunk/data/class/session/SC_SessionFactory.php (rev 0) +++ eccube2/trunk/data/class/session/SC_SessionFactory.php 2008-03-11 08:08:23 UTC (rev 17) @@ -0,0 +1,89 @@ +setState('mobile') + : $session->setState('pc'); + break; + + // クッキーを使用する + case 'useCookie': + default: + $session = new SC_SessionFactory_UseCookie; + break; + } + + return $session; + } + + /** + * セッションの初期化を行う. + * + */ + function initSession() {} + + /** + * Cookieを使用するかどうかを返す. + * + * @return boolean + */ + function useCookie() {} + +} +/* + * Local variables: + * coding: utf-8 + * End: + */ +?> Added: eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseCookie.php =================================================================== --- eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseCookie.php (rev 0) +++ eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseCookie.php 2008-03-11 08:08:23 UTC (rev 17) @@ -0,0 +1,75 @@ + Added: eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php =================================================================== --- eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php (rev 0) +++ eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php 2008-03-11 08:08:23 UTC (rev 17) @@ -0,0 +1,513 @@ +state = new LC_UseRequest_State_Mobile; + break; + + case 'pc': + default: + $this->state = new LC_UseRequest_State_PC; + break; + } + } + + /** + * Cookieを使用するかどうか + * + * @return boolean 常にfalseを返す + */ + function useCookie() { + return false; + } + + /** + * dtb_mobile_ext_session_id テーブルを検索してセッションIDを取得する。 + * PCサイトでもモバイルサイトでもこのテーブルを利用する. + * + * @return string|null 取得したセッションIDを返す。 + * 取得できなかった場合は null を返す。 + */ + function getExtSessionId() { + if (!preg_match('|^' . URL_DIR . '(.*)$|', $_SERVER['SCRIPT_NAME'], $matches)) { + return null; + } + + $url = $matches[1]; + $lifetime = $this->state->getLifeTime(); + $time = date('Y-m-d H:i:s', time() - $lifetime); + $objQuery = new SC_Query; + + foreach ($_REQUEST as $key => $value) { + $session_id = $objQuery->get('dtb_mobile_ext_session_id', 'session_id', + 'param_key = ? AND param_value = ? AND url = ? AND create_date >= ?', + array($key, $value, $url, $time)); + if (isset($session_id)) { + return $session_id; + } + } + + return null; + } + + /** + * 外部サイト連携用にセッションIDとパラメーターの組み合わせを保存する。 + * + * @param string $param_key パラメーター名 + * @param string $param_value パラメーター値 + * @param string $url URL + * @return void + */ + function setExtSessionId($param_key, $param_value, $url) { + $objQuery = new SC_Query; + + // GC + $lifetime = $this->state->getLifeTime(); + $time = date('Y-m-d H:i:s', time() - $lifetime); + $objQuery->delete('dtb_mobile_ext_session_id', 'create_date < ?', array($time)); + + $arrValues = array('session_id' => session_id(), + 'param_key' => $param_key, + 'param_value' => $param_value, + 'url' => $url); + + $objQuery->insert('dtb_mobile_ext_session_id', $arrValues); + } + + /** + * セッションデータが有効かどうかをチェックする。 + * + * @return boolean セッションデータが有効な場合は true、無効な場合は false を返す。 + */ + function validateSession() { + return $this->state->validateSessionData(); + } + + /** + * パラメーターから有効なセッションIDを取得する。 + * + * @return string|false 取得した有効なセッションIDを返す。 + * 取得できなかった場合は false を返す。 + */ + function getSessionId() { + // パラメーターからセッションIDを取得する。 + $sessionId = @$_POST[session_name()]; + if (!isset($sessionId)) { + $sessionId = @$_GET[session_name()]; + } + if (!isset($sessionId)) { + $sessionId = $this->getExtSessionId(); + } + if (!isset($sessionId)) { + return false; + } + + // セッションIDの存在をチェックする。 + $objSession = new SC_Helper_Session_Ex(); + if ($objSession->sfSessRead($sessionId) === null) { + GC_Utils_Ex::gfPrintLog("Non-existent session id : sid=$sessionId"); + return false; + } + return session_id($sessionId); + } + + /** + * セッション初期処理を行う。 + * + * @return void + */ + function initSession() { + // セッションIDの受け渡しにクッキーを使用しない。 + ini_set('session.use_cookies', '0'); + ini_set('session.use_trans_sid', '1'); + + // パラメーターから有効なセッションIDを取得する。 + $sessionId = $this->getSessionId(); + + session_start(); + + // セッションIDまたはセッションデータが無効な場合は、セッションIDを再生成 + // し、セッションデータを初期化する。 + if ($sessionId === false || !$this->validateSession()) { + session_regenerate_id(true); + // セッションデータの初期化 + $this->state->inisializeSessionData(); + + // 新しいセッションIDを付加してリダイレクトする。 + if ($_SERVER['REQUEST_METHOD'] == 'GET') { + // GET の場合は同じページにリダイレクトする。 + $objMobile = new SC_Helper_Mobile_Ex; + header('Location: ' . $objMobile->gfAddSessionId()); + } else { + // GET 以外の場合はトップページへリダイレクトする。 + header('Location: ' . URL_SITE_TOP . '?' . SID); + } + exit; + } + + // 有効期限を更新する. + $this->state->updateExpire(); + } +} +/** + * セッションデータ管理クラスの基底クラス + * + */ +class LC_UseRequest_State { + /** 名前空間(pc/mobile) */ + var $namespace = ''; + /** 有効期間 */ + var $lifetime = 0; + /** エラーチェック関数名の配列 */ + var $validate = array(); + + /** + * 名前空間を取得する + * + * @return string + */ + function getNameSpace() { return $this->namespace; } + + /** + * 有効期間を取得する + * + * @return integer + */ + function getLifeTime() { return $this->lifetime; } + + /** + * セッションデータが設定されているかを判定する. + * $_SESSION[$namespace]の値が配列の場合に + * trueを返す. + * + * @return boolean + */ + function validateNameSpace() { + $namespace = $this->getNameSpace(); + if (isset($_SESSION[$namespace]) && is_array($_SESSION[$namespace])) { + return true; + } + GC_Utils_Ex::gfPrintLog("NameSpace $namespace not found in session data : sid=" . session_id()); + return false; + } + + /** + * セッションのデータを取得する + * 取得するデータは$_SESSION[$namespace][$key]となる. + * + * @param string $key + * @return mixed|null + */ + function getValue($key) { + $namespace = $this->getNameSpace(); + return isset($_SESSION[$namespace][$key]) + ? $_SESSION[$namespace][$key] + : null; + } + + /** + * セッションにデータを登録する. + * $_SESSION[$namespace][$key] = $valueの形で登録される. + * + * @param string $key + * @param mixed $value + */ + function setValue($key, $value) { + $namespace = $this->getNameSpace(); + $_SESSION[$namespace][$key] = $value; + } + + /** + * 有効期限を取得する. + * + * @return integer + */ + function getExpire() { + return $this->getValue('expires'); + } + + /** + * 有効期限を設定する. + * + */ + function updateExpire() { + $lifetime = $this->getLifeTime(); + $this->setValue('expires', time() + $lifetime); + } + + /** + * 有効期限内かどうかを判定する. + * + * @return boolean + */ + function validateExpire() { + $expire = $this->getExpire(); + if (intval($expire) > time()) { + return true; + } + $date = date('Y/m/d H:i:s', $expire); + GC_Utils_Ex::gfPrintLog("Session expired at $date : sid=" . session_id()); + return false; + } + + /** + * IPアドレスを取得する. + * + * @return string + */ + function getIp() { + return $this->getValue('ip'); + } + + /** + * IPアドレスを設定する. + * + */ + function updateIp() { + $this->setValue('ip', $_SERVER['REMOTE_ADDR']); + } + + /** + * REMOTE_ADDRとセッション中のIPが同じかどうかを判定する. + * 同じ場合にtrueが返る + * + * @return boolean + */ + function validateIp() { + $ip = $this->getIp(); + if (!empty($_SERVER['REMOTE_ADDR']) + && $ip === $_SERVER['REMOTE_ADDR']) { + + return true; + } + + $msg = sprintf('Ip Addr mismatch : %s != %s(expected) : sid=%s', + $_SERVER['REMOTE_ADDR'], $ip, session_id()); + GC_Utils_Ex::gfPrintLog($msg); + return false; + } + + /** + * UserAgentもしくは携帯の機種名を取得する. + * + * @return string + */ + function getModel() { + return $this->getValue('model'); + } + + /** + * セッション中のデータ検証する + * + * @return boolean + */ + function validateSessionData() { + foreach ($this->validate as $method) { + $method = 'validate' . $method; + if (!$this->$method()) { + return false; + } + } + return true; + } + + /** + * セッションデータを初期化する. + * + */ + function inisializeSessionData() {} +} + +/** + * PCサイト用のセッションデータ管理クラス + * + */ +class LC_UseRequest_State_PC extends LC_UseRequest_State { + + /** + * コンストラクタ + * セッションのデータ構造は下のようになる. + * $_SESSION["pc"]=> array( + * ["model"] => "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" + * ["ip"] => "127.0.0.1" + * ["expires"] => 1204699031 + * ) + * + * @return LC_UseRequest_State_PC + */ + function LC_UseRequest_State_PC() { + $this->namespace = 'pc'; + $this->lifetime = SESSION_LIFETIME; + $this->validate = array('NameSpace', 'Model', 'Ip', 'Expire'); + } + + /** + * セッションにUserAgentを設定する. + * + */ + function updateModel() { + $this->setValue('model', $_SERVER['HTTP_USER_AGENT']); + } + + /** + * UserAgentを検証する. + * + * @return boolean + */ + function validateModel() { + $ua = $this->getModel(); + if (!empty($_SERVER['HTTP_USER_AGENT']) + && $_SERVER['HTTP_USER_AGENT'] === $ua) { + + return true; + } + $msg = sprintf("User agent model mismatch : %s != %s(expected), sid=%s", + $_SERVER['HTTP_USER_AGENT'], $ua, session_id()); + GC_Utils_Ex::gfPrintLog($msg); + return false; + } + + /** + * セッションデータを初期化する. + * + */ + function inisializeSessionData() { + $_SESSION = array(); + $this->updateModel(); + $this->updateIp(); + $this->updateExpire(); + } +} + +/** + * モバイルサイト用のセッションデータ管理クラス + * + */ +class LC_UseRequest_State_Mobile extends LC_UseRequest_State { + + /** + * コンストラクタ + * セッションのデータ構造は下のようになる. + * $_SESSION["mobile"]=> array( + * ["model"] => 901sh + * ["ip"] => 127.0.0.1 + * ["expires"] => 1204699031 + * ["phone_id"]=> **** + * ) + * + * @return LC_UseRequest_State_Mobile + */ + function LC_UseRequest_State_Mobile() { + $this->namespace = 'mobile'; + $this->lifetime = MOBILE_SESSION_LIFETIME; + $this->validate = array('NameSpace', 'Model', 'Ip', 'Expire'); + } + + /** + * 携帯の機種名を設定する + * + */ + function updateModel() { + $this->setValue('model', SC_MobileUserAgent::getModel()); + } + + /** + * セッション中の携帯機種名と、アクセスしてきたブラウザの機種名が同じかどうかを判定する + * + * @return boolean + */ + function validateModel() { + $modelInSession = $this->getModel(); + $model = SC_MobileUserAgent::getModel(); + if (!empty($model) + && $model === $modelInSession) { + + return true; + } + return false; + } + + /** + * 携帯のIDを取得する + * + * @return string + */ + function getPhoneId() { + return $this->getValue('phone_id'); + } + + /** + * 携帯のIDを登録する. + * + */ + function updatePhoneId() { + $this->setValue('phone_id', SC_MobileUserAgent::getId()); + } + + /** + * セッションデータを初期化する. + * + */ + function inisializeSessionData() { + $_SESSION = array(); + $this->updateModel(); + $this->updateIp(); + $this->updateExpire(); + $this->updatePhoneId(); + } +} +/* + * Local variables: + * coding: utf-8 + * End: + */ +?> Added: eccube2/trunk/html/user_data/packages/default/sql/update_bloc.sql =================================================================== --- eccube2/trunk/html/user_data/packages/default/sql/update_bloc.sql (rev 0) +++ eccube2/trunk/html/user_data/packages/default/sql/update_bloc.sql 2008-03-11 08:08:23 UTC (rev 17) @@ -0,0 +1,26 @@ +DELETE FROM dtb_blocposition WHERE page_id = 1; +DELETE FROM dtb_blocposition WHERE page_id = 2; +DELETE FROM dtb_blocposition WHERE page_id = 3; +DELETE FROM dtb_blocposition WHERE page_id = 4; + +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(1,1,1,2,'category'); +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(1,1,2,3,'guide'); +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(1,1,3,1,'cart'); +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(1,3,4,2,'search_products'); +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(1,4,5,1,'news'); +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(1,3,6,1,'login'); +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(1,4,7,2,'best5'); +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(2,1,1,2,'category'); +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(2,1,2,3,'guide'); +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(2,1,3,1,'cart'); +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(2,5,4,0,'search_products'); +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(2,5,5,0,'news'); +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(2,5,6,0,'login'); +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(2,5,7,0,'best5'); +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(3,1,1,2,'category'); +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(3,1,2,3,'guide'); +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(3,1,3,1,'cart'); +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(3,5,4,0,'search_products'); +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(3,5,5,0,'news'); +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(3,5,6,0,'login'); +INSERT INTO dtb_blocposition (page_id,target_id,bloc_id,bloc_row,filename)values(3,5,7,0,'best5'); _ [EC-CUBE] 更新内容5Date: 2008-03-11 21:01:32 +0900 (Tue, 11 Mar 2008) New Revision: 18 Modified: eccube2/trunk/data/class/pages/mypage/LC_Page_Mypage_Change.php eccube2/trunk/data/class/session/SC_SessionFactory.php eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php eccube2/trunk/data/class/util/SC_Utils.php eccube2/trunk/data/include/module.inc eccube2/trunk/html/install/sql/insert_data.sql Log: auto commit Modified: eccube2/trunk/data/class/pages/mypage/LC_Page_Mypage_Change.php =================================================================== --- eccube2/trunk/data/class/pages/mypage/LC_Page_Mypage_Change.php 2008-03-11 08:08:23 UTC (rev 17) +++ eccube2/trunk/data/class/pages/mypage/LC_Page_Mypage_Change.php 2008-03-11 12:01:32 UTC (rev 18) @@ -29,7 +29,7 @@ * * @package Page * @author LOCKON CO.,LTD. - * @version $Id: LC_Page_Mypage_Change.php 16582 2007-10-29 03:06:29Z nanasess $ + * @version $Id: LC_Page_Mypage_Change.php 17125 2008-03-11 11:59:00Z adachi $ */ class LC_Page_Mypage_Change extends LC_Page { @@ -158,6 +158,12 @@ $objDb->sfEditCustomerData($this->arrForm, $arrRegistColumn); //セッション情報を最新の状態に更新する $this->objCustomer->updateSession(); + + // Do楽SNS連携モジュールユーザ情報更新処理 + if (function_exists('sfUpdateSourakuSNSUserInfo')) { + sfUpdateSourakuSNSUserInfo(); + } + //完了ページへ $this->sendRedirect($this->getLocation("./change_complete.php")); exit; Modified: eccube2/trunk/data/class/session/SC_SessionFactory.php =================================================================== --- eccube2/trunk/data/class/session/SC_SessionFactory.php 2008-03-11 08:08:23 UTC (rev 17) +++ eccube2/trunk/data/class/session/SC_SessionFactory.php 2008-03-11 12:01:32 UTC (rev 18) @@ -28,9 +28,22 @@ /** * セッションの初期化処理を抽象化するファクトリークラス. * + * このクラスはセッションの維持方法を管理するクラスです. + * 他のセッション管理クラスとは若干異なります. + * + * EC-CUBE2.1.1ベータ版から、 + * 管理画面>基本情報>パラメータ管理で、セッションの維持方法を + * ・Cookieを使用する場合 + * ・リクエストパラメータを使用する場合 + * の2種類が選択できますが、どちらの設定であっても下記のように呼び出すことで + * 適切にセッションを開始することができます. + * + * $sessionFactory = SC_SessionFactory::getInstance() + * $sessionFactory->initSession(); + * * @package SC_Session * @author LOCKON CO.,LTD. - * @version $Id: SC_SessionFactory.php 17119 2008-03-11 06:19:26Z adachi $ + * @version $Id: SC_SessionFactory.php 17124 2008-03-11 11:52:27Z adachi $ */ class SC_SessionFactory { Modified: eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php =================================================================== --- eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php 2008-03-11 08:08:23 UTC (rev 17) +++ eccube2/trunk/data/class/session/sessionfactory/SC_SessionFactory_UseRequest.php 2008-03-11 12:01:32 UTC (rev 18) @@ -34,7 +34,7 @@ * * @package SC_SessionFactory * @author LOCKON CO.,LTD. - * @version $Id: SC_SessionFactory_UseRequest.php 17120 2008-03-11 06:32:01Z adachi $ + * @version $Id: SC_SessionFactory_UseRequest.php 17124 2008-03-11 11:52:27Z adachi $ */ class SC_SessionFactory_UseRequest extends SC_SessionFactory { @@ -129,6 +129,20 @@ * @return boolean セッションデータが有効な場合は true、無効な場合は false を返す。 */ function validateSession() { + /** + * PCサイトでは + * ・セッションデータが適切に設定されているか + * ・UserAgent + * ・IPアドレス + * ・有効期限 + * モバイルサイトでは + * ・セッションデータが適切に設定されているか + * ・機種名 + * ・IPアドレス + * ・有効期限 + * ・phone_id + * がチェックされる + */ return $this->state->validateSessionData(); } @@ -168,12 +182,13 @@ function initSession() { // セッションIDの受け渡しにクッキーを使用しない。 ini_set('session.use_cookies', '0'); - ini_set('session.use_trans_sid', '1'); // パラメーターから有効なセッションIDを取得する。 $sessionId = $this->getSessionId(); - session_start(); + if (!$sessionId) { + session_start(); + } // セッションIDまたはセッションデータが無効な場合は、セッションIDを再生成 // し、セッションデータを初期化する。 Modified: eccube2/trunk/data/class/util/SC_Utils.php =================================================================== --- eccube2/trunk/data/class/util/SC_Utils.php 2008-03-11 08:08:23 UTC (rev 17) +++ eccube2/trunk/data/class/util/SC_Utils.php 2008-03-11 12:01:32 UTC (rev 18) @@ -960,8 +960,26 @@ * 共有SSL対応のための修正により、この関数は廃止します。 * セッションはrequire.phpを読み込んだ際に開始されます。 */ - function sfDomainSessionStart() {} + function sfDomainSessionStart() { + /** + * 2.1.1ベータからはSC_SessionFactory_UseCookie::initSession()で処理するため、 + * ここでは何も処理しない + */ + if (defined('SESSION_KEEP_METHOD')) { + return; + } + if (session_id() === "") { + + session_set_cookie_params(0, "/", DOMAIN_NAME); + + if (!ini_get("session.auto_start")) { + // セッション開始 + session_start(); + } + } + } + /* 文字列に強制的に改行を入れる */ function sfPutBR($str, $size) { $i = 0; Modified: eccube2/trunk/data/include/module.inc =================================================================== --- eccube2/trunk/data/include/module.inc 2008-03-11 08:08:23 UTC (rev 17) +++ eccube2/trunk/data/include/module.inc 2008-03-11 12:01:32 UTC (rev 18) @@ -1,128 +1,75 @@ -tpl_mainpage = MODULE_PATH . "ebis_tag_text.tpl"; - } -} - -// エビスタグの発行 -function sfPrintEbisTag($pid = "") { - $objQuery = new SC_Query(); - $arrRet = $objQuery->select("sub_data", "dtb_module", "module_id = ?", array(EBIS_TAG_MID)); - $arrSubData = unserialize($arrRet[0]['sub_data']); - $arrEbis = array(); - - if($arrSubData['cid'] != "") { - $arrEbis['cid'] = $arrSubData['cid']; - } else { - return; - } - - // 「/」が重複しているものへの対応 - $php_self = ereg_replace("[/]+", "/", $_SERVER['PHP_SELF']); - // PHPファイルの後ろに「/」がついてしまっているものへの対応 - $php_self = ereg_replace(".php[/]+$", ".php", $php_self); - - if(!is_array($pid) && $pid != "") { - if(!ereg(".tpl$", $pid)) { - // ページIDを上書きする - $arrEbis['pid'] = $pid; - } else { - // テンプレートのパスが与えられている場合 - $temp_id = ereg_replace(HTML_PATH,"",$pid); - $temp_id = ereg_replace("^[/]+","",$temp_id); - $temp_id = ereg_replace(".tpl$","",$temp_id); - $temp_id = ereg_replace("[\./]","_",$temp_id); - $arrEbis['pid'] = $temp_id; - } - } - - // 商品一覧ページは、特殊IDを発行 - if(ereg("/products/list.php\?category_id=[0-9]+$", $_SERVER["REQUEST_URI"])) { - $filename = basename($_SERVER["REQUEST_URI"]); - $arrEbis['pid'] = ereg_replace("list.php\?category_id=", "list-c", $filename); - } - - // 商品詳細ページは、特殊IDを発行 - if(ereg("/products/detail.php\?product_id=[0-9]+$", $_SERVER["REQUEST_URI"])) { - $filename = basename($_SERVER["REQUEST_URI"]); - $arrEbis['pid'] = ereg_replace("detail.php\?product_id=", "detail-p", $filename); - } - - // ID割り当てされていないページは、自動的に生成する。 - if($arrEbis['pid'] == "") { - $temp_id = ereg_replace("^[/]+","",$_SERVER['PHP_SELF']); - $temp_id = ereg_replace(".php$","",$temp_id); - $temp_id = ereg_replace("[\./]","_",$temp_id); - $arrEbis['pid'] = $temp_id; - } - - // ページIDが登録されている場合のみタグを出力する。 - if($arrEbis['pid'] != "") { - $objSubPage = new LC_EbisPage(); - $objSubPage->arrEbis = $arrEbis; - $objSubView = new SC_SiteView(); - $objSubView->assignobj($objSubPage); - $objSubView->display($objSubPage->tpl_mainpage); - } -} - -// コンバージョンタグの発行 -function sfPrintAffTag($conv_page, $option) { - if(is_numeric($conv_page)) { - // sub_dataよりタグ情報を読み込む - $objQuery = new SC_Query(); - $arrRet = $objQuery->select("sub_data", "dtb_module", "module_id = ?", array(AFF_TAG_MID)); - $arrSubData = unserialize($arrRet[0]['sub_data']); - $aff_tag = $arrSubData[$conv_page]; - - $array = split("\|", $option); - - // 特定文字の置き換え - foreach($array as $each) { - list($key, $value) = split("=", $each); - $aff_tag = ereg_replace("\[\[" . $key . "\]\]", $value, $aff_tag); - } - print($aff_tag); - } -} - -// dtb_paymentに汎用項目が存在していなければ追加する -function sfAlterMemo(){ - $objQuery = new SC_Query(); - - // 汎用項目の存在チェック - if(!sfColumnExists("dtb_payment", "memo01")){ - - // モジュールIDを追加 - $objQuery->query("alter table dtb_payment add module_id int4;"); - - // モジュールパスを追加 - $objQuery->query("alter table dtb_payment add module_path text;"); - - // 汎用項目を10個追加 - for($i=1; $i<=9; $i++){ - $objQuery->query("alter table dtb_payment add memo0".$i." text;"); - } - $objQuery->query("alter table dtb_payment add memo10 text;"); - } -} - -/*------------- ▼A8FLYタグ出力 -------------*/ -if (file_exists(MODULE_PATH. "mdl_a8/include.php") === TRUE) { - require_once(MODULE_PATH. "mdl_a8/include.php"); -} - -/*------------- ▼Moba8FLY連携 -------------*/ -if (file_exists(MODULE_PATH. "mdl_moba8/include.php") === TRUE) { - require_once(MODULE_PATH. "mdl_moba8/include.php"); -} - -/*------------- ▼オペビルダー連携 -------------*/ -if (file_exists(MODULE_PATH. "mdl_opebuilder/include.php") === TRUE) { - require_once(MODULE_PATH. "mdl_opebuilder/include.php"); -} - -?> \ No newline at end of file +getCol('dtb_module', 'module_code'); + +if (is_array($_arrModuleCode)) { + foreach ($_arrModuleCode as $_moduleCode) { + $_file = MODULE_PATH . "$_moduleCode/include.php"; + if (isset($_arrModule[$_moduleCode]) && file_exists($_file)) { + include_once($_file); + } + } +} + +// グローバル変数は残しておきたくないのでunset +unset( + $_arrModule, $_objQuery, $_arrModuleCode, + $_moduleCode, $_file +); + +// 互換性保持のため空の関数を残しておく +function sfPrintEbisTag() {} +function sfPrintAffTag() {} Modified: eccube2/trunk/html/install/sql/insert_data.sql =================================================================== --- eccube2/trunk/html/install/sql/insert_data.sql 2008-03-11 08:08:23 UTC (rev 17) +++ eccube2/trunk/html/install/sql/insert_data.sql 2008-03-11 12:01:32 UTC (rev 18) @@ -1030,7 +1030,7 @@ INSERT INTO mtb_constants VALUES ('CAMPAIGN_TEMPLATE_END','"end/"',318,'キャンペーン関連'); INSERT INTO mtb_constants VALUES ('MOBILE_TEMPLATE_DIR', 'TEMPLATE_DIR . "mobile/"', 400,'SMARTYテンプレート(mobile)'); INSERT INTO mtb_constants VALUES ('MOBILE_COMPILE_DIR', 'COMPILE_DIR . "mobile/"', 401,'SMARTYコンパイル(mobile)'); -INSERT INTO mtb_constants VALUES ('MOBILE_SESSION_LIFETIME', '1800', 402,'セッションの存続時間 (秒)'); +INSERT INTO mtb_constants VALUES ('MOBILE_SESSION_LIFETIME', '1800', 402,'モバイルサイトのセッションの存続時間 (秒)'); INSERT INTO mtb_constants VALUES ('MOBILE_USE_KARA_MAIL', 'false', 403,'空メール機能を使用するかどうか(true:送信する、false:送信しない)'); INSERT INTO mtb_constants VALUES ('MOBILE_KARA_MAIL_ADDRESS_USER', '"eccube"', 404,'空メール受け付けアドレスのユーザー名部分'); INSERT INTO mtb_constants VALUES ('MOBILE_KARA_MAIL_ADDRESS_DELIMITER', '"+"', 405,'空メール受け付けアドレスのユーザー名とコマンドの間の区切り文字 qmail の場合は -'); @@ -1047,7 +1047,7 @@ INSERT INTO mtb_constants VALUES ('MOBILE_URL_SHOP_COMPLETE', 'MOBILE_URL_DIR . "shopping/complete.php"', 416,'購入完了画面'); INSERT INTO mtb_constants VALUES ('MOBILE_URL_SHOP_MODULE', 'MOBILE_URL_DIR . "shopping/load_payment_module.php"', 417,'モジュール追加用画面'); INSERT INTO mtb_constants VALUES ('SESSION_KEEP_METHOD', '"useCookie"', 418,'セッション維持方法:useCookie|useRequest'); -INSERT INTO mtb_constants VALUES ('SESSION_LIFETIME', '"1800"', 419,'セッション維持方法:useCookie|useRequest'); +INSERT INTO mtb_constants VALUES ('SESSION_LIFETIME', '"1800"', 419,'セッションの存続時間 (秒)'); INSERT INTO mtb_constants VALUES ('OSTORE_URL', '"http://store.ec-cube.net/"', 500, 'オーナーズストアURL'); INSERT INTO mtb_constants VALUES ('OSTORE_SSLURL', '"https://store.ec-cube.net/"', 501, 'オーナーズストアURL'); INSERT INTO mtb_constants VALUES ('OSTORE_LOG_PATH', 'DATA_PATH . "logs/ownersstore.log"', 502, 'オーナーズストアログパス'); |