路老闆個人品牌網站
0
  • 會員登入
  • 關於我們
    回主選單
    • 關於我們
  • 服務項目
  • 我的錄音小間
  • 課程活動
    回主選單
    • 線上課程
    • 預約服務
    • 活動報名
  • 商品總覽
  • 創作與紀錄
    回主選單
    • 部落格
    • 影像紀錄
    • Podcast
    • 我的作品
  • 最新消息
  • 聯絡我們
  • Join us
  • Login
  • 0
    路老闆個人品牌網站
  • 關於我們
    關於我們
  • 服務項目
  • 我的錄音小間
  • 課程活動
    線上課程 預約服務 活動報名
  • 商品總覽
  • 創作與紀錄
    部落格 影像紀錄 Podcast 我的作品
  • 最新消息
  • 聯絡我們
部落格
  • 文章總覽
  • 分類
  • 技術筆記
  • 日本旅遊
  • 網站搬家
  • 時事觀察
  • 投資理財
  • 公司經營
  • 主機架設
  • 接案
  • 遊戲心得
  • 產品開箱
  • 網頁相關
  • 金流串接
  • 遊戲經濟
  • 閒聊
  • 直銷
  • CodeIgniter
  • cpanel
  • 出書材料
  • 個人品牌
  • SEO
  • 讀書心得
  • 金流物流
  • 線上課程心得
  • 日劇
    • 大河劇
      • 真田丸
  • AI
91app ClubHouse php8 imunify360 cdn apache php nginx linode digitalocean
  1. 首頁
  2. 部落格
  3. php 偵測 browser 版本資訊

php 偵測 browser 版本資訊

2017 Feb 26 未分類

因為某種理由

需要去蒐集最新的 browser user-agent

本來寫了一個 parser 去讀 apache log

結果意外超多

DSC01249




因為 log 的 user-agent 種類真的是五花八門

一直在 google 找解決方案

後來試到一個好東西

http://php.net/manual/en/function.get-browser.php

php 有個 function 叫做 get_browser

簡單說他會偵測你目前連線的 browser 版本

如果你想指定 user-agent 的字串讓他辨識也 ok

function 很簡單只有兩個參數

mixed get_browser ([ string $user_agent [, bool $return_array = false ]] )

$user_agent 就是你要給他的 user-agent

不給的話就試偵測目前連線的 user-agent

$return_array 則是決定回傳值是要 object 或是 array


好

重點來了

我寫了一行測試的 code

程式噴了一行錯誤給我

get_browser(): browscap ini directive not set

這三小?

查了一下

原來這個函數

要配合一個網站的資源檔

https://browscap.org/

這個網站會給一個叫做 browscap.ini 的檔案

來輔助辨識 browser 的版本

所以你要下載這個檔案 (php 的話要下載 php_browscap.ini)

然後放在你的網站上

好 放上去以後

程式還是找不到

又 Google 了一下

Google 表示

你要在 php.ini 裡面設定這個檔案的路徑

我本來想用 ini_set 去寫這個值

但是失敗 (如果有人可以的話麻煩跟我講一下 感謝)

只好另外寫一個 php.ini 放在 public_html

然後把 php_browscap.ini 的路徑寫進去

類似這樣
browscap = /home/xxx/www/php_browscap.ini

然後再跑一次程式

範例程式如下

$arr = get_browser(null, true);
print_r($arr);

null的意思是讓 function 去讀連線者的 user-agent

會印出

Array
(
[browser_name_regex] => ~^mozilla/5.0 (.*mac os x.*) applewebkit/.* (khtml.* like gecko) chrome/56..*safari/.*$~
[browser_name_pattern] => Mozilla/5.0 (*Mac OS X*) AppleWebKit/* (KHTML* like Gecko) Chrome/56.*Safari/*
[parent] => Chrome 56.0
[platform] => MacOSX
[comment] => Chrome 56.0
[browser] => Chrome
[browser_maker] => Google Inc
[version] => 56.0
[majorver] => 56
[device_type] => Desktop
[device_pointing_method] => mouse
[minorver] => 0
[ismobiledevice] =>
[istablet] =>
[crawler] =>
)

這樣就完成啦

然後我再另外寫一個資料庫 去塞這些五花八門的 user-agent

並註記寫入的更新日期

這樣我就可以依照時間逆向排序

來抓某個瀏覽器最新版本是第幾版

不過 browscap.ini 也會更新

所以得另外寫一個 cron 去更新這個檔案

不過 browscap 完全知道工程師的企圖XD

他有在網頁上寫定期更新 browscap.ini 的原則

基本上我想一個禮拜更新一次應該就可以了

給大家參考~

  • 分享此文章
0則留言

相關文章

IE button type 預設是 submit

部落格架在哪裡好?

[讀書心得] 主力作手不願告訴你的操作秘訣

2013 富士山東京五日遊 Day4 回転寿司 根室花まる

線上服務的退款策略

廉價航空的升級包該買嗎?

關於路老闆

推薦連結

  • Alice 你的理財陪跑教練
  • 羅鈞鴻/小虎老師
  • 徐慧玲Lynn
  • 寶寶牙醫 沈醫師
  • 保險資訊懶人包
  • 你的好感度教練
  • 天下為暢

聯絡我們

  • Email: louis@boss-louis.tw
  • 營業時間: 09:00~18:00
  • 聯絡電話: 02-77252950
  • 地址: 106 台北市大安區忠孝東路四段270號17樓
  • 隱私權政策
COPYRIGHT ©路老闆個人品牌網站 All rights reserved | Powered by 路老闆