[扩展推荐] Laravel User Agent 轻松识别客户端信息
91

说明

laravel-agent 是一个为 Laravel 定制的客户端识别扩展包, 基于 Mobile Detect , 提供了非常优雅的接口.

安装

使用 composer 安装:

composer require jenssegers/agent

修改 app/config/app.php 添加 ServiceProvider :

'Jenssegers\Agent\AgentServiceProvider',

修改 app/config/app.php 添加 alias:

'Agent' => 'Jenssegers\Agent\Facades\Agent'

基础用法

// 操作系统
Agent::is('Windows');
Agent::is('Firefox');
Agent::is('iPhone');
Agent::is('OS X');

// 厂商产品定位
Agent::isAndroidOS();
Agent::isNexus();
Agent::isSafari();

// 设备类型
Agent::isMobile();
Agent::isTablet();
Agent::isDesktop();

// 语言
$languages = Agent::languages();
// ['nl-nl', 'nl', 'en-us', 'en']

// 是否是机器人
Agent::isRobot();

// 获取设备信息 (iPhone, Nexus, AsusTablet, ...)
Agent::device();

// 系统信息  (Ubuntu, Windows, OS X, ...)
Agent::platform();

// 浏览器信息  (Chrome, IE, Safari, Firefox, ...)
Agent::browser();

// 获取浏览器版本
$browser = Agent::browser();
$version = Agent::version($browser);

// 获取系统版本
$platform = Agent::platform();
$version = Agent::version($platform);

一个例子

下面是一段微信扫一扫下载 App 的链接的逻辑

$android_download_link = 'http://7xim5a.com2.z0.glb.qiniucdn.com/app.apk';
$weichat_download_link = 'http://a.app.qq.com/o/simple.jsp?pkgname=com.app.indentifior';
$ios_download_link     = 'https://itunes.apple.com/cn/app/kou-yu-jiao-er/app-id*?l=en&mt=8';
$download_link         = '';

// 如果是移动端访问的话 (phones or tablets).
if ( Agent::isMobile() )
{
    if( Agent::isiOS() )
    {
        $download_link = $ios_download_link;
        // 微信访问
        if (strpos(Agent::getUserAgent(), 'MicroMessenger') !== false)
        {
            // echo "<h1>微信用户若不能安装, 请点击右上角的跳转按钮, 选择 \"在 Safari 中打开\" 即可正常跳转哦 ^_^ .</h1>";
            // exit;
            $download_link = $weichat_download_link;
        }
    }
    if( Agent::isAndroidOS() )
    {
        $download_link = $android_download_link;
        // 微信访问
        if (strpos(Agent::getUserAgent(), 'MicroMessenger') !== false)
        {
            // 使用应用宝可以访问
            $download_link = $weichat_download_link;
        }
    }
}

View

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <h1>处理中... </h1>

    <script type="text/javascript">
        window.onload=function(){
          setTimeout("window.location.href='<?php echo $downloadlink; ?>'",1000);
        }
    </script>

</body>
</html>

Practice makes perfect.

本帖已被设为精华帖!
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 18
hareluya

@lovecn 使用中国镜像 或者 查看composer文档^^

3年前
hareluya

补充一个: https://github.com/hisorange/browser-detect 也不赖~

3年前

支持laravel5么?

1年前

前后的分离的方式,还能用吗

1年前
ziyanziyu

@缺心 为什么不能呢,获取客户端信息是根据header信息来确定,只要有通信,就可以的.

1年前

file为什么我报这个,composer后

2个月前
Summer

@scenery 掉 phpcomposer 的坑了,请使用 https://laravel-china.org/composer

2个月前
hareluya

3年了。。。
Laravel request类也有这个方法了:
string userAgent()
Get the client user agent.

2个月前

@hareluya 新方法?怎么用起来啊,我放在blade模板里渲染出来一长串,不知道对不对

4周前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!