Le guide scritte su Ethernaly.it sono a scopo didattico/informativo. Ethernaly.it e l' autore non sono responsabili dell'utilizzo della guida/materiali fatto da parte degli utenti.
Javascript js_php_jsp

Published on giugno 21st, 2013 | by Ethernaly

4

Riconoscere dispositivo mobile in PHP, JS e JSP

Riconoscere dispositivo mobile – Prefazione

Quando progettiamo un sito internet, delle volte è necessario fare un check del dispositivo per cercare di capire se si tratta di uno smartphone oppure di un desktop.

Per farlo ci sono pratiche funzioni che combinate con una condizione ci permetteranno di riconoscere il dispositivo e agire di conseguenza, vediamole insieme.

Nella guida vedremo come riconoscere questi sistemi operativi mobile:

  • iOS (iPhone)
  • iOS (iPad)
  • iOS (iPod)
  • Android
  • WebOS
  • Altri..

Riconoscere dispositivo mobile – PHP

Il procedimento in PHP consiste nel memorizzare nelle variabili di tipo boolean l’effettivo user agent (in realtà solo la parte che ci interessa) del dispositivo dell’utente. Fatto questo con una semplice condizione verifichiamo l’effettiva presenza (o meno) di una serie di sistemi operativi mobile.

$iphone = (bool) strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
$ipad = (bool) strpos($_SERVER['HTTP_USER_AGENT'],'iPad');
$ipod = (bool) strpos($_SERVER['HTTP_USER_AGENT'],'iPod');
$android = (bool) strpos($_SERVER['HTTP_USER_AGENT'],"Android");
$webos = (bool) strpos($_SERVER['HTTP_USER_AGENT'],"WebOS");

if(!$ipad && !$iphone && !$android && !$webos && !$ipod){

//Non è un dispositivo mobile

}else{

// è un dispositivo mobile

}

Riconoscere dispositivo mobile – JS

Per riconoscere la tipologia di dispositivo del visitatore con Javascript, useremo la funzione “navigator.userAgent” per prelevare lo User Agent del dispositivo e tramite condizione agire di conseguenza.

<script type="text/javascript">// <![CDATA[
   
   var mobile = (/iphone|ipad|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase())); 
     
     if (mobile) {  
   
/*Se il dispositivo è mobile...*/
    
   }  else {

/*Il dispositivo non è mobile...*/

   }

// ]]></script> 

Riconoscere dispositivo mobile – JSP

Premetto non sono un bravo programmatore JSP, ma ogni tanto per lavoro mi capita di dover mettere mano a piattaforme web programmate in JSP. Per fare il controllo del dispositivo utilizzo questa condizione (che fa anche il controllo per PS, PalmOS, Opera Mobile ecc ecc):

<%
String ua=request.getHeader("User-Agent").toLowerCase();
if(ua.matches("(?i).*((android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino).*")||ua.substring(0,4).matches("(?i)1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-")) {
  response.sendRedirect("/*Qui Le Istruzioni per i dispositivi Mobile*/");
  return;
}
%>

Tags: , , ,


Offri una birra all'autore

Clicca sul pulsante "Donazione" ed offri una birra o un po' di sushi all'autore!


About the Author

Ethernaly informatico per passione e lavoro, si interessa alle nuove tecnologie e al mondo underground legato all'informatica; amante del dobermann (attualmente ne ha 3) e della buona cucina, è - in ogni campo di interesse - mosso da grande curiosità.



Prima di commentare:

Prima di commentare leggere il nostro Disclaimer


4 Responses to Riconoscere dispositivo mobile in PHP, JS e JSP

  1. nassimiliano ITALY Google Chrome Windows says:

    E se è un dispositivo windows mobile?

  2. Paolo ITALY Google Chrome Linux says:

    Ottimo articolo.

Lascia una risposta

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 
Back to Top ↑