Categories: PribadiSeriusTutorial

Cara Mendeteksi Mobile Browser Dengan PHP

Setelah 4 harian mencari informasi tentang cara mendeteksi mobile browser akhirnya terbuka juga rahasianya. Hari ini iseng googling jam 3 pagi kebetulan memang lagi gak bisa tidur sekalian iseng mau mencari percobaan baru. Awalnya saya penasaran bagaimana caranya mendeteksi apakah visitor kita menggunakan mobile browser atau web browser biasa. Saya coba buka m.kaskus.us dan m.detik.com ternyata mereka sudah mendeteksi kalau browser yang saya gunakan adalah web browser PC.

Memang sih bagi pengguna CMS pada umumnya seperti misalnya WordPress, PHP Nuke, PHP BB,  Joomla, Drupal, vBulletin dan lain lain bisa menggunakan plugin salah satunya adalah mobilepress untuk wordpress, tidak perlu ribet cukup konfigurasi. Namun bagaimana kalau kita tidak menggunakan CMS tapi memerlukan mobile web ini seperti misalnya detik.com

[to_like]

Akhirnya saya ketemu juga rahasianya ternyata dengan menggunakan sedikit trik pemrograman PHP kita bisa mendeteksi jenis browser yang melakukan request ke server kita. Berikut ini adalah kode Functionnya:

$isMobile = false;
$isBot = false;

$op = strtolower($_SERVER[‘HTTP_X_OPERAMINI_PHONE’]);
$ua = strtolower($_SERVER[‘HTTP_USER_AGENT’]);
$ac = strtolower($_SERVER[‘HTTP_ACCEPT’]);
$ip = $_SERVER[‘REMOTE_ADDR’];

$isMobile = strpos($ac, ‘application/vnd.wap.xhtml+xml’) !== false
|| $op != ”
|| strpos($ua, ‘sony’) !== false
|| strpos($ua, ‘symbian’) !== false
|| strpos($ua, ‘nokia’) !== false
|| strpos($ua, ‘samsung’) !== false
|| strpos($ua, ‘mobile’) !== false
|| strpos($ua, ‘windows ce’) !== false
|| strpos($ua, ‘epoc’) !== false
|| strpos($ua, ‘opera mini’) !== false
|| strpos($ua, ‘nitro’) !== false
|| strpos($ua, ‘j2me’) !== false
|| strpos($ua, ‘midp-‘) !== false
|| strpos($ua, ‘cldc-‘) !== false
|| strpos($ua, ‘netfront’) !== false
|| strpos($ua, ‘mot’) !== false
|| strpos($ua, ‘up.browser’) !== false
|| strpos($ua, ‘up.link’) !== false
|| strpos($ua, ‘audiovox’) !== false
|| strpos($ua, ‘blackberry’) !== false
|| strpos($ua, ‘ericsson,’) !== false
|| strpos($ua, ‘panasonic’) !== false
|| strpos($ua, ‘philips’) !== false
|| strpos($ua, ‘sanyo’) !== false
|| strpos($ua, ‘sharp’) !== false
|| strpos($ua, ‘sie-‘) !== false
|| strpos($ua, ‘portalmmm’) !== false
|| strpos($ua, ‘blazer’) !== false
|| strpos($ua, ‘avantgo’) !== false
|| strpos($ua, ‘danger’) !== false
|| strpos($ua, ‘palm’) !== false
|| strpos($ua, ‘series60’) !== false
|| strpos($ua, ‘palmsource’) !== false
|| strpos($ua, ‘pocketpc’) !== false
|| strpos($ua, ‘smartphone’) !== false
|| strpos($ua, ‘rover’) !== false
|| strpos($ua, ‘ipaq’) !== false
|| strpos($ua, ‘au-mic,’) !== false
|| strpos($ua, ‘alcatel’) !== false
|| strpos($ua, ‘ericy’) !== false
|| strpos($ua, ‘up.link’) !== false
|| strpos($ua, ‘vodafone/’) !== false
|| strpos($ua, ‘wap1.’) !== false
|| strpos($ua, ‘wap2.’) !== false;

$isBot = $ip == ‘66.249.65.39’
|| strpos($ua, ‘googlebot’) !== false
|| strpos($ua, ‘mediapartners’) !== false
|| strpos($ua, ‘yahooysmcm’) !== false
|| strpos($ua, ‘baiduspider’) !== false
|| strpos($ua, ‘msnbot’) !== false
|| strpos($ua, ‘slurp’) !== false
|| strpos($ua, ‘ask’) !== false
|| strpos($ua, ‘teoma’) !== false
|| strpos($ua, ‘spider’) !== false
|| strpos($ua, ‘heritrix’) !== false
|| strpos($ua, ‘attentio’) !== false
|| strpos($ua, ‘twiceler’) !== false
|| strpos($ua, ‘irlbot’) !== false
|| strpos($ua, ‘fast crawler’) !== false
|| strpos($ua, ‘fastmobilecrawl’) !== false
|| strpos($ua, ‘jumpbot’) !== false
|| strpos($ua, ‘googlebot-mobile’) !== false
|| strpos($ua, ‘yahooseeker’) !== false
|| strpos($ua, ‘motionbot’) !== false
|| strpos($ua, ‘mediobot’) !== false
|| strpos($ua, ‘chtml generic’) !== false
|| strpos($ua, ‘nokia6230i/. fast crawler’) !== false;

