source: branches/feature-module-zeus/data/include/mobile.inc @ 15438

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