...

View Full Version : Making my site redirect to different links depending on the browser being used?



tridentspk
08-31-2011, 01:24 AM
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 :)

Chris Hick
08-31-2011, 06:49 AM
NOTE: THIS IS UNTESTED, but should work
Well, you could use this function to get the user's browser:


<?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
function redirect_to( $location = NULL ) {
if ($location != NULL) {
header("Location: {$location}");
exit();
}
}
?>


Then, combine these two functions with a switch statement:


<?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. :)



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum