Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Определение браузера (https://forum.antichat.xyz/showthread.php?t=100350)

geforse 09.01.2009 16:00

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

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

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

oRb 09.01.2009 16:19

Только как пример. Ниже кусок кода из своего старого скрипта:
PHP код:

<?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
PHP код:

$user_agent getenv("HTTP_USER_AGENT"); 

Затем вот функция вытягивания из User Agent браузера ( список можно расширить... коды браузеров ищи сам)
PHP код:

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;


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

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

Цитата:

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

Смотри :)
Нормальный юзер агент оперы:
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

Цитата:

Сообщение от oRb
Смотри :)
Нормальный юзер агент оперы:
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

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

спасибо за информацию =) не знал что в конце дописывает :)


Время: 18:30