Riconoscere un dispositivo mobile con Php


17 giugno 2011 13 Commenti mobile, php

Uno dei punti “calienti” di quest’ultimo anno per i web designer è stato quello di realizzare siti internet adattati per dispositivi mobile.

Su Ebug ne abbiamo parlato tanto, vedendo il tutto su diverse prospettive come quelle delle media queries di css3 che ci permettono di adattare il sito internet a seconda della risoluzione attraverso i css oppure quello di utilizzare plugin di wordpress e framework di css attraverso librerie javascript.

Oggi analizzeremo invece la possibilità di riconoscere il dispositivo che sta visitando il nostro progetto grazie a php.

Ma a cosa potrà mai servire tale meccanismo? Nella stragrande maggioranza dei casi i layout cambiando le dimensione e la loro forma conservano la loro struttura in grandi linee.

Nei layout un po’ più stravaganti dove jquery ha preso il sopravvento, molti layout devono essere rifatti d’accapo, e proprio per questo creare un sito mobile a parte.

Grazie a php ora riusciremo a riconoscere se chi sta visitando il sito web sta usando un dispositivo desktop oppure un dispositivo mobile.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php

// settiamo a zero la variabile mobile_browser

$mobile_browser = '0';

//  controlliamo se l'user agent corrisponde a un dispositivo mobile
 
if (preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|android)/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
    $mobile_browser++;
}

// controlliamo HTTP_ACCEPT corrisponde alla tecnologia WAP per telefonini
 
if ((strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') > 0)
or ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))) {
    $mobile_browser++;
}    

// estraiamo i primi 4 caratteri da USER_AGENT e creiamo un array con tutti i header mobile
 
$mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'], 0, 4));
$mobile_agents = array(
    'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',
    'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',
    'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',
    'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',
    'newt','noki','oper','palm','pana','pant','phil','play','port','prox',
    'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',
    'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',
    'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',
    'wapr','webc','winw','winw','xda ','xda-');

// se corrisponde a mobile aumentiamo la nostra variabile di 1
 
if (in_array($mobile_ua,$mobile_agents)) {
    $mobile_browser++;
}
 
if (strpos(strtolower($_SERVER['ALL_HTTP']),'OperaMini') > 0) {
    $mobile_browser++;
}
 
if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),'windows') > 0) {
    $mobile_browser = 0;
}

// quindi se mobile_browser è inferiore di 0 vuol dire che un dispositivo mobile
 
if ($mobile_browser > 0) {

// reindirizzamento per mobile

header('Location: http://www.tuosito.it/mobile/');

}
else {

// altrimenti restiamo dove siamo

echo "";

}  
 
?>

Questo codice va messo in cima alla pagina così da evitare il caricamento di altre stringhe di codice php. Lo sto utilizzando io per il mio nuovo layout che vi presenterò su Facebook ;)

Se vi fosse piaciuto l’articolo, se avreste qualche domanda oppure voleste dire la vostra potreste scrivere un commento :D




Potresti trovare interessante anche

siti_dispositivi_mobile_seminario_online report_seminario_online_creare_siti_web_per_mobile php_riconoscere_ip url
Pubblicato in mobile, php |



Iscriviti alla newsletter

Vuoi ricevere ogni articolo che pubblico direttamente sulla tua mail ? Vuoi evitare di perdere qualsiasi articolo pubblico ? Registrati alla mia newsletter in un click.

Inserisci il tuo indirizzo mail:

13 commenti per Riconoscere un dispositivo mobile con Php

ciao Rocco,
ti volevo segnalare una funzione molto utile per tracciare i browser mobile:
http://detectmobilebrowsers.mobi/
 
 

@oly1982 ottima condivisione ^^ gli altri apprezzeranno molto ;)

Grazie rocco, ottima dritta ;)

[...] e uno per mobile ) che si reindirizzano con uno script in php da una pagina a un’altra ( trovate lo script in questo mio altro articolo [...]

Bella li!!!
era un po che cercavo qualcosa di questo tipo, ma mi sorge un dubbio, quei cellulari che usano windows mobile come fanno ad essere riconosciuti come tali se c’è la parte di codice che cita:
if (strpos(strtolower($_SERVER['HTTP_USER_AGENT']),’windows’) > 0) {
$mobile_browser = 0;
}

@jinkazama82it ciao , è grazie per la visita su Ebug ;)

I dispositivi con wizzoz mobile vengono riconosciuti dalla sigla winw

Buona giornata ;)

ok perfetto mi era sfuggita quella sigla ^^
grazie per la rapida risposta.

Ciao è molto che nessuno scrive, spero di avere una risposta.
Ho provato a usare questo script per un mio sito in wordpress.
Ma ho un problema nel momento in cui faccio il reindirizzamento mobile.
Se reinidirizzo su un altro sito, hostato da un altra parte ottengo il risultato che mi aspetto e cioè da mobile vedo la mia web app che mi sono costruito, ma se il reindirizzamento è verso lo stesso sito ma una cartella diversa mi dice che non può aprire la pagina perchè ci sono stati troppi reindirizzamenti. Come risolvo? è una questione di permessi ai miei file? ho portato tutto a 755 (ogni tanto aruba mi da dei problemi sugli script php) oppure è una questione che la funzione header non si può usare per reindirizzare sullo stesso indirizzo?
Grazie, e naturalmente grazie per la splendida guida, super interessante
daniele 

@daniele per alcuni dispositivi dovresti trovare il loro prefisso che può variare :(

Al massimo io ho trovato un plugin che permette il redirect in automatico :

http://wordpress.org/extend/plugins/mobile-theme-switcher/

Ciao, ho trovato il tuo articolo davvero utile.. Volevo quindi approfittare della tua competenza e gentilezza chiedendo come poter implementare nello script anche il riconoscimento per i tablet.. 

grazie mille ed a presto 

Il sito dello script Detect Mobile Browsers è cambiato detectmobilebrowsers.com
Sono interessato anche io al riconoscimento per i tablet.
Grazie
 

Salve, funziona benissimo dal mio samsung S9000 ma non va dall’ipad o dal samsung note. E’ un mio errore?
Grazie
Max
 

Lascia un Commento