Ini adalah function dasar yang digunakan untuk mengenal macam-macam mobile browser sehingga memudahkan kita dalam pengembangannya. Kalau ada jenis mobile browser yang baru bisa kalian tambahkan sendiri dalam kode function.

Sedangkan untuk proses PHP-nya sendiri saya sempat terkecoh, awal mulanya saya mengira bahwa semua mobile browser tidak bisa mengenal file dengan extensi PHP ternyata perkiraan saya itu salah, mobile browser mengenal file dengan extensi PHP (namun tidak semua, mungkin untuk handphone yang benar-benar jadul tidak mengenal).

Berikutnya mudah saja, standard-nya root folder dari sebuah website adalah file index dengan extensi bermacam-macam, bisa html php dan lainnya. Kita bisa memanfaatkan ini sebagai pintu masuk sekaligus dengan fungsi deteksi diatas kita akan memilih ke arah mana pengunjung akan kita arahkan dengan PHP if.  Contoh mudahnya seperti dibawah ini:

if($isMobile){

header(‘Location: http://mobile.web.kita’ . urlencode($_SERVER[‘HTTP_HOST’] . $_SERVER[‘REQUEST_URI’]));

exit();

}

Mudah bukan? Ternyata cuma begitu saja… hehehe… 😛

[/to_like]

Istanto Adi Nugroho

View Comments

  • Kode script ini awalnya digunakan oleh GitHub untuk uji Coba Mobile/Wap Dtection agar mengetahui Header dari suatu Browser.

    Dan memang script singkat ini cukup efektif untuk mendeteksi header browser, tapi tidak disukai oleh para Robot (Search Engine) ketika dia meng-crawler sebab dapat menimbulkan loop yang dianggap oleh dia sebagai Error 404.

    Sebagai contoh : coba bandingkan Crawler Error di google.com/webmaster/tool sebelum menggunakan script ini dan sesudahnya. Sebelumnya website saya juga menggunakan script ini tapi kemudian saya ganti dengan kode yang dari GitHub.

    Script diatas agar berfungsi cukup menambahkan EOF dari script tersebut seperti berikut :

    //

    *target_mobile adalah file/folder atau alamat yang akan diakses bila script mendeteksi pengguna mobile/wap
    *target_nomoble adalah file/folder atau alamat yang akan diakses bila script mendeteksi Non Mobile/Wap User
    *target dapat berupa URL maupun file yang akan dieksekusi.
    *Gunakan Script diatas sebagai file index utama di root.

    Salam dari Saya,
    Komarudin Surya

    • Cuma mau menambahkan aja nih, saya coba pake script ini untuk joomla dan berhasil tapi dengan sedikit modifikasi sbb:

      //
      //
      //
      //
      //
      // Tampilan template/index aslinya
      //
      //
      //
      //

    • Caranya gmn, tuh?

      aQ kmren coba jg berhasil yg di HP. eh pas aq buka ulang dr PC, malah yG PC jd gk mau ke buka.

      gmN tuh, mas??

  • nda jalan mas :D
    btw gmana cara tau "BANYAK PENGUNJUNG MENUJU KE ARTIKEL INI DENGAN KATA KUNCI " mas?

  • Kok tetap gk jalan sich bang. Kalo bisa kasih code yg udah bhasil dong. Krm ke emailq y....

1 2 3

Recent Posts

Mengganti APACHE ke LIGHTTPD

Maaf artikel ini bahasanya rada amburadul soalnya di gendut pagi² berisik pengen nulis di blog…

2 weeks ago

5 Tips Hindari Mata Lelah di Depan Monitor

Beberapa dari kita tentu memiliki kebiasaan untuk berlama-lama di depan monitor. Entah itu untuk bekerja,…

3 weeks ago

Virtual Host di XAMPP/LAMPP

Karena semakin banyaknya permintaan materi referensi tentang virtual host ini saya mau coba menuliskan sedikit…

1 month ago

Tips Untuk Mengatasi Masalah Kebotakan Akibat Rambut Rontok Pria dan Wanita

Go go botakers...! Hehehe maaf banget ya buat yang botak saya nggak ada maksud menghina…

2 months ago

9 Cara Membuat Otak Berpikir Lebih Cepat

Otak manusia pada dasarnya hampir mirip dengan sebuah komputer biologis. Otak membutuhkan makanan, oksigen, dan…

2 months ago

Tips Menyelamatkan Diri Saat Gempa

Banyak ragamnya tips untuk menyelamatkan diri saat terjadi gempa bumi tetapi untuk tips kali ini…

2 months ago