protected function __construct()
 {
     require_once 'Net/UserAgent/Mobile.php';
     self::$mobile = Net_UserAgent_Mobile::factory();
     if (self::$mobile instanceof Net_UserAgent_Mobile_Error) {
         self::$mobile = new Net_UserAgent_Mobile_NonMobile('');
     }
 }
 /**
  * detect
  *
  * @param  Symfony\Component\HttpFoundation\Request $request
  *
  * @return string  The type name of the user agent (ex. 'docomo')
  */
 public function detect(Request $request)
 {
     $ua = parent::detect($request);
     if (!$ua) {
         $mobile = \Net_UserAgent_Mobile::factory($request->server->get('HTTP_USER_AGENT'));
         $ua = strtolower($mobile->getCarrierlongName());
     }
     return $ua;
 }
 protected function __construct()
 {
     require_once 'Net/UserAgent/Mobile.php';
     require_once 'Net/UserAgent/Mobile/NonMobile.php';
     // ignore `Non-static method Net_UserAgent_Mobile::factory()' error
     $oldErrorLevel = error_reporting(error_reporting() & ~E_STRICT);
     self::$mobile = Net_UserAgent_Mobile::factory();
     error_reporting($oldErrorLevel);
     if (self::$mobile instanceof Net_UserAgent_Mobile_Error) {
         self::$mobile = new Net_UserAgent_Mobile_NonMobile('');
     }
 }
Exemple #4
0
function after($output)
{
    require_once 'Net/UserAgent/Mobile.php';
    if (Net_UserAgent_Mobile::factory()->isDoCoMo()) {
        $output = after_render_docomo($output);
    } elseif (Net_UserAgent_Mobile::factory()->isSoftBank()) {
        $output = after_render_softbank($output);
    } elseif (Net_UserAgent_Mobile::factory()->isEZweb()) {
        $output = after_render_au($output);
    } else {
        $output = after_render_pc($output);
    }
    return $output;
}
Exemple #5
0
 /**
  * ファクトリー
  *
  * @return Net_UserAgent_Mobile
  */
 public function factory()
 {
     $userAgent = $this->_config['user_agent'];
     $netUserAgentMobile = Net_UserAgent_Mobile::factory($userAgent);
     if (PEAR::isError($netUserAgentMobile)) {
         switch (true) {
             case strstr($userAgent, 'DoCoMo'):
                 $botAgent = BEAR_Agent::BOT_DOCOMO;
                 break;
             case strstr($userAgent, 'KDDI-'):
                 $botAgent = BEAR_Agent::BOT_AU;
                 break;
             case preg_match('/(SoftBank|Vodafone|J-PHONE|MOT-)/', $userAgent):
                 $botAgent = BEAR_Agent::BOT_SOFTBANK;
                 break;
             default:
                 $botAgent = '';
         }
         $netUserAgentMobile = Net_UserAgent_Mobile::factory($botAgent);
     }
     return $netUserAgentMobile;
 }
 function ZenCart_Mobile($strUserAgent, $db)
 {
     $this->mobile =& Net_UserAgent_Mobile::factory($strUserAgent);
     $this->db = $db;
 }
Exemple #7
0
 /**
  * creates a new {@link Net_UserAgent_Mobile_Common} subclass instance or returns
  * a instance from existent ones
  *
  * @param string $userAgent User-Agent string
  * @return Net_UserAgent_Mobile_Common a newly created or an existing
  *     Net_UserAgent_Mobile_Common object
  * @throws Net_UserAgent_Mobile_Error
  */
 function &singleton($userAgent = null)
 {
     static $instances;
     if (!isset($instances)) {
         $instances = array();
     }
     if (is_null($userAgent)) {
         $userAgent = @$_SERVER['HTTP_USER_AGENT'];
     }
     if (!array_key_exists($userAgent, $instances)) {
         $instances[$userAgent] = Net_UserAgent_Mobile::factory($userAgent);
     }
     return $instances[$userAgent];
 }
