Avatar billede durd Nybegynder
07. december 2001 - 10:32 Der er 19 kommentarer og
1 løsning

Tjekke operativsystem (ikke nødvendigvis php)

Hvad kan man gøre hvis man vil finde ud af, hvad for et operativsystem en bruger har??? Jeg skal lave min side efter det, så derfor er det meget vigtigt.. Behøver ikke at være i php, men det er bedst, hvis det kan lade sig gøre i det..
Avatar billede jakoba Nybegynder
07. december 2001 - 10:41 #1
Ja det står i objektet navigator.userAgent; (javascript)
i php kan du hente den fra den predefinerede $HTTP_USER_AGENT

Desværre bestemmer diverse softwarehuse selv hvordan den streng er formatteret, så du må kikke på eksempler fra hver browser i hvert OS.

exempel (ns4.7 på win98: $HTTP_USER_AGENT is \'Mozilla/4.7 [en] (Win98; I)\'

mvh JakobA
Avatar billede webmasterdk Praktikant
07. december 2001 - 10:49 #2
du kunne for at lede en bruger hen til et bestemt sted afhængigt af OS bruge som jakoba siger bruge HTTP_USER_AGENT og
if(ereg($HTTP_USER_AGENT,\"Win98\"){
echo \"windows 98\";
}else if(ereg($HTTP_USER_AGENT,\"Linux\"){
echo \"linux\";
og så videre....
det er uafprøvet men burde virke....
Avatar billede durd Nybegynder
07. december 2001 - 11:40 #3
Jeg afprøver det lige, og så ska jeg nok give points ud, hvis jeg ku bruge svarene... :DDD
Avatar billede jensgram Nybegynder
07. december 2001 - 17:11 #4
Denne her er nok besværlig, men den virker upåklageligt:

//  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

    // 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
    }

    // 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;
}


Håber du kan bruge det til noget. For at finde OS skal du bruge find_browser(\'os\') ...

Jens Gram - www.jensgram.dk
Avatar billede jensgram Nybegynder
07. december 2001 - 17:13 #5
Du kan jo så nøjes med:

function find_os()
{
    $ua = getenv(\'HTTP_USER_AGENT\'); // gør det lidt nemmere

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 $os;
}

Det burde virke

Jens Gram - www.jensgram.dk
Avatar billede durd Nybegynder
08. december 2001 - 20:07 #6
Kører med win98! Min comp skriver sådan her når jeg printer HTTP_USER_AGENT ud:

Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)

Ud fra det ka jeg jo let lave det i php.. Nogen der kan fortælle hvad HTTP_USER_AGENT printer ud når det er i andre operativsystemer?
Avatar billede jensgram Nybegynder
08. december 2001 - 20:18 #7
Tja det er der jo nok, men problemet er - som jakoba skrev - at denne streng ikke er formateret ens. Hvis du bruger min funktion kan du genkende de fleste OS!
Avatar billede durd Nybegynder
08. december 2001 - 20:26 #8
jamen jeg ka ikke få din til at virke..
Avatar billede durd Nybegynder
08. december 2001 - 20:29 #9
kender heller ikke den der ereg funktion.. Hva ska den bruges til?
Avatar billede jensgram Nybegynder
08. december 2001 - 20:30 #10
Avatar billede otis Nybegynder
08. december 2001 - 20:31 #11
Avatar billede jensgram Nybegynder
08. december 2001 - 20:31 #12
Prøv med følgende (brug det sidste af mine forslag)

if (find_os() == \"Win 98\") {
    print \"du bruger windows 98\";
}
Avatar billede jensgram Nybegynder
08. december 2001 - 20:32 #13
nej, pis

if (find_os() == \"Windows 98\") {
    print \"du bruger Windows 98\";
}

Hvis du bare vil vise outputtet så skriv:

find_browser()
Avatar billede durd Nybegynder
08. december 2001 - 20:37 #14
Er der da en funktion der hedder find_os()?
Avatar billede durd Nybegynder
08. december 2001 - 20:38 #15
nåjo det er jo lige den du har lavet ovenfor :DD
Avatar billede durd Nybegynder
08. december 2001 - 20:44 #16
Jeg ka sku stadig ikke få lortet til at virke.. D:
Avatar billede jakoba Nybegynder
08. december 2001 - 23:20 #17
Mr Nonames første skulle da nok kunne finde korrekt browser og os, det er blot der der info objekt der er noget klumret at sende frem og tilbage mellem funktion og side.

hvad med at gøre det globalt:

global $info = array();
$info[\'browser\'] = \'ukendt\';
$info[\'version\'] = \'ukendt\';
$info[\'os\'] = \'ukendt\';
find_browser();  // ingen parameter.

forrest i find browser skriver du så
  global $info
og udskifter alle  $browser  med  $info[\'browser\']
og alle  $version  med  $info[\'version\']
og alle  $os  med  $info[\'os\']

function find_browser() {  // ingen parameter. altid det globale array $info
    global $info;
    $ua = getenv(\'HTTP_USER_AGENT\'); // gør det lidt nemmere

    // 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)) {
        $info[\'browser\'] = \"Opera\";
        $info[\'version\'] = $r[\'2\'];
    } elseif (eregi(\"(lynx)/([0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2})\", $ua, $r)) {
... osv
Avatar billede jensgram Nybegynder
09. december 2001 - 08:50 #18
jakoba >> Ok, det har du ret i. Det er noget lettere end at kalde funktionen hver gang, men er jeg virkelig den eneste, der er heldig nok til at få det til at virke?
Avatar billede webmasterdk Praktikant
09. december 2001 - 10:51 #19
johnnydrud >> på www.boegh.f2s.com/ipnummer.txt kan du se et stort udvalg af styresystemer fra min iplog...
Avatar billede durd Nybegynder
26. december 2001 - 05:47 #20
Må sku desværre indrømme at jeg ikke kan bruge svarene til en hat, da jeg ikke ka få lortet til at virke.. Kan derfor desværre ikke give nogen points. Venter med at afslutte dette spørgsmål, så der måske kan komme nogen eksempler jeg kan få til at virke..
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