Search code examples
web-applicationsmobile-websiteweb-frameworks

How to detect and load different html pages on different phones


I have to build a mobile web application but it has to look different for each phone. For iPhone I need to load a different html file, same goes for android. And for some phones that don't even support javascript I just need to load a plain html page with a simple navigation.

How do i load different layouts in different browsers? I searched the internet for a mobile web framework but those are only for high-end phones. In India the market share is comparatively less for high-end smartphones.


Solution

  • there are many ways to retrieve server variables in many programming languages like PHP and ASP. Even in HTML you can look into variables like HTTP_USER_AGENT to tell you what your user is using to view your site. I found this incredible peice of code which was posted on mobileforge. If you are using PHP this detects almost everything mobile and lets you make programming decisions based on certain criteria.

    $mobile_browser = '0';
    
    if (preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|android)/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
        $mobile_browser++;
    }
    
    if ((strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') > 0) or ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))) {
        $mobile_browser++;
    }    
    
    $mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'], 0, 4));
    $mobile_agents = array(
    'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',
    'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',
    'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',
    'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',
    'newt','noki','oper','palm','pana','pant','phil','play','port','prox',
    'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',
    'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',
    'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',
    'wapr','webc','winw','winw','xda ','xda-');
    
    if (in_array($mobile_ua,$mobile_agents)) {
        $mobile_browser++;
    }
    
    if (strpos(strtolower($_SERVER['ALL_HTTP']),'OperaMini') > 0) {
        $mobile_browser++;
    }
    
    if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'windows') > 0) {
        $mobile_browser = 0;
    }
    
    if ($mobile_browser > 0) {
       // do something
    }
    else {
       // do something else
    }