Go Back   CodingForums.com > :: Server side development > PHP

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 08-31-2011, 01:24 AM   PM User | #1
tridentspk
New Coder

 
Join Date: Jul 2011
Posts: 17
Thanks: 2
Thanked 0 Times in 0 Posts
tridentspk is an unknown quantity at this point
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
tridentspk is offline   Reply With Quote
Old 08-31-2011, 06:49 AM   PM User | #2
Chris Hick
Regular Coder

 
Join Date: Oct 2010
Location: Florence, MS
Posts: 476
Thanks: 10
Thanked 33 Times in 32 Posts
Chris Hick is an unknown quantity at this point
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.
__________________
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. ^_^

Last edited by Chris Hick; 08-31-2011 at 06:56 AM..
Chris Hick is offline   Reply With Quote
The Following 2 Users Say Thank You to Chris Hick For This Useful Post:
afdah (08-31-2011), tridentspk (08-31-2011)
Reply

Bookmarks

Jump To Top of Thread


Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 01:22 AM.


Advertisement
Log in to turn off these ads.