CodeIgniter移动OS检测

时间:2013-05-31 14:37:49

标签: php codeigniter

我已经能够通过CodeIgniter检测用户正在使用的移动设备,但我无法检测当前移动设备正在运行的操作系统。

假设某人正在使用在Android上运行的三星移动设备,而另一个人正在使用仍然是三星的普通Java移动操作系统。如何查看每个用户所在的操作系统?

6 个答案:

答案 0 :(得分:19)

http://mobiledetect.net下载库 将Mobile_Detect.php放入'libraries'

在主控制器内

public function index() {
    $this -> load -> library('Mobile_Detect');
    $detect = new Mobile_Detect();
    if ($detect->isMobile() || $detect->isTablet() || $detect->isAndroidOS()) {
        header("Location: ".$this->config->item('base_url')."/mobile"); exit;
    }
}

查找有关http://dwij.co.in/mobile-os-detection-in-php-codeigniter

的文档

答案 1 :(得分:5)

我借用/偷走了从phpexcel codeigniter集成加载类的方法。

http://mobiledetect.net下载库,但将Mobile_Detect.php放入' third_party'然后在'库中创建MobileDetect.php'并将以下代码放入其中:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once APPPATH."third_party/Mobile_Detect.php";

class MobileDetect extends Mobile_Detect {
  public function __construct() {
    parent::__construct();
  }
}

现在您可以在控制器中使用它,如下所示:

$this->load->library('MobileDetect');
if ($this->mobiledetect->isMobile()) {
    //do something cool;
}

我确定还有其他(更好的)方法可以将mobiledetect整合到codeigniter中,我只想分享我做的方式,希望它有所帮助。

几点说明:

1)如果你将Mobile_Detect.php直接放在&#39; libraries&#39;中,你就不必使用存根文件MobileDetect.php。您仍然可以在没有$detect = new Mobile_Detect();的情况下使用它,而是调用喜欢此功能:$this->mobile_detect->isMobile()

2)只要遵循CodeIgniter准则,存根文件类的名称就可以是您想要的任何名称。例如,您可以使用&#39; MD&#39;作为类名,然后使用$this->md->isMobile()

引用它

3)我建议在Mobile_Detect.php打开if ( ! defined('BASEPATH')) exit('No direct script access allowed');之后添加<?php,以防止直接访问该类。

答案 2 :(得分:4)

加载lib。

$this->load->library('user_agent');

使用此功能检测是否为移动

$mobile=$this->agent->is_mobile();
if($mobile){
  //your code
}

答案 3 :(得分:1)

https://github.com/serbanghita/Mobile-Detect下载图书馆 将Mobile_Detect.php复制到third_party目录中 在codeigniter中创建一个帮助器类 //此功能将返回用户代理电话或平板电脑或计算机

if(!function_exists('is_MTC')):
    function is_MTC()
    {
        require(APPPATH .'third_party/Mobile_Detect.php');
        $detect = new Mobile_Detect;
        return ($detect->isMobile() ? ($detect->isTablet() ? 'tablet' : 'phone') : 'computer');
    }
endif;

在视图中您可以直接调用is_MTC函数并检查用户代理
//这将打印用户代理

<?php echo is_MTC(); ?>

了解有关codeigniter helper函数https://ellislab.com/codeigniter/user-guide/general/helpers.html

的更多信息

答案 4 :(得分:0)

如果您使用会话类,则会在。user_agent

中内置一个变量

答案 5 :(得分:0)

CodeIgniter内置了对browser or agent detection in codeigniter

的支持

内部控制器使用以下示例代码:

$this->load->library('user_agent');
if ($this->agent->is_mobile()) {
    // Is a mobile browser
} else {
     // Is a Desktop/Bot User Agent
}