webForumDet fria alternativet
Logga in / Bli medlem

Se OS

PHP

9 svar · 419 visningar · startad av andy-80

Medlem sedan jan. 200537 inlägg
Trådstart#1

Hej på er,

Har kikat runt här och på php.net utan framgång.
Det jag vill veta är funktionen/metoden för att plocka en besökares OS, under förutsättning att Servern tillåter det naturligtvis.
Antagligen finns det väl en slags:
$_SERVER[FIND_OS]... eller något?

Tack på förhand

Medlem sedan okt. 20001 285 inlägg
#2
if (strstr($_SERVER["HTTP_USER_AGENT"],'Win')) {
    $os='Win';
} else if (strstr($_SERVER["HTTP_USER_AGENT"],'Mac')) {
    $os='Mac';
} else if (strstr($_SERVER["HTTP_USER_AGENT"],'Linux')) {
    $os='Linux';
} else if (strstr($_SERVER["HTTP_USER_AGENT"],'Unix')) {
    $os='Unix';
} else {
    $os='Other';
}
Medlem sedan jan. 200537 inlägg
#3

När jag kör den koden så får jag följande svar:

$os = Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0

Testdatorn har Win XP, och det går ju inte att utläsa särskilt effektivt att det är det. Finns det ingen annan mer exakt funktion/metod?

$_SERVER['http_user_agent'] är väl i första hand till för att ta fram browser, eller har jag fel?

Medlem sedan okt. 20001 285 inlägg
#4

$_SERVER['http_user_agent'] är väl i första hand till för att ta fram browser, eller har jag fel?

Vad säger denna rad ? Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0

Windows XP ÄR Windows NT 5.1 om du inte visste det :OO

<?
if (strstr($_SERVER["HTTP_USER_AGENT"],'Win')) {
    $os='Win';
} else if (strstr($_SERVER["HTTP_USER_AGENT"],'Mac')) {
    $os='Mac';
} else if (strstr($_SERVER["HTTP_USER_AGENT"],'Linux')) {
    $os='Linux';
} else if (strstr($_SERVER["HTTP_USER_AGENT"],'Unix')) {
    $os='Unix';
} else {
    $os='Other';
}
echo "Du använder ".$os;
?>
Medlem sedan jan. 200537 inlägg
#5

Det ser ut som den närmast beskriver att det är Windows NT 5.1, och inte XP som är använt.
Men kanske siffrorna utgör en annan betydelse?
E inte så haj på detta som sagt.

Medlem sedan jan. 200537 inlägg
#6

Ah, nu såg jag den raden åxå!
Nej, det visste jag inte...
Tackar och Bockar!

Kanske vet du också vilket som är det bästa sättet att nationsbestämma en besökare, dvs vilket land.
Har sett långa lösningar där man går på sista delen i adressen: se, dk, no osv men det känns rätt missvisande. Finns det något 99%-igt exakt sätt?

Medlem sedan okt. 20001 285 inlägg
#7

Du kan ju testa
if (strstr($_SERVER["HTTP_USER_AGENT"],'Windows NT 5.1')) {
$os='Windows XP';
} else if (strstr($_SERVER["HTTP_USER_AGENT"],'Windows 98')) {
$os='Windows 98';

för olika windoze .. har ingen aning på rak arm vad Win 98 lämnar .. be en kompis med 98 gå in på en sida och kolla vad USER AGENT ger

Angående nation så ger detta bara språkinställning för browsern .. för mera exakt måste det till nån IP koll tror jag

Medlem sedan jan. 200537 inlägg
#8

Ja, kanske är det IP numret man måste gå på, jag har faktiskt inte en aning.
Men informationen måste ju finnas att hämta någonstans då den garantert skickas vid anrop?
Kanske är något för en ny tråd dock?

Medlem sedan okt. 20001 285 inlägg
#9

Ja.. det finns ett färdigt script nånstans där alla IP längor finns i en databas som man kollar emot

Medlem sedan jan. 200537 inlägg
#10

Ok, då får jag hitta den på nå´t sätt

Tusen tack för din hjälp!

394 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
120 ms — deklarationer (db)
136 ms — hämta statistik (db)
135 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)