Forum Webscript.Ru

Программирование => PHP => Тема начата: AlieN от 28 Июля 2003, 17:39:56

Название: Грамотно выковорить Агента и Операционку из хедеров
Отправлено: AlieN от 28 Июля 2003, 17:39:56
Собственно пишу небольшой собственный счетчик, а то спайлог половину важных функция только за деньги дает....
В общем: надо как-то грамотно выдирать Название Браузера и Операционную систему из хедеров, если кто занимался,то подкиньте код
Название: Грамотно выковорить Агента и Операционку из хедеров
Отправлено: NAS от 28 Июля 2003, 17:43:07
а может hotlog ?
Название: Грамотно выковорить Агента и Операционку из хедеров
Отправлено: AlieN от 28 Июля 2003, 17:47:29
NAS
Который постоянно падает логотип надо отображать, ну уж нет,
действую по схеме "все свое ношу с собой" :)
Название: Грамотно выковорить Агента и Операционку из хедеров
Отправлено: Макс от 28 Июля 2003, 17:53:36
pear::net::useragent::detect
Название: Грамотно выковорить Агента и Операционку из хедеров
Отправлено: NAS от 29 Июля 2003, 10:23:52
А может потратить 10$ и купить статистику ?
Название: Грамотно выковорить Агента и Операционку из хедеров
Отправлено: AlieN от 29 Июля 2003, 11:51:34
Цитировать
Макс:
pear::net::useragent::detect


include("detect.php");
$c=new Net_UserAgent_Detect();
echo "
";
print_r($c);
?>
Очень порадовал результат выполнения:
Цитировать

            [ie] => 1
            [ie3] =>
            [ie4] =>
            [ie4up] => 1
            [ie5] =>
            [ie5_5] =>
            [ie5up] => 1
            [ie6] => 1
            [ie6up] => 1

и
Цитировать

            [win] => 1
            [win95] =>
            [win16] =>
            [win31] =>
            [win9x] =>
            [win98] =>
            [winme] =>
            [win2k] =>
            [winnt] => 1
            [winxp] => 9
.....цензура.......
[reliantunix] => 35
[win32] => 1
Название: Грамотно выковорить Агента и Операционку из хедеров
Отправлено: semya от 29 Июля 2003, 12:34:22
я юзаю эти две функции... иногда бывают глюки но в 98% случаев все отрабатывает отлично.

function str_to_os($browser_string)
    {

       $os=array(

                  "Mac68K",
                  "MacOSX",
                  "MacPPC",
                  "WinME",
                  "Win16",
                  "Win95",
                  "Win98",
                  "Win2000",
                  "WinXP",
                  "WinNT",
                  "Unix",
                  "Linux",
                  "Amiga",
                  "Win32",
                  "WinCE",
                  "FreeBSD",
                  "BeOS",
                  "OS/2"

                  );

        $os_pattern=array(

                  "68K"=>0,
                  "Mac OS X"=>1,
                  "PPC"=>2,
                  "Win 9x 4.90"=>3,
                  "Win3.11"=>4,
                  "Win95"=>5,
                  "Win98"=>6,
                  "Windows NT 5.0"=>7,
                  "Windows NT 5.1"=>8,
                  "WinNT4.0"=>9,
                  "Win16"=>4,
                  "Windows 95"=>5,
                  "Windows 98"=>6,
                  "Windows NT 4.0"=>9,
                  "Windows NT"=>9,
                  "Unix"=>10,
                  "X11"=>11,
                  "Linux"=>11,
                  "AmigaOS5.0"=>12,
                  "AmigaOS 3.1"=>12,
                  "Mac_68000"=>0,
                  "Mac_PowerPC"=>2,
                  "Windows 3.1"=>4,
                  "Win 32"=>13,
                  "Windows CE"=>14,
                  "Win3.1"=>4,
                  "Win32"=>13,
                  "Windows XP"=>8,
                  "FreeBSD"=>15,
                  "BeOS"=>16,
                  "Win2000"=>7,
                  "OS/2"=>17,
                  "SunOS"=>11,
                  "WinNT5.0"=>7,
                  "WinNT5.1"=>8,
                  "Win9x 4.90"=>3,
                  "Mac_OSX"=>1,
                  "Windows 2000"=>7,
                  "Windows ME"=>3,
                  "Windows/32"=>13,
                  "WinNT"=>9

                  );

       $found="Other";
       foreach ($os_pattern as $pattern=>$os_num)
       {

           if (stristr($browser_string,$pattern))
           {

               $found=$os[$os_num];
               break;

               }

           }

       return $found;

       }

    function identify_browser($agent)
    {

        if (eregi(\'Opera.([0-9].[0-9]{1,2})\',$agent,$version)):
            $browser_type="Opera";
            $browser_version=$version[1];

        elseif (eregi(\'MSIE.([0-9].[0-9]{1,2})\',$agent,$version)):
            $browser_type="IE";
            $browser_version=$version[1];

        elseif (eregi(\'Netscape([0-9])\',$agent,$version) or ereg(\'Netscape/([0-9])\',$agent,$version)):
            $browser_type="Netscape";
            $browser_version=$version[1];

        elseif (eregi(\'Gecko\',$agent)):
            $browser_type="Mozilla";
            if (eregi(\'rv:(.*))\',$agent,$version))
            $browser_version=$version[1];
            else
            $browser_version="";

        elseif (eregi(\'Mozilla/([0-9].[0-9]{1,2})\',$agent,$version)):
            $browser_type="Netscape";
            $browser_version=$version[1];

        elseif (eregi(\'bot\',$agent)):
            $browser_type="Bot";
            $browser_version="Other";

        else:
            $browser_type="Other";
            $browser_version="Other";

        endif;

        $browser_os=str_to_os($agent);

        return array($browser_type,$browser_version,$browser_os);

        }
Название: Грамотно выковорить Агента и Операционку из хедеров
Отправлено: Макс от 29 Июля 2003, 13:19:10
http://dev.e-taller.net/brwsdtct/


PS
да, pear-вский класс слегка неудбный и похоже немного глючный :)