PHP Laravel:如何获取客户端浏览器/设备?

时间:2016-05-18 07:53:06

标签: php laravel laravel-5

我正在构建一个laravel应用程序,我想跟踪客户端浏览器的详细信息,例如浏览器名称。 我如何使用Laravel进行操作?

public function postUser(Request $request)
    {        
            $user = new User();                                 
            $user->name = $request->Input(['name']);           
            $device=   $request->header('User-Agent');
            dd($device);
            $user->save();            
            return redirect('userSavePage');          
    }

我已使用此$device= $request->header('User-Agent'); 但是当我dd()输出时,我得到的东西是这样的:

"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"

如何获取实际的浏览器详细信息?

6 个答案:

答案 0 :(得分:6)

我最终使用了更快,更简单的方法:

contentType: false

希望它对某人有帮助!

答案 1 :(得分:3)

首先将包添加到你的作曲家:

{
    "require": {
        "hisorange/browser-detect": "2.*" // For laravel 5.* versions
        "hisorange/browser-detect": "1.*" // For laravel 4.* versions
    }
}

在作曲家更新/安装后,将服务提供商添加到您的app.php:

'providers' => array(
    // ...
    'hisorange\BrowserDetect\Provider\BrowserDetectService',
    // ...
)

将别名添加到app.php中的别名:

'aliases' => array(
    // ...
    'BrowserDetect' => 'hisorange\BrowserDetect\Facade\Parser',
)

您必须使用个人配置,只需发布​​包的配置文件,(plugins.php也随此发布)

php artisan vendor:publish

只需在立面上调用即可获得结果信息。

// You can always get the result object from the facade if you wish to operate with it.
BrowserDetect::detect(); // Will resolve and return with the 'browser.result' container.

// Calls are mirrored to the result object for easier use.
BrowserDetect::browserVersion(); // return '3.6' string.

// Supporting human readable formats.
BrowserDetect::browserName(); // return 'Firefox 3.6' string.

// Or can be objective.
BrowserDetect::browserFamily(); // return 'Firefox' string.

详细信息:https://github.com/hisorange/browser-detect

答案 2 :(得分:1)

使用Agent

可让您检测用户浏览器和平台,以及浏览器/平台的版本

https://medium.com/@panjeh/laravel-detector-mobile-browser-name-version-platform-device-robot-crawler-user-language-8499bee7607c

在新版本中,您还可以检测机器人。

答案 3 :(得分:1)

使用最新版本的 BrowserDetect 软件包,您可以获得以下浏览器信息:

使用以下命令安装:

作曲家需要hisorange /浏览器检测

安装后,在 config / app.php 文件中添加依赖项。

在提供者数组中添加以下行。

hisorange \ BrowserDetect \ ServiceProvider :: class,

在别名数组中添加以下行。

'BrowserDetect'=> hisorange \ BrowserDetect \ Facade :: class,

在以下任何类文件中包含软件包以供使用:

使用BrowserDetect;

此后,您可以访问 BrowserDetect 方法,如以下程序包链接中所述:

BrowserDetect package link

答案 4 :(得分:1)

对于大多数最新的 Laravel 版本,此方法有效:

Route::get('/agent', function () {
    return request()->userAgent();
});

答案 5 :(得分:0)

除了here的解释之外,为了检测诸如Postman和Insomnia之类的Rest API使用者,我与this答案合并,最终得到了以下源代码,这些源代码在我的系统中表现更好场景

Route::get('browser', function () {

//create new agent instance
$agent = new Jenssegers\Agent\Agent();

//check if agent is robot
if ($agent->isRobot()) {
    return $agent->robot();
}
//if agent is not robot then get agent browser and platform like Chrome in Linux
$agent = $agent->browser() . " in " . $agent->platform();
//if agent browser and platform not obtained, then we check the agent technology
if ($agent == ' in ') {
    $agent =  request()->header('User-Agent');
}
return $agent;});

因此,从上面的代码中,我可以检测到浏览器,平台,机器人以及诸如Postman和Insomnia之类的其他消费者。