最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

php - Mobile or desktop browser detection and redirect to respective web page - Stack Overflow

programmeradmin3浏览0评论

I'm building a website in PHP which contains flash in its index page. I want to redirect users who are accessing my site via any mobile browser to page m.index.php which doesn't contain flash(simple page) for loading purposes. For others who access via desktop browser to index.php which contains flash in it.

How can I redirect each user based on their platform?

I'm building a website in PHP which contains flash in its index page. I want to redirect users who are accessing my site via any mobile browser to page m.index.php which doesn't contain flash(simple page) for loading purposes. For others who access via desktop browser to index.php which contains flash in it.

How can I redirect each user based on their platform?

Share Improve this question edited Dec 16, 2019 at 21:29 Machavity 31.6k27 gold badges95 silver badges105 bronze badges asked Jul 12, 2011 at 7:10 user392406user392406 1,3235 gold badges28 silver badges53 bronze badges 1
  • 1 If mobile users are saved from loading Flash content, maybe desktop usrs would like to have it removed to. :-) – RobG Commented Jul 12, 2011 at 7:21
Add a comment  | 

4 Answers 4

Reset to default 14

You could use .htaccess like in this answer or in this answer or you could check the user-agent in php:

<?php
$useragent=$_SERVER['HTTP_USER_AGENT'];
if(preg_match('/android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i',substr($useragent,0,4)))
header('Location: http://detectmobilebrowser.com/mobile');
?>

Code from detectmobilebrowser.com

Mobile Detect is a lightweight PHP class for detecting mobile devices (including tablets). It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment. Before procedding further, note that, ‘Mobile Detect’ class is a server-side (PHP) detection tool, it is not a replacement for Responsive Web Design (media queries) or any other form of client-side feature detection.

Redirecting a site to a mobile version

/* Change path info depending on your file locations */
require_once 'Mobile_Detect.php';
$detect = new Mobile_Detect;

if($detect->isMobile())
{
    header('Location: http://mobile.example1.com/');
    exit;
}

The above code will now redirect the main site to a mobile version if viewed from a mobile. Some other use cases to redirect are given below.

// Any tablet device.
if( $detect->isTablet()) {

}

// Exclude tablets.
if( $detect->isMobile() && !$detect->isTablet()) {

}

// Check for a specific platform with the help of the magic methods:
if( $detect->isiOS()) {

}

if( $detect->isAndroidOS()) {

}

if( $detect->isWindowsPhoneOS()) {

}

Loading different resources depending on the device

$detect = new Mobile_Detect;

if($detect->isMobile() || $detect->isTablet()) {
    echo "<link rel='stylesheet' href='mobile.css type='text/css' />";
} else {
    echo "<link rel='stylesheet' href='style.css type='text/css' />";
}

This uses the same command but just less devices:

<?php $iphone = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone"); $android
= strpos($_SERVER['HTTP_USER_AGENT'],"Android"); $palmpre = strpos($_SERVER['HTTP_USER_AGENT'],"webOS"); $berry = strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry"); $ipod = strpos($_SERVER['HTTP_USER_AGENT'],"iPod");

if ($iphone || $android || $palmpre || $ipod || $berry == true)  {
    echo "<script>window.location='http://mblistings.com/mob/index.php'</script>"; } ?>

Thanks for this code snippet, just had a similar need where the differences between Chrome, FF and IE do't stack up, and a simple ccs coding doesn't do the job anymore, so a dedicated HTML page has had to be created for not only Browser, but display sizes so as to cover 4:3 16:9 ratio screens...

Anyway, using your example, I have developed the php to provide feedback for browser type, build and screen resolution.

Hope you find this adaptation of use, if anyone improves on it, welcome the improvements as only spent 1hr on this so haven't had the opportunity to specify all the options for the many browser types - so currently is only developed fully for Chrome, IE and FF

enjoy::

// Start of code //////////////////////////////////////////////
// Source http://stackoverflow.com/questions/6660649/mobile-or-desktop-browser-detection-and-redirect-to-respective-web-page
// Updated Added 14 0220
// need to identify different browsers so as to display correct Window/Div sizing!

$USER_AGENT = explode('/', $_SERVER ['HTTP_USER_AGENT']);

//  print_r ($USER_AGENT);

/* Eliminate IE */
if (strpos($USER_AGENT[1], 'MSIE') !== false ){
   //  echo "Browser ::\t TEST";
}

$browserDetect = explode (" ",$USER_AGENT[2]);
//print_r ($browserDetect); 
// Need to swop around the Keys so that the Browser is the first key in the array - makes things easier with detecting
$browserDetect = array_reverse ($browserDetect);
//print_r ($browserDetect); 

/* Redirection */
switch ($browserDetect[0]) {
    case 'Mozilla' :
    echo "Browser ::\t Mozilla";
    break;
    case 'Chrome' :
    echo "\nBrowser ::\t Chrome";
    // build =
    $browserBuild = explode (" ",$USER_AGENT[3]);
    echo "\nBuild ::\t ".$browserBuild[0];
    break;
    case 'Firefox' :
    echo "Browser ::\t Firefox";
    // build =
    echo "\nBuild ::\t ".$USER_AGENT[3];
    break;
    case 'Gecko' :
    echo "Browser ::\t IE";
    // build =
    $browserBuild = explode (" ",$USER_AGENT[2]);
    echo "\nBuild ::\t ".$browserBuild[2];
    break;
    case 'Opera' :
    echo "Browser ::\t Opera";
    break;
    case 'Googlebot' :
    echo "Browser ::\t Googlebot";
    break;
    case 'msnbot' :
    echo "Browser ::\t msnbot";
    break;
    case 'Safari' :
    echo "Browser ::\t Safari";
    break;
    default :
    echo "Browser ::\t Unsure what browser your using?";
    break;
};

// Added 14 0220 /// Source:: http://en.kioskea.net/faq/1251-php-detect-the-display-resolution
// Needed to set the Viewer Screen for FF and IE

if(!isset($_GET['r']))     
{     
echo "<script language=\"JavaScript\">     
<!--      
document.location=\"$PHP_SELF?r=1&width=\"+screen.width+\"&Height=\"+screen.height;     
//-->     
</script>";     
}     
else {         

// Code to be displayed if resolutoin is detected     
     if(isset($_GET['width']) && isset($_GET['Height'])) {     
           echo "\nScreen size ::\t ".$_GET['width']."x".$_GET['Height'];
     }     
     else {     
            // Resolution not detected     
     }     
}     
// End of code snippet /////////////////////////////////////////////////////////////////////////////
发布评论

评论列表(0)

  1. 暂无评论