Avatar billede m-a-r-s2 Nybegynder
22. august 2011 - 22:18 Der er 5 kommentarer

Detection af mobile enheder ??

Hej

jeg har brug for hjælp til et script der skal tjekke for de mest almindelige mobile enheder og sende dem til et specielt site.

Er dette, sammen flikede, script OK ..... nogle alvorelige fejl eller mangler??


<?php
$iphone = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
$android = strpos($_SERVER['HTTP_USER_AGENT'],"Android");
$palmpre = strpos($_SERVER['HTTP_USER_AGENT'],"webOS");
$berry = strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry");
$ipod = strpos($_SERVER['HTTP_USER_AGENT'],"iPod");
$ipad = strpos($_SERVER['HTTP_USER_AGENT'],"iPad");
$WinCe = strpos($_SERVER['HTTP_USER_AGENT'],"Windows CE");

if ($iphone || $android || $palmpre || $ipod || $berry || $WinCe || $ipad == true)
{
header('Location: http://mobil.mit_domæne.dk/ (...));
}

?>

På forhånd tak

Mvh Lars
Avatar billede Slettet bruger
22. august 2011 - 22:46 #1
Umiddelbart ser det fornuftigt ud. Det springer lige i øjnene at du f.eks. mangler Windows Phone 7, og j2me telefoner, hvis du også vil detektere dem. Har du overvejet at bruge WURFL (findes også til PHP):
http://wurfl.sourceforge.net/
Avatar billede m-a-r-s2 Nybegynder
23. august 2011 - 23:48 #2
@tolamaps

Tak for dit kig :-)

Hvad skal jeg skrive for at få de to ekstra på??
(Så skal jeg med glæde give dig points :-)

Jeg er ikke en haj til php .... men vil tage et kig på Wurfl

Mvh Lars
Avatar billede Slettet bruger
24. august 2011 - 00:18 #3
Eksempel på Windows Phone i user-agent:
Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; HTC; 7 Pro T7576)
Så evt. kan du søge på "Windows Phone".

For J2ME telefoner ville jeg tjekke på f.eks. "MIDP", men hvis der også står "Android" i user-agent, så er det en Android telefon og ikke en J2ME telefon (de kan ikke køre J2ME applikationer). Eksempel på Android som ikke er J2ME:
Mozilla/5.0 (Linux; U; Android 1.6; en-us; LG-GT540; Build/Donut) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1 Java/Jbed/7.0 Profile/MIDP-2.1 Configuration/CLDC-1.1 MMS/LG-Android-MMS-V1.0/1.2

Det er ikke altid du finder user-agent i headeren som "user-agent". Det kan afhænge af den mobilbrowser eller internet udbyder de bruger. Start med at tjekke om der er en "x-device-user-agent" header eller en "x-operamini-phone-ua" header inden du tjekker "user-agent", blot for at nævne nogle stykker.

Hvis du vil hente noget mere information om f.eks. størrelsen på skærmen af mobiltelefonen, så kan du nogengange finde dem i headers (navngivet på forskellige måder), andre gange vil der f.eks. være en url til en xml fil i header'en som f.eks. kan hedde x-wap-profile eller profile.

Men det er en jungle at finde rundt i. Så derfor jeg foreslog wurfl, som måske kan gøre noget af arbejdet lettere (men sikkert ikke 100% korrekt).

Jeg samler ikke på point, så dem kan du bare give dig selv.
Avatar billede m-a-r-s2 Nybegynder
28. august 2011 - 00:20 #4
stristr($_SERVER['HTTP_USER_AGENT'],'Android') ||
        stristr($_SERVER['HTTP_USER_AGENT'],'BlackBerry') ||
        stristr($_SERVER['HTTP_USER_AGENT'],'Opera Mini') ||
        stristr($_SERVER['HTTP_USER_AGENT'],'Opera Mobi') ||
        stristr($_SERVER['HTTP_USER_AGENT'],'iPad') ||
        stristr($_SERVER['HTTP_USER_AGENT'],'iPhone') ||
        stristr($_SERVER['HTTP_USER_AGENT'],'iPod') ||
        stristr($_SERVER['HTTP_USER_AGENT'],'SymbianOS') ||
        stristr($_SERVER['HTTP_USER_AGENT'],'WebOS') ||
        stristr($_SERVER['HTTP_USER_AGENT'],'Windows CE') ||
        stristr($_SERVER['HTTP_USER_AGENT'],'Windows Phone OS')

<?php
$iphone = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
$android = strpos($_SERVER['HTTP_USER_AGENT'],"Android");
$palmpre = strpos($_SERVER['HTTP_USER_AGENT'],"webOS");
$berry = strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry");
$ipod = strpos($_SERVER['HTTP_USER_AGENT'],"iPod");
$ipad = strpos($_SERVER['HTTP_USER_AGENT'],"iPad");
$WinCe = strpos($_SERVER['HTTP_USER_AGENT'],"Windows CE");
$WinOs = strpos($_SERVER['HTTP_USER_AGENT'],"Windows Phone OS");

if ($iphone || $android || $palmpre || $ipod || $berry || $WinCe || $WinOs  || $ipad == true)
{
header('Location: http://mobil.mit_domæne.dk/ (...));
}

?>
Avatar billede Slettet bruger
28. august 2011 - 01:12 #5
Du kan fange en del j2me telefoner med "MIDP". Her er et lille udpluk af dem som du ikke får med, og nogle af dem kræver nok at du søger på vendor navnet i stedet for os og browser:

HTC_Touch_Pro2_T7373 Opera/9.50 (Windows NT 5.1; U; da)

HTC_Touch2_T3333 Opera/9.50 (Windows NT 5.1; U; da)

SonyEricssonG900/R100 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; 941) Opera 8.65 [da]

SonyEricssonG900/R100 Profile/MIDP-2.0 Configuration/CLDC-1.1

NokiaX3-02/5.0 (06.00) Profile/MIDP-2.1 Configuration/CLDC-1.1

LG-GT405/v10a Browser/Teleca-Q7.1 MMS/LG-MMS-V1.0/1.2 MediaPlayer/LGPlayer/1.0 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1
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