PHP: detecting mobile device

submit to reddit

HTTP_USER_AGENT

Beside that most of the responses of $_SERVER['HTTP_USER_AGENT'] may return, it appears that this is the most reliable way to track down a user agent with PHP. It is weird that most of the clients, i.e. Safari and Chrome will return something with Mozilla in it’s strings, but however it’s enough to track the “chrome” or “safari” sub strings.

All the examples bellow are from Mac OS X:

Firefox 3.6:

Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6

Note: there are both Mozilla and Firefox sub strings!

Safari 4:

Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; bg-bg) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10

Chrome:

Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.307.11 Safari/532.9

Note: Here they are Mozilla, Chorme and Safari!!!

Opera:

Opera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.15 Version/10.10

The day of mobile

Nowadays it’s normal to make a site with the presumption it will be visible from mobile. The war between Nexus One from Google and iPhone from Apple is just beginning and with all those devices with wide screens everything’s becoming more complicated.

User agent strings from Nexus One and iPhone

Both are weird, but both contain the keyword – “mobile” and that may help you make a check with something like this PHP snippet:

<?php
$mobile = !!(FALSE !== strstr(strtolower($_SERVER['HTTP_USER_AGENT']), 'mobile'));
?>

Related posts:

  1. PHP: Mobile Devices HTTP_USER_AGENT Strings
  2. Mobile Internet Users are Getting More Important
  3. Storing JavaScript objects in html5 localStorage

You are a GREAT developer? Click here to answer the weekly quiz!

This entry was posted in PHP and tagged , , , , , , , , , , , , , , , , , , . Bookmark the permalink.

3 Responses to PHP: detecting mobile device

  1. mehul says:

    Why don’t you use the built-in method in PHP get_browser()? It works fine!

  2. Stoimen says:

    Actually get_browser() doesn’t work on the fly. As the PHP docs says you have to have browscap.ini file setup. And if not only the old school HTTP_USER_AGENT remains working!

    greetings,
    stoimen

  3. Stoimen says:

    An interesting article about this HTTP_USER_AGENT string and its history you can find here: http://www.nczonline.net/blog/2010/01/12/history-of-the-user-agent-string/

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">