Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 2 of 2
  1. #1
    New Coder
    Join Date
    Jul 2011
    Posts
    17
    Thanks
    2
    Thanked 0 Times in 0 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
    Regular Coder
    Join Date
    Oct 2010
    Location
    Florence, MS
    Posts
    484
    Thanks
    10
    Thanked 33 Times in 32 Posts
    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; 08-31-2011 at 06: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. ^_^

  • The Following 2 Users Say Thank You to Chris Hick For This Useful Post:

    afdah (08-31-2011), tridentspk (08-31-2011)


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •