Ini adalah perpustakaan sniffing browser yang sangat rumit dan hampir sama sekali tidak berguna. Tidak ada gunanya karena Anda tidak boleh menggunakan sniffing browser. Jadi berhentilah sekarang dan bacalah sesuatu tentang pendeteksian fitur. aku serius. Pergilah. Anda akan berterima kasih kepada saya nanti.
Versi PHP WhereBrowser untuk digunakan di server. Sepenuhnya kompatibel dengan PHP 7.0 atau lebih tinggi, termasuk PHP 8.
Juga tersedia:
YangBrowser/Parser-JavaScript
Versi JavaScript WhereBrowser untuk digunakan dengan Node.js di server
Browser/Server yang mana
Server yang ditulis dalam PHP yang menyediakan API JavaScript untuk digunakan di browser
Tapi kenapa hampir sama sekali tidak berguna dan bukannya sama sekali tidak berguna? Ya, selalu ada pengecualian terhadap aturan tersebut. Ada alasan sah untuk melakukan browser sniffing: untuk meningkatkan pengalaman pengguna atau untuk mengumpulkan informasi tentang browser mana yang digunakan di situs web Anda. Situs web saya adalah html5test.com dan saya ingin tahu skor mana yang dimiliki browser mana. Dan untuk melakukan itu Anda memerlukan perpustakaan sniffing browser.
Mengapa ini sangat rumit?
Karena semua orang berbohong. Sungguh, tidak ada satu pun browser yang sepenuhnya benar. Hampir semua browser mengatakan bahwa mereka adalah Netscape 5 dan hampir semua browser WebKit mengatakan bahwa mereka didasarkan pada Gecko. Bahkan Internet Explorer 11 kini tidak lagi mengklaim sebagai IE sama sekali, melainkan browser tanpa nama seperti Gecko. Dan itu menjadi lebih buruk. Itu sebabnya ini rumit.
Informasi seperti apa yang diberikannya? Anda mendapatkan objek bagus yang memiliki informasi tentang browser, mesin rendering, os dan perangkat. Ini memberi Anda nama dan versi dan bahkan produsen dan model perangkat. Dan WhereBrowser cukup ulet. Ini memberi Anda informasi yang tidak dimiliki orang lain. Misalnya:
JUC (Linux; U; 2.3.6; zh-cn; GT-I8150; 480*800) UCWEB8.7.4.225/145/800
UC Browser 8.7 on a Samsung Galaxy W running Android 2.3.6
Android tidak pernah disebutkan
Mozilla/5.0 (Series40; Nokia501/10.0.2; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.0.0.0.73
Nokia Xpress 3.0.0 on a Nokia Asha 501 running Nokia Asha Platform
Meskipun header agen pengguna mengklaim sebagai perangkat Series40, kami mengetahui bahwa perangkat tersebut sebenarnya menjalankan Platform Asha dan kami juga mengetahui bahwa OviBrowser telah diganti namanya menjadi Nokia Xpress.
Opera/9.80 (X11; Linux zvav; U; zh) Presto/2.8.119 Version/11.10
Opera Mini on a Nokia 5230 running Series60 5.0
Header agen pengguna terlihat seperti Opera 11.10 di Linux, tapi kita tahu itu Opera Mini. Kami bahkan dapat mengetahui sistem operasi dan model perangkat sebenarnya dari header lain.
WhereBrowser memerlukan PHP 7.0 atau lebih tinggi dan mendukung PHP 8. WhereBrowser kompatibel dengan standar pemuatan otomatis PSR-4 dan mengikuti gaya pengkodean PSR-1 dan PSR-2.
Anda dapat menginstal WhereBrowser dengan menggunakan Composer - manajer paket standar untuk PHP. Paketnya disebut whichbrowser/parser
.
composer require whichbrowser/parser
Anda dapat dengan mudah memperbarui WhereBrowser dengan menjalankan perintah sederhana.
composer update whichbrowser/parser
Anda harus menjalankan perintah ini sesering mungkin. Anda bahkan mungkin ingin mempertimbangkan untuk menyiapkan pekerjaan cron untuk tujuan ini.
Langkah pertama memerlukan autoloader Composer:
<?php
require ' vendor/autoload.php ' ;
Langkah kedua adalah membuat objek WhichBrowserParser
baru. Objek ini akan berisi semua informasi yang dapat ditemukan perpustakaan tentang browser. Objek memiliki parameter yang diperlukan, baik header yang dikirim oleh browser, atau string agen pengguna. Menggunakan header lebih disukai, karena akan memungkinkan deteksi yang lebih baik, namun jika Anda hanya memiliki string agen pengguna, ini juga akan berfungsi.
Misalnya:
$ result = new WhichBrowser Parser ( getallheaders ());
atau:
$ result = new WhichBrowser Parser ( $ _SERVER [ ' HTTP_USER_AGENT ' ]);
Variabel $result
sekarang berisi objek yang dapat Anda tanyakan informasinya. Ada berbagai cara untuk mengakses informasi.
Pertama-tama, Anda dapat memanggil fungsi toString()
untuk mendapatkan identifikasi yang dapat dibaca manusia:
" You are using " . $ result -> toString ();
// You are using Chrome 27 on OS X Mountain Lion 10.8
Kemungkinan lain adalah menanyakan objek:
$ result -> isType ( ' desktop ' );
// true
$ result -> isType ( ' mobile ' , ' tablet ' , ' media ' , ' gaming:portable ' );
// false
$ result -> isBrowser ( ' Maxthon ' , ' < ' , ' 4.0.5 ' );
// false
$ result -> isOs ( ' iOS ' , ' >= ' , ' 8 ' );
// false
$ result -> isOs ( ' OS X ' );
// true
$ result -> isEngine ( ' Blink ' );
// true
Anda juga dapat mengakses properti ini secara langsung:
$ result -> browser -> toString ();
// Chrome 27
$ result -> engine -> toString ();
// Blink
$ result -> os -> toString ();
// OS X Mountain Lion 10.8
Atau akses langsung sebagian properti berikut:
$ result -> browser -> name ;
// Chrome
$ result -> browser -> name . ' ' . $ result -> browser -> version -> toString ();
// Chrome 27
$ result -> browser -> version -> value ;
// 27.0 . 1453.110
$ result -> engine -> name ;
// Blink
Terakhir, Anda juga dapat menanyakan versi secara langsung:
$ result -> browser -> version -> is ( ' > ' , 26 );
// true
$ result -> os -> version -> is ( ' < ' , ' 10.7.4 ' );
// false
Dimungkinkan untuk mengatur opsi tambahan dengan meneruskan array sebagai parameter kedua saat membuat objek Parser
.
Dalam beberapa kasus, Anda mungkin ingin menonaktifkan deteksi bot. Hal ini memungkinkan bot dengan sengaja membodohi WhereBrowser, sehingga Anda dapat mengetahui identitas agen pengguna yang coba ditiru oleh bot. Hal ini sangat berguna ketika Anda ingin menggunakan WhereBrowser untuk beralih di antara berbagai varian situs web Anda dan ingin memastikan perayap melihat varian situs web yang tepat. Misalnya, bot yang meniru perangkat seluler akan melihat varian seluler situs Anda.
$ result = new WhichBrowser Parser ( getallheaders (), [ ' detectBots ' => false ]);
WhereBrowser mendukung adaptor cache yang kompatibel dengan PSR-6 untuk menyimpan hasil cache antar permintaan. Menggunakan cache sangat berguna jika Anda menggunakan WhereBrowser di setiap halaman situs web Anda dan pengguna mengunjungi beberapa halaman. Selama kunjungan pertama, header akan diurai dan hasilnya akan di-cache. Pada kunjungan lebih lanjut, hasil cache akan digunakan, yang jauh lebih cepat daripada harus mengurai header berulang kali.
Ada adaptor yang tersedia untuk jenis cache lain, seperti APC, Doctrine, Memcached, MongoDB, Redis dan banyak lagi. Konfigurasi adaptor ini berbeda satu sama lain, namun setelah dikonfigurasi, yang harus Anda lakukan adalah meneruskannya sebagai opsi saat membuat objek Parser
, atau menggunakan fungsi setCache()
untuk menyetelnya setelahnya. WhereBrowser telah diuji untuk bekerja dengan adaptor yang disediakan oleh PHP Cache. Untuk daftar paket lain yang menyediakan adaptor, lihat Packagist.
Misalnya, jika Anda ingin mengaktifkan cache berbasis memcached, Anda perlu menginstal paket komposer tambahan:
composer require cache/memcached-adapter
Dan ubah panggilan ke WhereBrowser/Parser sebagai berikut:
$ client = new Memcached ();
$ client -> addServer ( ' localhost ' , 11211 );
$ pool = new Cache Adapter Memcached MemcachedCachePool ( $ client );
$ result = new WhichBrowser Parser ( getallheaders (), [ ' cache ' => $ pool ]);
atau
$ client = new Memcached ();
$ client -> addServer ( ' localhost ' , 11211 );
$ pool = new Cache Adapter Memcached MemcachedCachePool ( $ client );
$ result = new WhichBrowser Parser ();
$ result -> setCache ( $ pool );
$ result -> analyse ( getallheaders ());
Anda juga dapat menentukan berapa detik hasil cache harus dibuang. Nilai defaultnya adalah 900 detik atau 15 menit. Jika menurut Anda WhereBrowser menggunakan terlalu banyak memori untuk cache, Anda harus menurunkan nilai ini. Anda dapat melakukan ini dengan mengatur opsi cacheExpires
atau meneruskannya sebagai parameter kedua ke fungsi setCache()
.
Setelah objek WhichBrowserParser
baru dibuat, objek tersebut berisi sejumlah properti dan fungsi. Semua properti ini dijamin ada.
Properti:
browser
engine
os
device
Fungsi:
getType()
Mengembalikan properti type
dan subtype
objek device
. Jika ada subtipe, maka subtipe tersebut akan digabungkan ke tipenya dan dipisahkan dengan tanda semiwarna, misalnya: mobile:smart
atau gaming:portable
. Jika subtipe tidak berlaku, subtipe hanya akan mengembalikan tipenya, misalnya: desktop
atau ereader
.
isType($type [,$type [,$type [,$type]]])
Jika argumen tunggal digunakan, fungsi akan mengembalikan true
jika argumen tersebut cocok dengan type
objek device
. Argumen secara opsional juga dapat menyediakan subtipe dengan menggabungkannya ke tipe dan memisahkannya dengan titik koma. Ia dapat menggunakan beberapa argumen yang dalam hal ini fungsi akan mengembalikan true
jika salah satu argumennya cocok. Jika tidak ada argumen yang cocok, maka hasilnya false
isMobile()
Mengembalikan true
jika browser adalah perangkat seluler, seperti ponsel, tablet, ereader, kamera, pemutar media portabel, jam tangan, atau konsol game portabel. Kalau tidak, ia akan mengembalikan false
.
isBrowser($name [, $comparison, $version])
Digunakan untuk menanyakan properti name
dan version
objek browser
. Fungsi ini dapat berisi satu argumen untuk perbandingan sederhana berdasarkan name
, atau tiga argumen untuk membandingkan name
dan version
. Argumen pertama selalu berisi nama browser. Argumen kedua adalah string yang dapat menampung <
, <=
, =
, =>
atau >
. Yang ketiga adalah bilangan bulat, float atau string yang berisi versi. Anda dapat menggunakan versi seperti 10
, 10.7
atau '10.7.4'
. Untuk informasi lebih lanjut tentang bagaimana perbandingan versi dilakukan, silakan lihat fungsi is()
dari objek Version
.
isEngine($name [, $comparison, $version])
Digunakan untuk menanyakan properti name
dan version
objek engine
. Fungsi ini bekerja dengan cara yang persis sama seperti isBrowser
.
isOs($name [, $comparison, $version])
Digunakan untuk menanyakan properti name
dan version
objek os
. Fungsi ini bekerja dengan cara yang persis sama seperti isBrowser
.
isDetected()
Apakah sebenarnya ada browser yang terdeteksi, atau kami gagal mendeteksi apa pun?
toString()
Dapatkan representasi browser yang terdeteksi yang dapat dibaca manusia, termasuk sistem operasi dan informasi perangkat.
Sebuah objek dari kelas WhichBrowserModelBrowser
digunakan untuk properti browser
dari objek utama WhichBrowserParser
dan berisi sejumlah properti. Jika suatu properti tidak dapat diterapkan dalam situasi ini maka properti tersebut akan menjadi null atau tidak terdefinisi.
Properti:
name
alias
version
stock
channel
mode
hidden
family
using
Fungsi:
isFamily($name)
Apakah keluarga browser ini memiliki nama ini, atau apakah browser itu sendiri memiliki nama ini.
isUsing($name)
Apakah browser menggunakan tampilan web menggunakan nama yang diberikan.
getName()
Dapatkan nama browsernya
getVersion()
Dapatkan versi browsernya
toString()
Dapatkan representasi browser yang terdeteksi yang dapat dibaca manusia
Sebuah objek dari kelas WhichBrowserModelEngine
digunakan untuk properti engine
dari objek utama WhichBrowserParser
dan berisi sejumlah properti. Jika suatu properti tidak berlaku dalam situasi ini maka properti tersebut akan menjadi null atau tidak terdefinisi.
Properti:
name
version
Fungsi:
getName()
Dapatkan nama mesin rendering
getVersion()
Dapatkan versi mesin rendering
toString()
Dapatkan representasi mesin rendering yang terdeteksi yang dapat dibaca manusia
Sebuah objek dari kelas WhichBrowserModelOs
digunakan untuk properti os
dari objek utama WhichBrowserParser
dan berisi sejumlah properti. Jika suatu properti tidak berlaku dalam situasi ini maka properti tersebut akan menjadi null atau tidak terdefinisi.
Properti:
name
version
family
Fungsi:
isFamily($name)
Apakah keluarga sistem operasi ini mempunyai nama ini, atau apakah sistem operasi itu sendiri mempunyai nama ini.
getName()
Dapatkan nama sistem operasi
getVersion()
Dapatkan versi sistem operasi
toString()
Dapatkan representasi sistem operasi yang terdeteksi yang dapat dibaca manusia
Sebuah objek dari kelas WhichBrowserModelDevice
digunakan untuk properti device
dari objek utama WhichBrowserParser
dan berisi sejumlah properti. Jika suatu properti tidak dapat diterapkan dalam situasi ini maka properti tersebut akan menjadi null atau tidak terdefinisi.
Properti:
type
subtype
identified
manufacturer
model
Properti type
dapat berisi nilai apa pun dari daftar berikut:
Jika type
adalah "seluler", properti subtype
dapat berisi nilai apa pun dari daftar berikut:
Jika type
adalah "game", properti subtype
dapat berisi nilai apa pun dari daftar berikut:
Fungsi:
getManufacturer()
Dapatkan nama pabrikannya
getModel()
Dapatkan nama modelnya
toString()
Dapatkan representasi perangkat yang terdeteksi yang dapat dibaca manusia
Sebuah objek dari kelas WhichBrowserModelFamily
digunakan untuk properti family
dari objek WhichBrowserModelBrowser
dan WhichBrowserModelOs
dan berisi sejumlah properti. Jika suatu properti tidak berlaku dalam situasi ini maka properti tersebut akan menjadi null atau tidak terdefinisi.
Properti:
name
version
Fungsi:
getName()
Dapatkan nama keluarga
getVersion()
Dapatkan versi keluarga
toString()
Dapatkan representasi keluarga yang dapat dibaca manusia
Sebuah objek dari kelas WhichBrowserModelUsing
digunakan untuk properti using
objek WhichBrowserModelBrowser
dan berisi sejumlah properti. Jika suatu properti tidak dapat diterapkan dalam situasi ini maka properti tersebut akan menjadi null atau tidak terdefinisi.
Properti:
name
version
Fungsi:
getName()
Dapatkan nama tampilan web
getVersion()
Dapatkan versi tampilan web
toString()
Dapatkan representasi tampilan web yang dapat dibaca manusia
Objek dari kelas WhichBrowserModelVersion
digunakan untuk properti version
objek browser
, engine
dan os
serta berisi sejumlah properti dan fungsi. Jika suatu properti tidak berlaku dalam situasi ini maka properti tersebut akan menjadi null atau tidak terdefinisi.
Properti:
value
alias
nickname
details
Fungsi:
is($version)
atau is($comparison, $version)
Dengan menggunakan fungsi ini, mudah untuk membandingkan suatu versi dengan versi lainnya. Jika Anda hanya menentukan satu argumen, fungsi ini akan kembali jika versinya sama. Anda juga dapat menentukan dua argumen, dalam hal ini argumen pertama berisi operator perbandingan, seperti <
, <=
, =
, =>
atau >
. Argumen kedua adalah versi yang ingin Anda bandingkan. Anda dapat menggunakan versi seperti 10
, 10.7
atau '10.7.4'
, namun perlu diketahui bahwa 10
tidak sama dengan 10.0
. Misalnya jika versi OS kita adalah 10.7.4
:
$ result -> os -> version -> is ( ' 10.7.4 ' );
// true
$ result -> os -> version -> is ( ' 10.7 ' );
// true
$ result -> os -> version -> is ( ' 10 ' );
// true
$ result -> os -> version -> is ( ' 10.0 ' );
// false
$ result -> os -> version -> is ( ' > ' , ' 10 ' );
// false
$ result -> os -> version -> is ( ' > ' , ' 10.7 ' );
// false
$ result -> os -> version -> is ( ' > ' , ' 10.7.3 ' );
// true