Exemple #8
0
 /**
  * UAでセッションの妥当性をチェックする
  *
  * @return bool
  */
 private function _checkUA()
 {
     // {{{ docomoはUTN時にUA後部が変わるので機種名で検証する
     $mobile = Net_UserAgent_Mobile::singleton();
     if ($mobile->isDoCoMo()) {
         $mobile_b = Net_UserAgent_Mobile::factory($_SESSION[$this->sess_array]['ua']);
         if ($mobile_b->getModel() == $mobile->getModel()) {
             return true;
         }
     }
     // }}}
     // $offset = 12;
     if (empty($offset)) {
         $offset = strlen($_SERVER['HTTP_USER_AGENT']);
     }
     if (substr($_SERVER['HTTP_USER_AGENT'], 0, $offset) == substr($_SESSION[$this->sess_array]['ua'], 0, $offset)) {
         return true;
     } else {
         return false;
     }
 }
 /**
  * ユーザーエージェントチェック
  *
  * @access  private
  */
 function _checkAgent()
 {
     if (!$this->isMobile()) {
         return;
     }
     static $userAgent;
     if ($userAgent === NULL) {
         $userAgent = Net_UserAgent_Mobile::factory();
     }
     $container =& DIContainerFactory::getContainer();
     $getdata =& $container->getComponent("GetData");
     $config =& $getdata->getParameter("config");
     //$configView =& $container->getComponent("configView");
     //$config = $configView->getConfigByCatid(_SYS_CONF_MODID, _GENERAL_CONF_CATID);
     $session =& $container->getComponent("Session");
     $tel_id = $userAgent->getSerialNumber() . $userAgent->getUID();
     $tel_id = !empty($tel_id) ? $userAgent->getUserAgent() . " " . $tel_id : "";
     if (empty($tel_id)) {
         $tel_id = $session->getParameter("_mobile_tel_id");
     }
     $this->_mobile_info = array("currier" => $userAgent->getCarrierLongName(), "user_agent" => $userAgent->getUserAgent(), "tel_id" => $tel_id, "utn" => $userAgent->isDoCoMo() ? " utn" : "", "model" => $userAgent->getModel(), "autologin" => $config[0]['autologin_use']['conf_value'] == _AUTOLOGIN_OK ? _AUTOLOGIN_OK : _OFF);
     $session->setParameter("_mobile_tel_id", $tel_id);
     if ($userAgent->isDoCoMo()) {
         if (empty($_SERVER["HTTP_REFERER"])) {
             $_SERVER["HTTP_REFERER"] = BASE_URL;
         }
     }
     /*
      * IPチェック(調査日 2010.09.01)
      */
     $mobile_ip["DoCoMo"] = array("210.153.84.0/24", "210.136.161.0/24", "210.153.86.0/24", "124.146.174.0/24", "124.146.175.0/24", "202.229.176.0/24", "202.229.177.0/24", "202.229.178.0/24", "202.229.179.0/24", "111.89.188.0/24", "111.89.189.0/24", "111.89.190.0/24", "111.89.191.0/24", "210.153.87.0/24", "203.138.180.0/24", "203.138.181.0/24", "203.138.203.0/24");
     $mobile_ip["EZWeb"] = array("210.230.128.224/28", "121.111.227.160/27", "61.117.1.0/28", "219.108.158.0/27", "219.125.146.0/28", "61.117.2.32/29", "61.117.2.40/29", "219.108.158.40/29", "219.125.148.0/25", "222.5.63.0/25", "222.5.63.128/25", "222.5.62.128/25", "59.135.38.128/25", "219.108.157.0/25", "219.125.145.0/25", "121.111.231.0/25", "121.111.227.0/25", "118.152.214.192/26", "118.159.131.0/25", "118.159.133.0/25", "118.159.132.160/27", "111.86.142.0/26", "111.86.141.64/26", "111.86.141.128/26", "111.86.141.192/26", "118.159.133.192/26", "111.86.143.192/27", "111.86.143.224/27", "111.86.147.0/27", "111.86.142.128/26", "111.86.142.192/26", "111.86.143.0/26", "61.117.0.128/25", "61.117.1.128/25", "218.222.1.0/25", "218.222.1.128/28", "218.222.1.160/28", "61.202.3.64/28", "219.125.148.160/27", "121.111.231.160/27", "219.125.148.192/27", "222.7.56.0/27", "222.7.56.32/27", "222.7.56.96/27", "222.7.56.128/27", "222.7.56.192/27", "222.7.56.224/27", "222.7.57.64/27", "222.7.57.96/27", "222.7.57.128/27", "222.7.57.160/27", "222.7.57.192/27", "222.7.57.224/27", "219.125.151.128/27", "219.125.151.160/27", "219.125.151.192/27", "222.7.57.32/27", "222.15.68.192/26", "59.135.39.128/27", "118.152.214.160/27", "118.152.214.128/27", "222.1.136.96/27", "222.1.136.64/27", "59.128.128.0/20", "210.169.40.0/24", "211.5.2.128/25", "222.7.57.0/24", "210.196.3.192/26", "211.5.7.0/24", "59.135.38.128/25", "210.196.5.192/26", "218.222.1.0/24", "61.117.0.0/24", "210.230.128.0/24", "61.117.1.0/24", "219.125.148.0/24", "210.230.141.192/26", "219.108.158.0/26", "61.117.2.0/26", "210.234.105.32/29", "210.251.1.192/26", "219.125.151.128/25", "210.234.108.64/26", "61.202.3.0/24", "210.251.2.0/27", "222.5.63.0/24", "211.5.1.0/24", "222.7.56.0/24");
     $mobile_ip["Softbank"] = array("123.108.237.0/27", "202.253.96.224/27", "210.146.7.192/26", "210.175.1.128/25", "123.108.237.224/27", "202.253.96.0/27", "123.108.236.0/24", "202.179.203.0/24", "202.179.203.0/24", "210.146.60.128/25", "210.169.171.0/24", "210.169.176.0/24", "210.175.1.128/25", "210.169.130.112/28", "210.228.189.0/24", "123.108.236.0/24", "202.179.204.0/24", "210.146.60.192/26", "210.151.9.128/26", "210.228.189.0/24", "211.8.159.128/25", "123.108.237.240/28", "202.253.96.0/28", "123.108.237.240/28", "202.253.96.0/28", "219.73.128.0/17", "117.46.128.0/17");
     $mobile_ip["WILLCOM"] = array("61.198.128.0/24", "61.198.129.0/24", "61.198.130.0/24", "61.198.131.0/24", "61.198.132.0/24", "61.198.133.0/24", "61.198.134.0/24", "61.198.135.0/24", "61.198.136.0/24", "61.198.137.0/24", "61.198.138.100/32", "61.198.138.101/32", "61.198.138.102/32", "61.198.138.103/32", "61.198.139.0/29", "61.198.139.128/27", "61.198.139.160/28", "61.198.140.0/24", "61.198.141.0/24", "61.198.142.0/24", "61.198.143.0/24", "61.198.160.0/24", "61.198.161.0/24", "61.198.162.0/24", "61.198.163.0/24", "61.198.164.0/24", "61.198.165.0/24", "61.198.166.0/24", "61.198.168.0/24", "61.198.169.0/24", "61.198.170.0/24", "61.198.171.0/24", "61.198.172.0/24", "61.198.173.0/24", "61.198.174.0/24", "61.198.175.0/24", "61.198.248.0/24", "61.198.249.0/24", "61.198.250.0/24", "61.198.251.0/24", "61.198.252.0/24", "61.198.253.0/24", "61.198.254.0/24", "61.198.255.0/24", "61.204.0.0/24", "61.204.2.0/24", "61.204.3.0/25", "61.204.3.128/25", "61.204.4.0/24", "61.204.5.0/24", "61.204.6.0/25", "61.204.6.128/25", "61.204.7.0/25", "61.204.92.0/24", "61.204.93.0/24", "61.204.94.0/24", "61.204.95.0/24", "125.28.0.0/24", "125.28.1.0/24", "125.28.15.0/24", "125.28.16.0/24", "125.28.17.0/24", "125.28.2.0/24", "125.28.3.0/24", "125.28.4.0/24", "125.28.5.0/24", "125.28.8.0/24", "210.168.246.0/24", "210.168.247.0/24", "210.169.92.0/24", "210.169.93.0/24", "210.169.94.0/24", "210.169.95.0/24", "210.169.96.0/24", "210.169.97.0/24", "210.169.98.0/24", "210.169.99.0/24", "211.126.192.128/25", "211.18.232.0/24", "211.18.233.0/24", "211.18.234.0/24", "211.18.235.0/24", "211.18.236.0/24", "211.18.237.0/24", "219.108.10.0/24", "219.108.11.0/24", "219.108.12.0/24", "219.108.13.0/24", "219.108.14.0/24", "219.108.15.0/24", "219.108.7.0/24", "219.108.8.0/24", "219.108.9.0/24", "221.119.0.0/24", "221.119.1.0/24", "221.119.2.0/24", "221.119.3.0/24", "221.119.4.0/24", "221.119.6.0/24", "221.119.7.0/24", "221.119.8.0/24", "221.119.9.0/24", "114.20.49.0/24", "114.20.50.0/24", "114.20.51.0/24", "114.20.52.0/24", "114.20.53.0/24", "114.20.54.0/24", "114.20.55.0/24", "114.20.56.0/24", "114.20.57.0/24", "114.20.58.0/24", "114.20.59.0/24", "114.20.60.0/24", "114.20.61.0/24", "114.20.62.0/24", "114.20.63.0/24", "114.20.64.0/24", "114.20.65.0/24", "114.20.66.0/24", "114.20.67.0/24", "114.21.255.0/27", "219.108.2.0/24", "219.108.3.0/24", "125.28.6.0/24", "125.28.7.0/24", "125.28.11.0/24", "125.28.12.0/24", "125.28.13.0/24", "125.28.14.0/24", "211.18.238.0/24", "211.18.239.0/24", "219.108.4.0/24", "219.108.5.0/24", "219.108.6.0/24", "221.119.5.0/24", "124.211.23.0/26");
     $this->_mobile_info["ip_address"] = $_SERVER['REMOTE_ADDR'];
     $this->_mobile_info["ip_addr_zone"] = "";
     $this->_mobile_info["proper_route"] = _OFF;
     foreach ($mobile_ip as $key => $ip_list) {
         foreach ($ip_list as $zone) {
             $valid = Net_IPv4::ipInNetwork($this->_mobile_info["ip_address"], $zone);
             if ($valid) {
                 $this->_mobile_info["ip_addr_zone"] = $zone;
                 $this->_mobile_info["proper_route"] = _ON;
                 break;
             }
         }
         if ($valid) {
             break;
         }
     }
     if (empty($this->_mobile_info['proper_route'])) {
         $this->_mobile_info['autologin'] = _OFF;
     }
 }
