Avatar billede refshauge Nybegynder
28. november 2002 - 22:18 Der er 12 kommentarer og
1 løsning

Detect browser + styresystem

Jeg har brug for at få udskrevet brugerens browser + styresystem. Dette kan gøres med variablen $HTTP_USER_AGENT, som returnerer f.eks.:
"Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)"

Jeg vil dog gerne have at mit lille script returnerer f.eks.: "Windows 98, Internet Explorer 6.0" eller noget tilsvarende som en alm. bruger kan forholde sig til.

Det skal helst virke for både netscape, IE, Opera m.fl. samt windows, linux, unix, mac...

Er der nogen, der har sådan en lille stump kode, der kan klare det? (Jeg har set at el barto har lavet scriptet http://www.eksperten.dk/spm/281883)
Avatar billede jensgram Nybegynder
28. november 2002 - 22:20 #1
//  Funktion, der finder brugerens browser, version samt platform ($info = browser|version|os)

function find_browser($info = 'browser')
{
    $ua = getenv('HTTP_USER_AGENT'); // gør det lidt nemmere
    if ($info == 'browser' || $info == 'version') { // browser og version
        if (eregi("(opera) ([0-9]{1,2}.[0-9]{1,3}){0,1}", $ua, $r) || eregi("(opera/)([0-9]{1,2}.[0-9]{1,3}){0,1}", $ua, $r)) {
            $browser = "Opera";
            $version = $r['2'];
        } elseif (eregi("(lynx)/([0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2})", $ua, $r)) {
            $browser = "Lynx";
            $version = $r['2'];
        } elseif (eregi("(msie) ([0-9]{1,2}.[0-9]{1,3})", $ua, $r)) {
            $browser = "MSIE";
            $version = $r['2'];
        } elseif (eregi("(netscape6)/(6.[0-9]{1,3})", $ua, $r)) {
            $browser = "Netscape";
            $version = $r['2'];
        } elseif (eregi("mozilla/5", $ua)) {
            $browser = "Netscape";
            $version = "5.0"; // pr. definition
        } elseif (eregi("(mozilla)/([0-9]{1,2}.[0-9]{1,3})", $ua, $r)) {
            $browser = "Netscape";
            $version = $r['2'];
        } else {
            $browser = "Ukendt";
            $version = "3.0"; // pr. definition
        }
    } else { // os
        if (eregi("linux", $ua)) {
            $os = "Linux";
        } elseif (eregi("win32", $ua)) {
            $os = "Windows";
        } elseif ((eregi("(win)([0-9]{2})", $ua, $r)) || (eregi("(windows) ([0-9]{2})", $ua, $r))) {
            $os = "Windows " . $r['2'];
        } elseif (eregi("(winnt)([0-9]{1,2}.[0-9]{1,2}){0,1}", $ua, $r)) {
            $os = "Windows NT " . $r['2'];
        } elseif (eregi("(windows nt)( ){0,1}([0-9]{1,2}.[0-9]{1,2}){0,1}", $ua, $r)) {
            $os = "Windows NT " . $r['3'];
        } elseif (eregi("mac", $ua)) {
            $os = "Macintosh";
        } elseif (eregi("(sunos) ([0-9]{1,2}.[0-9]{1,2}){0,1}", $ua, $r)) {
            $os = "SunOS " . $r['2'];
        } elseif (eregi("(beos) r([0-9]{1,2}.[0-9]{1,2}){0,1}", $ua, $r)) {
            $os = "BeOS " . $r['2'];
        } elseif (eregi("freebsd", $ua)) {
            $os = "FreeBSD";
        } elseif (eregi("openbsd", $ua)) {
            $os = "OpenBSD";
        } elseif (eregi("irix", $ua)) {
            $os = "IRIX";
        } elseif (eregi("os/2", $ua)) {
            $os = "OS/2";
        } elseif (eregi("unix", $ua) || eregi("hp-ux", $ua)) {
            $os = "Unix";
        } else {
            $os = "Ukendt";
        }
    }

    // returnér relevant info
    return $$info;
}
Avatar billede jensgram Nybegynder
28. november 2002 - 22:21 #2
den virker fint nok - jeg har i hvert fald aldrig haft problemer.

$browser = find_browser('browser');
$version = find_browser('version');
$os      = find_browser('os');
Avatar billede melange Nybegynder
28. november 2002 - 23:36 #3
hvis det ikke er så vigtigt med de "rigtigt navne" kan du bare brug følge linjer som jeg har plukket ud af mit statestikscript:

$fjern_enden = split(")",$_SERVER['HTTP_USER_AGENT']);
$bruger_info = split(";",$fjern_enden[0]);

// Finder Browser
$browser = $bruger_info[1];

// Finder OS
$os = $bruger_info[2];

// Finder sproget
$sprog = $_SERVER['HTTP_ACCEPT_LANGUAGE'];

// Finder ip'en
$ip = $_SERVER['REMOTE_ADDR'];
Avatar billede xyborx Nybegynder
29. november 2002 - 09:23 #4
Læs:
http://www.php.net/manual/en/function.get-browser.php
:)
Jeg har også selv lavet et lille stykke kode, fordi jeg ikke kunne få browscap til at funke:
http://www.xyborx.dk/source.php?file=browserinfo.php
Avatar billede xyborx Nybegynder
29. november 2002 - 09:25 #5
Det skal måske lige siges at min egen kode ikke er særligt godt gennemtestet, og jeg har lært en masse nyt siden dengang :o)
Avatar billede refshauge Nybegynder
29. november 2002 - 10:47 #6
Okay tak for jeres indspil. Mr. Noname´s script fungerer efter hensigten, så hvis du opretter et svar skal du få nogle point.
Avatar billede tipsen Nybegynder
29. november 2002 - 10:49 #7
Mangler vist at tage højde for Netscape 7.
Avatar billede refshauge Nybegynder
29. november 2002 - 10:52 #8
OK. Tipsen, kan du bygge det ind i scriptet, så kan du få del i pointene.
Avatar billede tipsen Nybegynder
29. november 2002 - 14:45 #9
Gider ikke.
Avatar billede refshauge Nybegynder
29. november 2002 - 17:50 #10
OK. Hvis der er andre der gider, er der lidt point og dele ud af.
Avatar billede refshauge Nybegynder
07. juli 2003 - 14:32 #11
noname: Vil du have point, eller hva´?
Avatar billede jensgram Nybegynder
07. juli 2003 - 17:31 #12
UPS - den havde jeg vist overset! Sorry...
Avatar billede jensgram Nybegynder
08. juli 2003 - 11:11 #13
Takker for points. Håber du kunne bruge det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester