Web Analytics Made Easy -
StatCounter Making my site redirect to different links depending on the browser being used? - CodingForum

Announcement

Collapse
No announcement yet.

Making my site redirect to different links depending on the browser being used?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Making my site redirect to different links depending on the browser being used?

    So I'm interested in directing my visitors to a webpage which,

    will contain code that determines what browser the visitor is using and redirect him using php. Preferably header location will be the redirect method.

    For instance,

    If he is using Firefox, it would redirect him to my main link

    If he is using Google chrome or Internet Explorer, it would redirect him to a different link.

    Thanks

  • #2
    NOTE: THIS IS UNTESTED, but should work
    Well, you could use this function to get the user's browser:
    PHP Code:
    <?php
    function getBrowser() 

        
    $u_agent $_SERVER['HTTP_USER_AGENT']; 
        
    $bname 'Unknown';
        
    $platform 'Unknown';
        
    $version"";

        
    //First get the platform?
        
    if (preg_match('/linux/i'$u_agent)) {
            
    $platform 'linux';
        }
        elseif (
    preg_match('/macintosh|mac os x/i'$u_agent)) {
            
    $platform 'mac';
        }
        elseif (
    preg_match('/windows|win32/i'$u_agent)) {
            
    $platform 'windows';
        }
        
        
    // Next get the name of the useragent yes seperately and for good reason
        
    if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)) 
        { 
            
    $bname 'Internet Explorer'
            
    $ub "MSIE"
        } 
        elseif(
    preg_match('/Firefox/i',$u_agent)) 
        { 
            
    $bname 'Mozilla Firefox'
            
    $ub "Firefox"
        } 
        elseif(
    preg_match('/Chrome/i',$u_agent)) 
        { 
            
    $bname 'Google Chrome'
            
    $ub "Chrome"
        } 
        elseif(
    preg_match('/Safari/i',$u_agent)) 
        { 
            
    $bname 'Apple Safari'
            
    $ub "Safari"
        } 
        elseif(
    preg_match('/Opera/i',$u_agent)) 
        { 
            
    $bname 'Opera'
            
    $ub "Opera"
        } 
        elseif(
    preg_match('/Netscape/i',$u_agent)) 
        { 
            
    $bname 'Netscape'
            
    $ub "Netscape"
        } 
        
        
    // finally get the correct version number
        
    $known = array('Version'$ub'other');
        
    $pattern '#(?<browser>' join('|'$known) .
        
    ')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
        if (!
    preg_match_all($pattern$u_agent$matches)) {
            
    // we have no matching number just continue
        
    }
        
        
    // see how many we have
        
    $i count($matches['browser']);
        if (
    $i != 1) {
            
    //we will have two since we are not using 'other' argument yet
            //see if version is before or after the name
            
    if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){
                
    $version$matches['version'][0];
            }
            else {
                
    $version$matches['version'][1];
            }
        }
        else {
            
    $version$matches['version'][0];
        }
        
        
    // check if we have a number
        
    if ($version==null || $version=="") {$version="?";}
        
        return array(
            
    'userAgent' => $u_agent,
            
    'name'      => $bname,
            
    'version'   => $version,
            
    'platform'  => $platform,
            
    'pattern'    => $pattern
        
    );

    ?>
    Then, use this function to redirect:
    PHP Code:
    <?php
    function redirect_to$location NULL ) {
        if (
    $location != NULL) {
             
    header("Location: {$location}");
             exit();
        }
    }
    ?>
    Then, combine these two functions with a switch statement:
    PHP Code:
    <?php
    $ua
    =getBrowser();
    switch (
    $au['name']) {
        case 
    "Internet Explorer":
            
    $location 'example.php';
            
    redirect_to$location );
            break;
        case 
    "Mozilla Firefox":
           
    $location 'example1.php';
           
    redirect_to$location );
           break;
        case 
    "Google Chrome":
           
    $location 'example2.php';
           
    redirect_to$location );
           break;
        case 
    "Apple Safari":
           
    $location 'example3.php';
           
    redirect_to$location );
           break;
        case 
    "Opera":
           
    $location 'example4.php';
           
    redirect_to$location );
           break;
        case 
    "Netscape":
           
    $location 'example5.php';
           
    redirect_to$location );
           break;
    }
    ?>
    If you are going to be doing this on multiple pages, I suggest making that last bit a function as well.
    Last edited by Chris Hick; Aug 31, 2011, 02:56 AM.
    Notice: If you post a problem and it gets fixed, please remember to go back and place it as solved. ;)
    I always recommend the HEAD First series of books for learning a new coding language. ^_^

    Comment

    Working...
    X