Exemple #10
0
 /**
  * UAでセッションの妥当性をチェックする
  *
  * @access  private
  * @return  boolean
  */
 function checkUA()
 {
     // ibisBrowser 219.117.203.9
     // Mozilla/4.0 (compatible; ibisBrowser; ip210.153.84.0; ser0123456789ABCDE)
     // http://qb5.2ch.net/test/read.cgi/operate/1141521195/748
     if ($_SERVER['REMOTE_ADDR'] == '219.117.203.9') {
         return true;
     }
     // {{{ docomoはUTN時にUA後部が変わるので機種名で検証する
     $mobile =& Net_UserAgent_Mobile::singleton();
     if ($mobile->isDoCoMo()) {
         $mobile_b =& Net_UserAgent_Mobile::factory($_SESSION[$this->sess_array]['ua']);
         if ($mobile_b->getModel() == $mobile->getModel()) {
             return true;
         }
     }
     // }}}
     $ua = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : null;
     // $offset = 12;
     if (empty($offset)) {
         $offset = strlen($ua);
     }
     if (substr($ua, 0, $offset) == substr($_SESSION[$this->sess_array]['ua'], 0, $offset)) {
         return true;
     }
     return false;
 }
Exemple #11
0
 /**
  * Net_UserAgent_Mobile::singleton() の結果を取得する。
  * REAR Error は false に変換される。
  *
  * @param   string  $ua
  * @return  Net_UserAgent_Mobile|false
  */
 public static function getNet_UserAgent_Mobile($ua = null)
 {
     static $cache_ = null;
     if (is_null($ua) and !is_null($cache_)) {
         return $cache_;
     }
     if (!is_null($ua)) {
         $nuam = Net_UserAgent_Mobile::factory($ua);
     } else {
         $nuam = Net_UserAgent_Mobile::singleton();
     }
     if (PEAR::isError($nuam)) {
         trigger_error($nuam->toString, E_USER_WARNING);
         $return = false;
     } elseif (!$nuam) {
         $return = false;
         // null
     } else {
         $return = $nuam;
     }
     if (is_null($ua)) {
         $cache_ = $return;
     }
     return $return;
 }