ここの情報は古いです。ご理解頂いた上でお取り扱いください。

source: OpenPNE/trunk/webapp/lib/OpenPNE/KtaiID.php @ 8188

Last change on this file since 8188 was 8188, checked in by ebihara, 12 years ago

#2811:merged r7645 (thanks to kunitsuji1109)

File size: 3.3 KB
Line 
1<?php
2/**
3 * @copyright 2005-2008 OpenPNE Project
4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
5 */
6
7/**
8 * OpenPNE_KtaiID
9 * 個体識別番号を取得する
10 */
11class OpenPNE_KtaiID
12{
13    /**
14     * constructor
15     *
16     * @access public
17     */
18    function OpenPNE_KtaiID()
19    {
20    }
21
22    /**
23     * 個体識別番号を取得する (static)
24     *
25     * @access public
26     * @return string 個体識別番号(取得できなかった場合は空文字列)
27     */
28    function getID()
29    {
30        $id = '';
31        $ua = $_SERVER['HTTP_USER_AGENT'];
32
33        // DoCoMo
34        // emobile 2008-06-30 KUNIHARU Tsujioka update
35        if (!strncmp($ua, 'DoCoMo', 6)) {
36            if (isset($_SERVER['HTTP_X_DCMGUID'])) {
37                $id = $_SERVER['HTTP_X_DCMGUID'];
38
39            } else {
40                // mova
41                if (substr($ua, 7, 3) === '1.0') {
42                    // 『/』区切りで最後のものを取る
43                    $pieces = explode('/', $ua);
44                    $ser = array_pop($pieces);
45
46                    if (!strncmp($ser, 'ser', 3)) {
47                        $id = $ser;
48                    }
49                }
50                // FOMA
51                elseif (substr($ua, 7, 3) === '2.0') {
52                    $icc = substr($ua, -24, -1);
53
54                    if (!strncmp($icc, 'icc', 3)) {
55                        $id = $icc;
56                    }
57                }
58            }
59        }
60        // Vodafone(PDC)
61        elseif (!strncmp($ua, 'J-PHONE', 7)) {
62            $pieces = explode('/', $ua);
63            $piece_sn = explode(' ', $pieces[3]);
64            $sn = array_shift($piece_sn);
65
66            if (!strncmp($sn, 'SN', 2)) {
67                $id = $sn;
68            }
69        }
70        // Vodafone(3G)
71        //* Up.Browser を搭載しているものがある(auより先に評価)
72        //* MOTは製造番号を取得できない
73        elseif (!strncmp($ua, 'Vodafone', 8)) {
74            $pieces = explode('/', $ua);
75            $piece_sn = explode(' ', $pieces[4]);
76            $sn = array_shift($piece_sn);
77
78            if (!strncmp($sn, 'SN', 2)) {
79                $id = $sn;
80            } elseif (isset($_SERVER['HTTP_X_JPHONE_UID'])) { // UID を取得
81                $id = $_SERVER['HTTP_X_JPHONE_UID'];
82            }
83        }
84        // SoftBank
85        elseif (!strncmp($ua, 'SoftBank', 8)) {
86            $pieces = explode('/', $ua);
87            $piece_sn = explode(' ', $pieces[4]);
88            $sn = array_shift($piece_sn);
89
90            if (!strncmp($sn, 'SN', 2)) {
91                $id = $sn;
92            } elseif (isset($_SERVER['HTTP_X_JPHONE_UID'])) { // UID を取得
93                $id = $_SERVER['HTTP_X_JPHONE_UID'];
94            }
95        }
96
97        // au
98        elseif (!strncmp($ua, 'KDDI', 4)
99              || !strncasecmp($ua, 'up.browser', 10)
100            ) {
101            //サブスクラバID(au)
102            if ($_SERVER['HTTP_X_UP_SUBNO']) {
103                $id = $_SERVER['HTTP_X_UP_SUBNO'];
104            }
105        }
106        // emobile 2008-05-13 KUNIHARU Tsujioka update
107        elseif (strpos($ua, 'emobile') !== false
108              || stristr($this->_ua, 'Huawei') != false
109              || isset($_SERVER['HTTP_X_EM_UID'])
110            ) {
111               $id = $_SERVER['HTTP_X_EM_UID'];
112            }
113
114        return $id;
115    }
116}
117
118?>
Note: See TracBrowser for help on using the repository browser.