source: closed/feature-module-zeus/data/include/mobile.inc @ 15475

Revision 15475, 12.0 KB checked in by naka, 19 years ago (diff)
  • Property svn:eol-style set to native
Line 
1<?php
2/**
3 * ¥â¥Ð¥¤¥ë¥µ¥¤¥È¶¦Í­´Ø¿ô¥Õ¥¡¥¤¥ë
4 */
5
6require_once DATA_PATH . 'module/Net/URL.php';
7require_once DATA_PATH . 'class/SC_DbConn.php';
8require_once DATA_PATH . 'class/SC_Query.php';
9
10/**
11 * EC-CUBE ¤¬¥µ¥Ý¡¼¥È¤¹¤ë·ÈÂÓüËö¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£
12 * ÈóÂбþüËö¤Î¾ì¹ç¤Ï unsupported/index.php ¤Ø¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë¡£
13 *
14 * @return void
15 */
16function lfMobileCheckCompatibility() {
17    if (!GC_MobileUserAgent::isSupported()) {
18        header('Location: ' . URL_DIR . 'unsupported/index.php');
19        exit;
20    }
21}
22
23/**
24 * ÆþÎϥǡ¼¥¿¤òÆâÉô¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ËÊÑ´¹¤·¡¢³¨Ê¸»ú¤ò½üµî¤¹¤ë¡£
25 *
26 * @param string &$value ÆþÎϥǡ¼¥¿¤Ø¤Î»²¾È
27 * @return void
28 */
29function lfMobileConvertInputValue(&$value) {
30    // Shift JIS ¤«¤éÆâÉô¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ËÊÑ´¹¤¹¤ë¡£
31    // SoftBank °Ê³°¤Î³¨Ê¸»ú¤Ï³°»úÎΰè¤Ë´Þ¤Þ¤ì¤ë¤¿¤á¡¢¤³¤ÎÃʳ¬¤Ç½üµî¤µ¤ì¤ë¡£
32    $value = mb_convert_encoding($value, CHAR_CODE, 'SJIS');
33
34    // SoftBank ¤Î³¨Ê¸»ú¤ò½üµî¤¹¤ë¡£
35    $value = preg_replace('/\\x1b\\$[^\\x0f]*\\x0f/', '', $value);
36}
37
38/**
39 * ¥â¥Ð¥¤¥ë¥µ¥¤¥ÈÍÑ¤ÎÆþÎϤνé´ü½èÍý¤ò¹Ô¤¦¡£
40 *
41 * @return void
42 */
43function lfMobileInitInput() {
44    array_walk($_GET, 'lfMobileConvertInputValue');
45    array_walk($_POST, 'lfMobileConvertInputValue');
46    array_walk($_REQUEST, 'lfMobileConvertInputValue');
47}
48
49/**
50 * dtb_mobile_ext_session_id ¥Æ¡¼¥Ö¥ë¤ò¸¡º÷¤·¤Æ¥»¥Ã¥·¥ç¥óID¤ò¼èÆÀ¤¹¤ë¡£
51 *
52 * @return string|null ¼èÆÀ¤·¤¿¥»¥Ã¥·¥ç¥óID¤òÊÖ¤¹¡£
53 *                     ¼èÆÀ¤Ç¤­¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï null ¤òÊÖ¤¹¡£
54 */
55function lfMobileGetExtSessionId() {
56    if (!preg_match('|^' . URL_DIR . '(.*)$|', $_SERVER['SCRIPT_NAME'], $matches)) {
57        return null;
58    }
59
60    $url = $matches[1];
61    $time = date('Y-m-d H:i:s', time() - MOBILE_SESSION_LIFETIME);
62    $objQuery = new SC_Query;
63
64    foreach ($_REQUEST as $key => $value) {
65        $session_id = $objQuery->get('dtb_mobile_ext_session_id', 'session_id',
66                                     'param_key = ? AND param_value = ? AND url = ? AND create_date >= ?',
67                                     array($key, $value, $url, $time));
68        if (isset($session_id)) {
69            return $session_id;
70        }
71    }
72
73    return null;
74}
75
76/**
77 * ¥Ñ¥é¥á¡¼¥¿¡¼¤«¤éÍ­¸ú¤Ê¥»¥Ã¥·¥ç¥óID¤ò¼èÆÀ¤¹¤ë¡£
78 *
79 * @return string|false ¼èÆÀ¤·¤¿Í­¸ú¤Ê¥»¥Ã¥·¥ç¥óID¤òÊÖ¤¹¡£
80 *                      ¼èÆÀ¤Ç¤­¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£
81 */
82function lfMobileGetSessionId() {
83    // ¥Ñ¥é¥á¡¼¥¿¡¼¤«¤é¥»¥Ã¥·¥ç¥óID¤ò¼èÆÀ¤¹¤ë¡£
84    $sessionId = @$_POST[session_name()];
85    if (!isset($sessionId)) {
86        $sessionId = @$_GET[session_name()];
87    }
88    if (!isset($sessionId)) {
89        $sessionId = lfMobileGetExtSessionId();
90    }
91   
92    if (!isset($sessionId)) {
93        return false;
94    }
95
96    // ¥»¥Ã¥·¥ç¥óID¤Î¸ºß¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£
97    if (sfSessRead($sessionId) === null) {
98        gfPrintLog("Non-existent session id : sid=$sessionId");
99        return false;
100    }
101   
102    return session_id($sessionId);
103}
104
105/**
106 * ¥»¥Ã¥·¥ç¥ó¥Ç¡¼¥¿¤¬Í­¸ú¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£
107 *
108 * @return boolean ¥»¥Ã¥·¥ç¥ó¥Ç¡¼¥¿¤¬Í­¸ú¤Ê¾ì¹ç¤Ï true¡¢Ìµ¸ú¤Ê¾ì¹ç¤Ï false ¤òÊÖ¤¹¡£
109 */
110function lfMobileValidateSession() {
111    // ÇÛÎó mobile ¤¬ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£
112    if (!is_array(@$_SESSION['mobile'])) {
113        gfPrintLog("SESSIONüËö¾ðÊó¤¬ÅÐÏ¿¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£");
114        return false;
115    }
116
117    // Í­¸ú´ü¸Â¤ò²á¤®¤Æ¤¤¤Ê¤¤¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£
118    if (intval(@$_SESSION['mobile']['expires']) < time()) {
119        gfPrintLog("Session expired at " .
120                   date('Y/m/d H:i:s', @$_SESSION['mobile']['expires']) .
121                   ' : sid=' . session_id());
122        gfPrintLog("SESSIONÍ­¸ú´ü¸Â¤ò²á¤®¤Æ¤¤¤ë");                 
123        return false;
124    }
125
126    // ·ÈÂÓüËö¤Îµ¡¼ï¤¬°ìÃפ¹¤ë¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£
127    $model = GC_MobileUserAgent::getModel();
128    if (@$_SESSION['mobile']['model'] != $model) {
129        gfPrintLog("User agent model mismatch : " .
130                   "\"$model\" != \"" . @$_SESSION['mobile']['model'] .
131                   '" (expected), sid=' . session_id());
132        gfPrintLog("·ÈÂÓüËö¤Îµ¡¼ï¤¬°ìÃפ·¤Ê¤¤");   
133        return false;
134    }
135    return true;
136}
137
138/**
139 * ¥â¥Ð¥¤¥ë¥µ¥¤¥ÈÍѤΥ»¥Ã¥·¥ç¥ó´ØÏ¢¤Î½é´ü½èÍý¤ò¹Ô¤¦¡£
140 *
141 * @return void
142 */
143function lfMobileInitSession() {
144    $session_ok = true;
145   
146    // ¥»¥Ã¥·¥ç¥óID¤Î¼õ¤±ÅϤ·¤Ë¥¯¥Ã¥­¡¼¤ò»ÈÍѤ·¤Ê¤¤¡£
147    ini_set('session.use_cookies', '0');
148
149    // ¥Ñ¥é¥á¡¼¥¿¡¼¤«¤éÍ­¸ú¤Ê¥»¥Ã¥·¥ç¥óID¤ò¼èÆÀ¤¹¤ë¡£
150    $sessionId = lfMobileGetSessionId();
151   
152    session_start();
153   
154    // ¿·µ¬¤Ë¥»¥Ã¥È¤µ¤ì¤ë¤¿¤álfMobileGetSessionId()¤«¤é¤ÎÌá¤ê¤Ï""¤È¤Ê¤ë¡£
155    if(!$sessionId == "") {
156        gfPrintLog("lfMobileInitSession()¡§¥»¥Ã¥·¥ç¥ó¤¬Àµ¤·¤¯¥»¥Ã¥È¤µ¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£");
157        $session_ok = false;       
158    }
159   
160    if(!lfMobileValidateSession()) {
161        $session_ok = false;
162    }
163   
164    // ¥»¥Ã¥·¥ç¥óID¤Þ¤¿¤Ï¥»¥Ã¥·¥ç¥ó¥Ç¡¼¥¿¤¬Ìµ¸ú¤Ê¾ì¹ç¤Ï¡¢¥»¥Ã¥·¥ç¥óID¤òºÆÀ¸À®¤·¡¢
165    // ¥»¥Ã¥·¥ç¥ó¥Ç¡¼¥¿¤ò½é´ü²½¤¹¤ë¡£
166    if (!$session_ok) {
167        session_regenerate_id();
168        $_SESSION['mobile']['model'] = GC_MobileUserAgent::getModel();
169        $_SESSION['mobile']['phone_id'] = GC_MobileUserAgent::getId();
170        if($_SESSION['mobile']['phone_id'] != "") {
171            gfPrintLog("µ¡¼ïÈÖ¹æ¤Î¼èÆÀ¡§".$_SESSION['mobile']['phone_id']);
172        } else {
173            gfPrintLog("µ¡¼ïÈÖ¹æ¤Î¼èÆÀ¤¬¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£");
174        }
175        $_SESSION['mobile']['expires'] =  time() + MOBILE_SESSION_LIFETIME;
176
177        // ¿·¤·¤¤¥»¥Ã¥·¥ç¥óID¤òÉղ䷤ƥê¥À¥¤¥ì¥¯¥È¤¹¤ë¡£
178        if ($_GET['PHPSESSID'] != "") {
179            gfPrintLog("GETÍ׵ᤢ¤ê:".$_GET['PHPSESSID']);
180            gfPrintLog("¥ê¥À¥¤¥ì¥¯¥È:".gfAddSessionId());
181            // GET ¤Î¾ì¹ç¤ÏƱ¤¸¥Ú¡¼¥¸¤Ë¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë¡£
182            header('Location: ' . gfAddSessionId());
183        } else {
184            gfPrintLog("GETÍ×µá¤Ê¤·");
185            // GET °Ê³°¤Î¾ì¹ç¤Ï¥È¥Ã¥×¥Ú¡¼¥¸¤Ø¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë¡£
186            /*
187                Äê¿ôSID¡§PHPSESSID=<¥»¥Ã¥·¥ç¥óID>
188             */
189            gfPrintLog("¥ê¥À¥¤¥ì¥¯¥È:".URL_SITE_TOP . '?' . SID);
190            header('Location: ' . URL_SITE_TOP . '?' . SID);
191        }
192        exit;
193    }
194   
195    if($_SESSION['mobile']['phone_id'] == "") {
196        $_SESSION['mobile']['phone_id'] = GC_MobileUserAgent::getId();
197        if($_SESSION['mobile']['phone_id'] != "") {
198            gfPrintLog("µ¡¼ïÈÖ¹æ¤ÎºÆ¼èÆÀ¡§".$_SESSION['mobile']['phone_id']);
199        }
200    }
201   
202    // ¥»¥Ã¥·¥ç¥ó¤ÎÍ­¸ú´ü¸Â¤ò¹¹¿·¤¹¤ë¡£
203    $_SESSION['mobile']['expires'] = time() + MOBILE_SESSION_LIFETIME;
204}
205
206/**
207 * ¥â¥Ð¥¤¥ë¥µ¥¤¥ÈÍѤνÐÎϤνé´ü½èÍý¤ò¹Ô¤¦¡£
208 *
209 * ½ÐÎϤÎή¤ì
210 * 1. Smarty
211 * 2. ÆâÉô¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤«¤é Shift JIS ¤ËÊÑ´¹¤¹¤ë¡£
212 * 3. Á´³Ñ¥«¥¿¥«¥Ê¤òȾ³Ñ¥«¥¿¥«¥Ê¤ËÊÑ´¹¤¹¤ë¡£
213 * 4. ²èÁüÍѤΥ¿¥°¤òÄ´À°¤¹¤ë¡£
214 * 5. ³¨Ê¸»ú¥¿¥°¤ò³¨Ê¸»ú¥³¡¼¥É¤ËÊÑ´¹¤¹¤ë¡£
215 * 6. ½ÐÎÏ
216 *
217 * @return void
218 */
219function lfMobileInitOutput() {
220    // Smarty ÍѤΥǥ£¥ì¥¯¥È¥ê¡¼¤òºîÀ®¤¹¤ë¡£
221    @mkdir(COMPILE_DIR);
222
223    // ½ÐÎÏÍѤΥ¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò Shift JIS ¤Ë¸ÇÄꤹ¤ë¡£
224    mb_http_output('SJIS-win');
225
226    // ³¨Ê¸»ú¥¿¥°¤ò³¨Ê¸»ú¥³¡¼¥É¤ËÊÑ´¹¤¹¤ë¡£
227    ob_start(array('GC_MobileEmoji', 'handler'));
228
229    // üËö¤Ë¹ç¤ï¤»¤Æ²èÁü¥µ¥¤¥º¤òÊÑ´¹¤¹¤ë¡£
230    ob_start(array('GC_MobileImage', 'handler'));
231
232    // Á´³Ñ¥«¥¿¥«¥Ê¤òȾ³Ñ¥«¥¿¥«¥Ê¤ËÊÑ´¹¤¹¤ë¡£
233    ob_start(create_function('$buffer', 'return mb_convert_kana($buffer, "k", "SJIS-win");'));
234
235    // ÆâÉô¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤«¤é Shift JIS ¤ËÊÑ´¹¤¹¤ë¡£
236    ob_start('mb_output_handler');
237}
238
239/**
240 * ¥â¥Ð¥¤¥ë¥µ¥¤¥ÈÍѤνé´ü½èÍý¤ò¹Ô¤¦¡£
241 *
242 * @return void
243 */
244function sfMobileInit() {
245    lfMobileInitInput();
246    if (basename(dirname($_SERVER['SCRIPT_NAME'])) != 'unsupported') {
247        lfMobileCheckCompatibility();
248        lfMobileInitSession();
249    }
250
251    lfMobileInitOutput();
252}
253
254/**
255 * LocationÅù¤Ç¥»¥Ã¥·¥ç¥óID¤òÉղ乤ëɬÍפ¬¤¢¤ëURL¤Ë¥»¥Ã¥·¥ç¥óID¤òÉղ乤롣
256 *
257 * @return String
258 */
259function gfAddSessionId($url = null) {
260    $objURL = new Net_URL($url);
261    $objURL->addQueryString(session_name(), session_id());
262    return $objURL->getURL();
263}
264
265/**
266 * ¶õ¥á¡¼¥ëÍѤΥȡ¼¥¯¥ó¤òÀ¸À®¤¹¤ë¡£
267 *
268 * @return string À¸À®¤·¤¿¥È¡¼¥¯¥ó¤òÊÖ¤¹¡£
269 */
270function lfGenerateKaraMailToken() {
271    $token_chars = '0123456789abcdefghijklmnopqrstuvwxyz';
272    $token_chars_length = strlen($token_chars);
273    $token_length = 10;
274    $token = '';
275
276    while ($token_length > 0) {
277        $token .= $token_chars{mt_rand(0, $token_chars_length - 1)};
278        --$token_length;
279    }
280
281    return $token;
282}
283
284/**
285 * ¶õ¥á¡¼¥ë´ÉÍý¥Æ¡¼¥Ö¥ë¤Ë¿·µ¬¥¨¥ó¥È¥ê¡¼¤òÅÐÏ¿¤·¡¢¥È¡¼¥¯¥ó¤òÊÖ¤¹¡£
286 *
287 * @param string $next_url ¶õ¥á¡¼¥ë¼õ¤±ÉÕ¤±¸å¤ËÁ«°Ü¤µ¤»¤ë¥Ú¡¼¥¸ (¥â¥Ð¥¤¥ë¥µ¥¤¥È¥È¥Ã¥×¤«¤é¤ÎÁêÂÐURL)
288 * @param string $session_id ¥»¥Ã¥·¥ç¥óID (¾Êά¤·¤¿¾ì¹ç¤Ï¸½ºß¤Î¥»¥Ã¥·¥ç¥óID)
289 * @return string|false ¥È¡¼¥¯¥ó¤òÊÖ¤¹¡£¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç¤Ïfalse¤òÊÖ¤¹¡£
290 */
291function gfPrepareKaraMail($next_url, $session_id = null) {
292    if (!isset($session_id)) {
293        $session_id = session_id();
294    }
295
296    $objQuery = new SC_Query;
297
298    // GC
299    $time = date('Y-m-d H:i:s', time() - MOBILE_SESSION_LIFETIME);
300    $objQuery->delete('dtb_mobile_kara_mail', 'email IS NULL AND create_date < ?', array($time));
301
302    $objQuery->delete('dtb_mobile_kara_mail', 'session_id = ?', array($session_id));
303
304    $arrValues = array('session_id' => $session_id,
305                       'next_url'   => $next_url);
306
307    $try = 10;
308
309    while ($try > 0) {
310        $arrValues['token'] = $token = lfGenerateKaraMailToken();
311
312        $objQuery->insert('dtb_mobile_kara_mail', $arrValues);
313        $count = $objQuery->count('dtb_mobile_kara_mail', 'token = ?', array($token));
314
315        if ($count == 1) {
316            break;
317        }
318
319        $objQuery->delete('dtb_mobile_kara_mail', 'session_id = ?', array($session_id));
320        $token = false;
321        --$try;
322    }
323
324    return $token;
325}
326
327/**
328 * ¶õ¥á¡¼¥ë¤«¤é¼èÆÀ¤·¤¿¥á¡¼¥ë¥¢¥É¥ì¥¹¤ò¶õ¥á¡¼¥ë´ÉÍý¥Æ¡¼¥Ö¥ë¤ËÅÐÏ¿¤¹¤ë¡£
329 *
330 * @param string $token ¥È¡¼¥¯¥ó
331 * @param string $email ¥á¡¼¥ë¥¢¥É¥ì¥¹
332 * @return boolean À®¸ù¤·¤¿¾ì¹ç¤Ïtrue¡¢¼ºÇÔ¤·¤¿¾ì¹ç¤Ïfalse¤òÊÖ¤¹¡£
333 */
334function gfRegisterKaraMail($token, $email) {
335    $objQuery = new SC_Query;
336
337    // GC
338    $time = date('Y-m-d H:i:s', time() - MOBILE_SESSION_LIFETIME);
339    $objQuery->delete('dtb_mobile_kara_mail',
340                      '(email IS NULL AND create_date < ?) OR (email IS NOT NULL AND receive_date < ?)',
341                      array($time, $time));
342
343    $kara_mail_id = $objQuery->get('dtb_mobile_kara_mail', 'kara_mail_id', 'token = ?', array($token));
344    if (!isset($kara_mail_id)) {
345        return false;
346    }
347
348    $arrValues = array('email' => $email);
349    $arrRawValues = array('receive_date' => 'now()');
350    $objQuery->update('dtb_mobile_kara_mail', $arrValues, 'kara_mail_id = ?', array($kara_mail_id), $arrRawValues);
351
352    return true;
353}
354
355/**
356 * ¶õ¥á¡¼¥ë´ÉÍý¥Æ¡¼¥Ö¥ë¤«¤é¥È¡¼¥¯¥ó¤¬°ìÃפ¹¤ë¹Ô¤òºï½ü¤·¡¢
357 * ¼¡¤ËÁ«°Ü¤µ¤»¤ë¥Ú¡¼¥¸¤ÎURL¤òÊÖ¤¹¡£¡¡
358 *
359 * ¥á¡¼¥ë¥¢¥É¥ì¥¹¤Ï $_SESSION['mobile']['kara_mail_from'] ¤ËÅÐÏ¿¤µ¤ì¤ë¡£
360 *
361 * @param string $token ¥È¡¼¥¯¥ó
362 * @return string|false URL¤òÊÖ¤¹¡£¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç¤Ïfalse¤òÊÖ¤¹¡£
363 */
364function gfFinishKaraMail($token) {
365    $objQuery = new SC_Query;
366
367    $arrRow = $objQuery->getrow('dtb_mobile_kara_mail', 'session_id, next_url, email',
368                                'token = ? AND email IS NOT NULL AND receive_date >= ?',
369                                array($token, date('Y-m-d H:i:s', time() - MOBILE_SESSION_LIFETIME)));
370    if (!isset($arrRow)) {
371        return false;
372    }
373
374    $objQuery->delete('dtb_mobile_kara_mail', 'token = ?', array($token));
375
376    list($session_id, $next_url, $email) = $arrRow;
377    $objURL = new Net_URL(MOBILE_SITE_URL . $next_url);
378    $objURL->addQueryString(session_name(), $session_id);
379    $url = $objURL->getURL();
380
381    session_id($session_id);
382    session_start();
383    $_SESSION['mobile']['kara_mail_from'] = $email;
384    session_write_close();
385
386    return $url;
387}
388
389/**
390 * ³°Éô¥µ¥¤¥ÈÏ¢·ÈÍѤ˥»¥Ã¥·¥ç¥óID¤È¥Ñ¥é¥á¡¼¥¿¡¼¤ÎÁȤ߹ç¤ï¤»¤òÊݸ¤¹¤ë¡£
391 *
392 * @param string $param_key ¥Ñ¥é¥á¡¼¥¿¡¼Ì¾
393 * @param string $param_value ¥Ñ¥é¥á¡¼¥¿¡¼ÃÍ
394 * @param string $url URL
395 * @return void
396 */
397function sfMobileSetExtSessionId($param_key, $param_value, $url) {
398    $objQuery = new SC_Query;
399
400    // GC
401    $time = date('Y-m-d H:i:s', time() - MOBILE_SESSION_LIFETIME);
402    $objQuery->delete('dtb_mobile_ext_session_id', 'create_date < ?', array($time));
403
404    $arrValues = array('session_id'  => session_id(),
405                       'param_key'   => $param_key,
406                       'param_value' => $param_value,
407                       'url'         => $url);
408
409    $objQuery->insert('dtb_mobile_ext_session_id', $arrValues);
410}
411
412/**
413 * ¥á¡¼¥ë¥¢¥É¥ì¥¹¤¬·ÈÂӤΤâ¤Î¤«¤É¤¦¤«¤òȽÊ̤¹¤ë¡£
414 *
415 * @param string $address ¥á¡¼¥ë¥¢¥É¥ì¥¹
416 * @return boolean ·ÈÂӤΥ᡼¥ë¥¢¥É¥ì¥¹¤Î¾ì¹ç¤Ïtrue¡¢¤½¤ì°Ê³°¤Î¾ì¹ç¤Ïfalse¤òÊÖ¤¹¡£
417 */
418function gfIsMobileMailAddress($address) {
419    $arrMobileMailDomains = array('docomo.ne.jp', 'ezweb.ne.jp', 'softbank.ne.jp', 'vodafone.ne.jp');
420
421    if (defined('MOBILE_ADDITIONAL_MAIL_DOMAINS')) {
422        $arrMobileMailDomains = array_merge($arrMobileMailDomains, split('[ ,]+', MOBILE_ADDITIONAL_MAIL_DOMAINS));
423    }
424
425    foreach ($arrMobileMailDomains as $domain) {
426        $domain = str_replace('.', '\\.', $domain);
427        if (preg_match("/@([^@]+\\.)?$domain\$/", $address)) {
428            return true;
429        }
430    }
431
432    return false;
433}
434?>
Note: See TracBrowser for help on using the repository browser.