Gå til innhold

$HTTP_USER_AGENT


Anbefalte innlegg

Skrevet

Jeg prøver å sette opp et script som finner ut om mine besøkene er mobil eller PC. Jeg bruker $HTTP_USER_AGENT. Men jeg har et problem. Personer med Sony Ericsson T610 blir sett på som en PC :( Noen som vet HTTP_USER_AGENT'en til Sony Ericsson T610? PS: 'eric' og 'sony' virker ikke.

Videoannonse
Annonse
Skrevet

Jeg lagde en PHP-fil med koden under:

print(substr(trim($HTTP_USER_AGENT),0,4));

Så gikk jeg inn på filen med en Sony Ericsson T610. Da kom det opp 'Sony'. Går du inn med en Nokia, kommer det opp 'Noki' osv. PC'er er ofte 'Mozi'. Se her... :)

Skrevet

Tror ikke metoden din for å finne ut hvilken UA folk bruker er så veldig lur. Greit at du bruker $_SERVER['HTTP_USER_AGENT'], men den substr er nok litt for dårlig. Prøv deg heller på preg_match eller eregi. En veldig enkel en som dette

if(eregi("sony", $_SERVER['HTTP_USER_AGENT']))
{
 echo "Du har en Sony et eller annet";
}

Skrevet
if(eregi("sony", $_SERVER['HTTP_USER_AGENT']))
{
 echo "Du har en Sony et eller annet";
}

Hva er forskjellen?

Forskjellen er at metoden din ikke tar forbehold om at den strengen kan forandre seg. Hva om "Sony" teksten ikke er plassert på den plassen du bruker substr (i fremtiden), Noki blir også litt begrenset måte å finne ut om det er Nokia. Mulig du bare skal finne ut om det er Sony, men likevel så er den metoden din veldig usikker mot forandringer, eregi finner "sony" i strengen uansett hvor den er plassert.

Skrevet
Forskjellen er at metoden din ikke tar forbehold om at den strengen kan forandre seg. Hva om "Sony" teksten ikke er plassert på den plassen du bruker substr (i fremtiden), Noki blir også litt begrenset måte å finne ut om det er Nokia. Mulig du bare skal finne ut om det er Sony, men likevel så er den metoden din veldig usikker mot forandringer, eregi finner "sony" i strengen uansett hvor den er plassert.

Jeg brukker denne PHP-koden (utdrag):

$browser = substr(trim($HTTP_USER_AGENT),0,4);

Hva skal jeg endre den til, for å få den slik du mener? '$browser' skal bli Sony, Nokia osv.

Skrevet

Vel, en enkel måte å gjøre det på kan være:

if(eregi("sony", $_SERVER['HTTP_USER_AGENT']))
{
$browser = "sony";
}
if(eregi("nokia", $_SERVER['HTTP_USER_AGENT']))
{
$browser = "nokia";
}

 

Nå er dette sikkert ikke heller beste måte, men da er man sikker på at useragent inneholder sony eller nokia.

Skrevet

Bruk metoden til FuLu - ['HTTP_USER_AGENT'] vil kanskje endres på nye mobiler eller med ny firmware. På den måten sjekker du bare om f.eks. 'sony' finnes noen steder i stringen, mot den andre metoden der den må stå på samme sted for å bli oppdaget!

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...