Changeset 15078 for branches/feature-module-update/data/include/mobile.inc
- Timestamp:
- 2007/07/20 15:58:59 (16 years ago)
- Location:
- branches/feature-module-update
- Files:
-
- 1 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/feature-module-update
-
Property
svn:ignore
set to
.cache
.settings
.projectOptions
-
Property
svn:ignore
set to
-
branches/feature-module-update/data/include/mobile.inc
r13356 r15078 1 1 <?php 2 2 /** 3 * ¥â¥Ð¥¤¥ë¥µ¥¤¥È¶¦Í´Ø¿ô¥Õ¥¡¥¤¥ë3 * モバイルサイト共有関数ファイル 4 4 */ 5 5 … … 9 9 10 10 /** 11 * EC-CUBE ¤¬¥µ¥Ý¡¼¥È¤¹¤ë·ÈÂÓüËö¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£12 * ÈóÂбþüËö¤Î¾ì¹ç¤Ï unsupported/index.php ¤Ø¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë¡£11 * EC-CUBE がサポートする携帯端末かどうかをチェックする。 12 * 非対応端末の場合は unsupported/index.php へリダイレクトする。 13 13 * 14 14 * @return void … … 22 22 23 23 /** 24 * ÆþÎϥǡ¼¥¿¤òÆâÉô¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ËÊÑ´¹¤·¡¢³¨Ê¸»ú¤ò½üµî¤¹¤ë¡£25 * 26 * @param string &$value ÆþÎϥǡ¼¥¿¤Ø¤Î»²¾È24 * 入力データを内部エンコーディングに変換し、絵文字を除去する。 25 * 26 * @param string &$value 入力データへの参照 27 27 * @return void 28 28 */ 29 29 function lfMobileConvertInputValue(&$value) { 30 // Shift JIS ¤«¤éÆâÉô¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ËÊÑ´¹¤¹¤ë¡£31 // SoftBank °Ê³°¤Î³¨Ê¸»ú¤Ï³°»úÎΰè¤Ë´Þ¤Þ¤ì¤ë¤¿¤á¡¢¤³¤ÎÃʳ¬¤Ç½üµî¤µ¤ì¤ë¡£30 // Shift JIS から内部エンコーディングに変換する。 31 // SoftBank 以外の絵文字は外字領域に含まれるため、この段階で除去される。 32 32 $value = mb_convert_encoding($value, CHAR_CODE, 'SJIS'); 33 33 34 // SoftBank ¤Î³¨Ê¸»ú¤ò½üµî¤¹¤ë¡£34 // SoftBank の絵文字を除去する。 35 35 $value = preg_replace('/\\x1b\\$[^\\x0f]*\\x0f/', '', $value); 36 36 } 37 37 38 38 /** 39 * ¥â¥Ð¥¤¥ë¥µ¥¤¥ÈÍÑ¤ÎÆþÎϤνé´ü½èÍý¤ò¹Ô¤¦¡£39 * モバイルサイト用の入力の初期処理を行う。 40 40 * 41 41 * @return void … … 48 48 49 49 /** 50 * dtb_mobile_ext_session_id ¥Æ¡¼¥Ö¥ë¤ò¸¡º÷¤·¤Æ¥»¥Ã¥·¥ç¥óID¤ò¼èÆÀ¤¹¤ë¡£51 * 52 * @return string|null ¼èÆÀ¤·¤¿¥»¥Ã¥·¥ç¥óID¤òÊÖ¤¹¡£53 * ¼èÆÀ¤Ç¤¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï null ¤òÊÖ¤¹¡£50 * dtb_mobile_ext_session_id テーブルを検索してセッションIDを取得する。 51 * 52 * @return string|null 取得したセッションIDを返す。 53 * 取得できなかった場合は null を返す。 54 54 */ 55 55 function lfMobileGetExtSessionId() { … … 75 75 76 76 /** 77 * ¥Ñ¥é¥á¡¼¥¿¡¼¤«¤é͸ú¤Ê¥»¥Ã¥·¥ç¥óID¤ò¼èÆÀ¤¹¤ë¡£78 * 79 * @return string|false ¼èÆÀ¤·¤¿Í¸ú¤Ê¥»¥Ã¥·¥ç¥óID¤òÊÖ¤¹¡£80 * ¼èÆÀ¤Ç¤¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£77 * パラメーターから有効なセッションIDを取得する。 78 * 79 * @return string|false 取得した有効なセッションIDを返す。 80 * 取得できなかった場合は false を返す。 81 81 */ 82 82 function lfMobileGetSessionId() { 83 // ¥Ñ¥é¥á¡¼¥¿¡¼¤«¤é¥»¥Ã¥·¥ç¥óID¤ò¼èÆÀ¤¹¤ë¡£83 // パラメーターからセッションIDを取得する。 84 84 $sessionId = @$_POST[session_name()]; 85 85 if (!isset($sessionId)) { … … 93 93 } 94 94 95 // ¥»¥Ã¥·¥ç¥óID¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£95 // セッションIDのフォーマットをチェックする。 96 96 if (preg_match('/^[0-9a-zA-Z,-]{32,}$/', $sessionId) < 1) { 97 97 gfPrintLog("Invalid session id : sid=$sessionId"); … … 99 99 } 100 100 101 // ¥»¥Ã¥·¥ç¥óID¤Î¸ºß¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£101 // セッションIDの存在をチェックする。 102 102 if (sfSessRead($sessionId) === null) { 103 103 gfPrintLog("Non-existent session id : sid=$sessionId"); … … 109 109 110 110 /** 111 * ¥»¥Ã¥·¥ç¥ó¥Ç¡¼¥¿¤¬Í¸ú¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£112 * 113 * @return boolean ¥»¥Ã¥·¥ç¥ó¥Ç¡¼¥¿¤¬Í¸ú¤Ê¾ì¹ç¤Ï true¡¢Ìµ¸ú¤Ê¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£111 * セッションデータが有効かどうかをチェックする。 112 * 113 * @return boolean セッションデータが有効な場合は true、無効な場合は false を返す。 114 114 */ 115 115 function lfMobileValidateSession() { 116 // ÇÛÎó mobile ¤¬ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£116 // 配列 mobile が登録されているかどうかをチェックする。 117 117 if (!is_array(@$_SESSION['mobile'])) { 118 118 return false; 119 119 } 120 120 121 // ͸ú´ü¸Â¤ò²á¤®¤Æ¤¤¤Ê¤¤¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£121 // 有効期限を過ぎていないかどうかをチェックする。 122 122 if (intval(@$_SESSION['mobile']['expires']) < time()) { 123 123 gfPrintLog("Session expired at " . … … 128 128 } 129 129 130 // ·ÈÂÓüËö¤Îµ¡¼ï¤¬°ìÃפ¹¤ë¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£130 // 携帯端末の機種が一致するかどうかをチェックする。 131 131 $model = GC_MobileUserAgent::getModel(); 132 132 if (@$_SESSION['mobile']['model'] != $model) { … … 141 141 142 142 /** 143 * ¥â¥Ð¥¤¥ë¥µ¥¤¥ÈÍѤΥ»¥Ã¥·¥ç¥ó´ØÏ¢¤Î½é´ü½èÍý¤ò¹Ô¤¦¡£143 * モバイルサイト用のセッション関連の初期処理を行う。 144 144 * 145 145 * @return void 146 146 */ 147 147 function lfMobileInitSession() { 148 // ¥»¥Ã¥·¥ç¥óID¤Î¼õ¤±ÅϤ·¤Ë¥¯¥Ã¥¡¼¤ò»ÈÍѤ·¤Ê¤¤¡£148 // セッションIDの受け渡しにクッキーを使用しない。 149 149 ini_set('session.use_cookies', '0'); 150 150 151 // ¥Ñ¥é¥á¡¼¥¿¡¼¤«¤é͸ú¤Ê¥»¥Ã¥·¥ç¥óID¤ò¼èÆÀ¤¹¤ë¡£151 // パラメーターから有効なセッションIDを取得する。 152 152 $sessionId = lfMobileGetSessionId(); 153 153 154 154 session_start(); 155 155 156 // ¥»¥Ã¥·¥ç¥óID¤Þ¤¿¤Ï¥»¥Ã¥·¥ç¥ó¥Ç¡¼¥¿¤¬Ìµ¸ú¤Ê¾ì¹ç¤Ï¡¢¥»¥Ã¥·¥ç¥óID¤òºÆÀ¸À®157 // ¤·¡¢¥»¥Ã¥·¥ç¥ó¥Ç¡¼¥¿¤ò½é´ü²½¤¹¤ë¡£156 // セッションIDまたはセッションデータが無効な場合は、セッションIDを再生成 157 // し、セッションデータを初期化する。 158 158 if ($sessionId === false || !lfMobileValidateSession()) { 159 159 session_regenerate_id(); … … 162 162 'expires' => time() + MOBILE_SESSION_LIFETIME)); 163 163 164 // ¿·¤·¤¤¥»¥Ã¥·¥ç¥óID¤òÉղ䷤ƥê¥À¥¤¥ì¥¯¥È¤¹¤ë¡£164 // 新しいセッションIDを付加してリダイレクトする。 165 165 if ($_SERVER['REQUEST_METHOD'] == 'GET') { 166 // GET ¤Î¾ì¹ç¤ÏƱ¤¸¥Ú¡¼¥¸¤Ë¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë¡£166 // GET の場合は同じページにリダイレクトする。 167 167 header('Location: ' . gfAddSessionId()); 168 168 } else { 169 // GET °Ê³°¤Î¾ì¹ç¤Ï¥È¥Ã¥×¥Ú¡¼¥¸¤Ø¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë¡£169 // GET 以外の場合はトップページへリダイレクトする。 170 170 header('Location: ' . URL_SITE_TOP . '?' . SID); 171 171 } … … 173 173 } 174 174 175 // ·ÈÂÓüËöID¤ò¼èÆÀ¤Ç¤¤¿¾ì¹ç¤Ï¥»¥Ã¥·¥ç¥ó¥Ç¡¼¥¿¤ËÊݸ¤¹¤ë¡£175 // 携帯端末IDを取得できた場合はセッションデータに保存する。 176 176 $phoneId = GC_MobileUserAgent::getId(); 177 177 if ($phoneId !== false) { … … 179 179 } 180 180 181 // ¥»¥Ã¥·¥ç¥ó¤Î͸ú´ü¸Â¤ò¹¹¿·¤¹¤ë¡£181 // セッションの有効期限を更新する。 182 182 $_SESSION['mobile']['expires'] = time() + MOBILE_SESSION_LIFETIME; 183 183 } 184 184 185 185 /** 186 * ¥â¥Ð¥¤¥ë¥µ¥¤¥ÈÍѤνÐÎϤνé´ü½èÍý¤ò¹Ô¤¦¡£187 * 188 * ½ÐÎϤÎή¤ì186 * モバイルサイト用の出力の初期処理を行う。 187 * 188 * 出力の流れ 189 189 * 1. Smarty 190 * 2. ÆâÉô¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤«¤é Shift JIS ¤ËÊÑ´¹¤¹¤ë¡£191 * 3. Á´³Ñ¥«¥¿¥«¥Ê¤òȾ³Ñ¥«¥¿¥«¥Ê¤ËÊÑ´¹¤¹¤ë¡£192 * 4. ²èÁüÍѤΥ¿¥°¤òÄ´À°¤¹¤ë¡£193 * 5. ³¨Ê¸»ú¥¿¥°¤ò³¨Ê¸»ú¥³¡¼¥É¤ËÊÑ´¹¤¹¤ë¡£194 * 6. ½ÐÎÏ190 * 2. 内部エンコーディングから Shift JIS に変換する。 191 * 3. 全角カタカナを半角カタカナに変換する。 192 * 4. 画像用のタグを調整する。 193 * 5. 絵文字タグを絵文字コードに変換する。 194 * 6. 出力 195 195 * 196 196 * @return void 197 197 */ 198 198 function lfMobileInitOutput() { 199 // Smarty ÍѤΥǥ£¥ì¥¯¥È¥ê¡¼¤òºîÀ®¤¹¤ë¡£199 // Smarty 用のディレクトリーを作成する。 200 200 @mkdir(COMPILE_DIR); 201 201 202 // ½ÐÎÏÍѤΥ¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò Shift JIS ¤Ë¸ÇÄꤹ¤ë¡£202 // 出力用のエンコーディングを Shift JIS に固定する。 203 203 mb_http_output('SJIS-win'); 204 204 205 // ³¨Ê¸»ú¥¿¥°¤ò³¨Ê¸»ú¥³¡¼¥É¤ËÊÑ´¹¤¹¤ë¡£205 // 絵文字タグを絵文字コードに変換する。 206 206 ob_start(array('GC_MobileEmoji', 'handler')); 207 207 208 // üËö¤Ë¹ç¤ï¤»¤Æ²èÁü¥µ¥¤¥º¤òÊÑ´¹¤¹¤ë¡£208 // 端末に合わせて画像サイズを変換する。 209 209 ob_start(array('GC_MobileImage', 'handler')); 210 210 211 // Á´³Ñ¥«¥¿¥«¥Ê¤òȾ³Ñ¥«¥¿¥«¥Ê¤ËÊÑ´¹¤¹¤ë¡£211 // 全角カタカナを半角カタカナに変換する。 212 212 ob_start(create_function('$buffer', 'return mb_convert_kana($buffer, "k", "SJIS-win");')); 213 213 214 // ÆâÉô¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤«¤é Shift JIS ¤ËÊÑ´¹¤¹¤ë¡£214 // 内部エンコーディングから Shift JIS に変換する。 215 215 ob_start('mb_output_handler'); 216 216 } 217 217 218 218 /** 219 * ¥â¥Ð¥¤¥ë¥µ¥¤¥ÈÍѤνé´ü½èÍý¤ò¹Ô¤¦¡£219 * モバイルサイト用の初期処理を行う。 220 220 * 221 221 * @return void … … 233 233 234 234 /** 235 * Location Åù¤Ç¥»¥Ã¥·¥ç¥óID¤òÉղ乤ëɬÍפ¬¤¢¤ëURL¤Ë¥»¥Ã¥·¥ç¥óID¤òÉղ乤롣235 * Location等でセッションIDを付加する必要があるURLにセッションIDを付加する。 236 236 * 237 237 * @return String … … 244 244 245 245 /** 246 * ¶õ¥á¡¼¥ëÍѤΥȡ¼¥¯¥ó¤òÀ¸À®¤¹¤ë¡£247 * 248 * @return string À¸À®¤·¤¿¥È¡¼¥¯¥ó¤òÊÖ¤¹¡£246 * 空メール用のトークンを生成する。 247 * 248 * @return string 生成したトークンを返す。 249 249 */ 250 250 function lfGenerateKaraMailToken() { … … 263 263 264 264 /** 265 * ¶õ¥á¡¼¥ë´ÉÍý¥Æ¡¼¥Ö¥ë¤Ë¿·µ¬¥¨¥ó¥È¥ê¡¼¤òÅÐÏ¿¤·¡¢¥È¡¼¥¯¥ó¤òÊÖ¤¹¡£266 * 267 * @param string $next_url ¶õ¥á¡¼¥ë¼õ¤±ÉÕ¤±¸å¤ËÁ«°Ü¤µ¤»¤ë¥Ú¡¼¥¸ (¥â¥Ð¥¤¥ë¥µ¥¤¥È¥È¥Ã¥×¤«¤é¤ÎÁêÂÐURL)268 * @param string $session_id ¥»¥Ã¥·¥ç¥óID (¾Êά¤·¤¿¾ì¹ç¤Ï¸½ºß¤Î¥»¥Ã¥·¥ç¥óID)269 * @return string|false ¥È¡¼¥¯¥ó¤òÊÖ¤¹¡£¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç¤Ïfalse¤òÊÖ¤¹¡£265 * 空メール管理テーブルに新規エントリーを登録し、トークンを返す。 266 * 267 * @param string $next_url 空メール受け付け後に遷移させるページ (モバイルサイトトップからの相対URL) 268 * @param string $session_id セッションID (省略した場合は現在のセッションID) 269 * @return string|false トークンを返す。エラーが発生した場合はfalseを返す。 270 270 */ 271 271 function gfPrepareKaraMail($next_url, $session_id = null) { … … 306 306 307 307 /** 308 * ¶õ¥á¡¼¥ë¤«¤é¼èÆÀ¤·¤¿¥á¡¼¥ë¥¢¥É¥ì¥¹¤ò¶õ¥á¡¼¥ë´ÉÍý¥Æ¡¼¥Ö¥ë¤ËÅÐÏ¿¤¹¤ë¡£309 * 310 * @param string $token ¥È¡¼¥¯¥ó311 * @param string $email ¥á¡¼¥ë¥¢¥É¥ì¥¹312 * @return boolean À®¸ù¤·¤¿¾ì¹ç¤Ïtrue¡¢¼ºÇÔ¤·¤¿¾ì¹ç¤Ïfalse¤òÊÖ¤¹¡£308 * 空メールから取得したメールアドレスを空メール管理テーブルに登録する。 309 * 310 * @param string $token トークン 311 * @param string $email メールアドレス 312 * @return boolean 成功した場合はtrue、失敗した場合はfalseを返す。 313 313 */ 314 314 function gfRegisterKaraMail($token, $email) { … … 334 334 335 335 /** 336 * ¶õ¥á¡¼¥ë´ÉÍý¥Æ¡¼¥Ö¥ë¤«¤é¥È¡¼¥¯¥ó¤¬°ìÃפ¹¤ë¹Ô¤òºï½ü¤·¡¢337 * ¼¡¤ËÁ«°Ü¤µ¤»¤ë¥Ú¡¼¥¸¤ÎURL¤òÊÖ¤¹¡£¡¡338 * 339 * ¥á¡¼¥ë¥¢¥É¥ì¥¹¤Ï $_SESSION['mobile']['kara_mail_from'] ¤ËÅÐÏ¿¤µ¤ì¤ë¡£340 * 341 * @param string $token ¥È¡¼¥¯¥ó342 * @return string|false URL ¤òÊÖ¤¹¡£¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç¤Ïfalse¤òÊÖ¤¹¡£336 * 空メール管理テーブルからトークンが一致する行を削除し、 337 * 次に遷移させるページのURLを返す。 338 * 339 * メールアドレスは $_SESSION['mobile']['kara_mail_from'] に登録される。 340 * 341 * @param string $token トークン 342 * @return string|false URLを返す。エラーが発生した場合はfalseを返す。 343 343 */ 344 344 function gfFinishKaraMail($token) { … … 368 368 369 369 /** 370 * ³°Éô¥µ¥¤¥ÈÏ¢·ÈÍѤ˥»¥Ã¥·¥ç¥óID¤È¥Ñ¥é¥á¡¼¥¿¡¼¤ÎÁȤ߹ç¤ï¤»¤òÊݸ¤¹¤ë¡£371 * 372 * @param string $param_key ¥Ñ¥é¥á¡¼¥¿¡¼Ì¾373 * @param string $param_value ¥Ñ¥é¥á¡¼¥¿¡¼ÃÍ370 * 外部サイト連携用にセッションIDとパラメーターの組み合わせを保存する。 371 * 372 * @param string $param_key パラメーター名 373 * @param string $param_value パラメーター値 374 374 * @param string $url URL 375 375 * @return void … … 391 391 392 392 /** 393 * ¥á¡¼¥ë¥¢¥É¥ì¥¹¤¬·ÈÂӤΤâ¤Î¤«¤É¤¦¤«¤òȽÊ̤¹¤ë¡£394 * 395 * @param string $address ¥á¡¼¥ë¥¢¥É¥ì¥¹396 * @return boolean ·ÈÂӤΥ᡼¥ë¥¢¥É¥ì¥¹¤Î¾ì¹ç¤Ïtrue¡¢¤½¤ì°Ê³°¤Î¾ì¹ç¤Ïfalse¤òÊÖ¤¹¡£393 * メールアドレスが携帯のものかどうかを判別する。 394 * 395 * @param string $address メールアドレス 396 * @return boolean 携帯のメールアドレスの場合はtrue、それ以外の場合はfalseを返す。 397 397 */ 398 398 function gfIsMobileMailAddress($address) { 399 // pdx.ne.jp( ¥¦¥£¥ë¥³¥à)ÄɲÃ399 // pdx.ne.jp(ウィルコム)追加 400 400 $arrMobileMailDomains = array('docomo.ne.jp', 'ezweb.ne.jp', 'softbank.ne.jp', 'vodafone.ne.jp', 'pdx.ne.jp'); 401 401
Note: See TracChangeset
for help on using the changeset viewer.