Cara Mendeteksi Mobile Browser Dengan PHP

Pada Wednesday, 16 December, 2009 Jam 5:09 Di Tulis Oleh Istanto Adi Nugroho
Artikel dalam kategori Pribadi, Serius, Tutorial

BACA ARTIKEL INI DALAM FORMAT AMP Cara Mendeteksi Mobile Browser Dengan PHP

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

php-codeSetelah 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]

 

Kata Kunci Terkait:

Kamu boleh memberikan komentar, atau melakukan trackback dari blog kamu.
    Digg Del.icio.us StumbleUpon Reddit Twitter RSS

30 Komentar pada artikel “Cara Mendeteksi Mobile Browser Dengan PHP”

  1. funkynetterrrrrrrrrrrr berkata:

    Pada September 12th, 2011 Jam 10:11 AM

    aduh pusing pak…. gak bisa bisa juga 🙁

    [Balas]



    Istanto Adi Nugroho berkata:
    Pada September 12th, 2011 jam 4:02 PM


    pakai ini mungkin lebih mudah http://code.google.com/p/php-mobile-detect/

    [Balas]


  2. Komarudin Surya berkata:

    Pada October 19th, 2012 Jam 11:21 AM

    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

    [Balas]



    Istanto Adi Nugroho berkata:
    Pada October 19th, 2012 jam 9:58 PM


    sebenarnya bisa kok di setting parameter yang mobile supaya tidak di crawl & index robot, atau bisa juga gunakan http://code.google.com/p/php-mobile-detect/ lebih mudah lebih simple, intinya sama semua di deteksi dari header browser.

    [Balas]


  3. rizal berkata:

    Pada November 12th, 2012 Jam 3:09 PM

    mas klo . .  websitenya 2. .  yang 1 khusus mobile dan yang satu khusus pc. .  gimna mas. . .???

    [Balas]



    Istanto Adi Nugroho berkata:
    Pada November 12th, 2012 jam 11:32 PM


    hahaha ya tinggal buat aja satu buat pc satu buat mobile

    [Balas]


Berikan Komentar

[+] yoyocici emoticons Istanto Personal Blog