PDA

Просмотр полной версии : Определение браузера


geforse
09.01.2009, 16:00
Каким способом можно сделать так, чтобы когда пользователь заходит на сайт с помощью Internet Explorer, его "кидало" в папку /ie/

Когда через Opera в /op/
Когда через Firefox в/fx/

Если другой браузер, то например по умолчанию в /ie/

oRb
09.01.2009, 16:19
Только как пример. Ниже кусок кода из своего старого скрипта:
<?php
$agent = $_SERVER['HTTP_USER_AGENT'];
if(preg_match("!(Opera[\s\d\./]+)!msi", $agent, $math))
{
$agent = $math[1];
$mysqlAgent = "opera";
}
elseif(preg_match("!(Firefox[\s\d\./]+)!msi", $agent, $math))
{
$agent = $math[1];
$mysqlAgent = "firefox";
}
elseif (preg_match("!MSIE([\s\d\./]+)!msi", $agent, $math))
{
$agent = "Internet Explorer ".$math[1];
$mysqlAgent = "msie";
}
elseif (preg_match("!(Konqueror[\s\d\./]+)!msi", $agent, $math))
{
$agent = $math[1];
$mysqlAgent = "konqueror";
}
elseif (preg_match("!(Iceweasel[\s\d\./]+)!msi", $agent, $math))
{
$agent = $math[1];
$mysqlAgent = "iceweasel";
}
elseif (preg_match("!(Lynx[\s\d\./]+)!msi", $agent, $math))
{
$agent = $math[1];
$mysqlAgent = "lynx";
}
elseif (preg_match("!(Netscape[\s\d\./]+)!msi", $agent, $math))
{
$agent = $math[1];
$mysqlAgent = "netscape";
}
elseif (preg_match("!(Safari[\s\d\./]+)!msi", $agent, $math))
{
$agent = $math[1];
$mysqlAgent = "safari";
}
$location = "/";
switch($mysqlAgent)
{
case "opera": $location .= "opera/";break;
case "firefox": $location .= "firefox/";break;
case "msie": $location .= "msie/";break;
default: $location .= "msie/";break;
}
header('Location: '.$location);
?>

geforse
09.01.2009, 16:21
Здорово)
буду пробовать

Sharky
09.01.2009, 16:22
Сначала определяем User Agent
$user_agent = getenv("HTTP_USER_AGENT");
Затем вот функция вытягивания из User Agent браузера ( список можно расширить... коды браузеров ищи сам)
function detect_browser()
{
global $user_agent, $browser;

if (strstr($user_agent, "Nav") ||
strstr($user_agent, "Netscape")) $browser = "Netscape";
elseif (strstr($user_agent, "Firefox")) $browser = "Firefox";
elseif (strstr($user_agent, "Lynx")) $browser = "Lynx";
elseif (strstr($user_agent, "Opera")) $browser = "Opera";
elseif (strstr($user_agent, "WebTV")) $browser = "WebTV";
elseif (strstr($user_agent, "Konqueror")) $browser = "Konqueror";
elseif (strstr($user_agent, "MSIE 6")) $browser = "Internet Explorer 6";
elseif (strstr($user_agent, "MSIE 7")) $browser = "Internet Explorer 7";
else $browser = "Other";

return 0;
}
ну и на последок вызываем функцию и делаем с определённым брауезом что нам нужно

detect_browser();
if ($browser == "Internet Explorer 6")
{
header('Location: ./ie6/');
}


по желанию фуннкуи. можешь убрать и замешать всё в единую кучу

oRb
09.01.2009, 16:33
Sharky, мини поправочка:
оперу стоит определять выше всех, тк она может маскироваться под ие и лису.

Sharky
09.01.2009, 16:39
и чё =) если она будет маскриоваться то по юзер агенту ты вобще никак её не определишь :)

oRb
09.01.2009, 21:58
и чё =) если она будет маскриоваться то по юзер агенту ты вобще никак её не определишь :)
Смотри :)
Нормальный юзер агент оперы:
Opera/10.00 (X11; Linux i686 ; U; en) Presto/2.2.0
Маскировка под лису:
Mozilla/5.0 (X11; Linux i686 ; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 10.00
Маскировка под осла:
Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686 ; en) Opera 10.00

Те при маскировки опера всегда себя дописывает в конец. И если прочекать лису раньше оперы, то скрипт будет думать, что клиент - лиса.

geforse
09.01.2009, 22:12
oRb
Ещё раз спасибо за скрипт)) всё работает :)

Sharky
09.01.2009, 22:58
Смотри :)
Нормальный юзер агент оперы:
Opera/10.00 (X11; Linux i686 ; U; en) Presto/2.2.0
Маскировка под лису:
Mozilla/5.0 (X11; Linux i686 ; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 10.00
Маскировка под осла:
Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686 ; en) Opera 10.00

Те при маскировки опера всегда себя дописывает в конец. И если прочекать лису раньше оперы, то скрипт будет думать, что клиент - лиса.
спасибо за информацию =) не знал что в конце дописывает :)