111
0
  • 會員登入
  • 聯絡我們
  • 123關於我們
    回主選單
    • 品牌由來
    • 床墊門市/聯絡資訊
    • 床墊專利側邊強化
    • 工廠直送所以價美
    • 床墊工廠實景
    • 更多
  • 服務項目
    回主選單
    • 網路顧問
    • 222
    • 服務內容
    • 雨傘維修服務
    • 更多
  • 產品總覽
  • 部落格
  • Podcast
  • 最新消息
  • Join us
  • Login
  • 0
    111
  • 聯絡我們
  • 123關於我們
    品牌由來 床墊門市/聯絡資訊 床墊專利側邊強化 工廠直送所以價美 床墊工廠實景
  • 服務項目
    網路顧問 222 服務內容 雨傘維修服務
  • 產品總覽
    3C 家具 包包 文具 wheel spacer
  • 部落格
  • Podcast
  • 最新消息
  • 文章總覽
  • 分類
  • 全部
  • 投資理財
  • 技術筆記
  • 日本旅遊
  • 網站搬家
  • 時事觀察
  • 公司經營
  • 主機架設
  • 接案
  • 遊戲心得
  • 產品開箱
  • 網頁相關
  • 金流串接
  • 遊戲經濟
  • 閒聊
  • 直銷
  • CodeIgniter
  • 真田丸
  • cpanel
  • 出書材料
222 333
  1. 首頁
  2. 部落格

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 的原則



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



給大家參考~



  • 分享此文章

111

  • 333
  • 555
  • 777

222

  • 999
  • aaa
  • ddd

Contact us

  • 營業時間: 888
  • 聯絡電話: 555
  • 地址: 333 444
COPYRIGHT ©111 All rights reserved | Designed by 路老闆