Author Avatar

Fabrizio S.

0

Share post:

Vediamo ora come riconoscere se siamo su un dispositivo mobile o meno con il giusto software di script lato client e lato server. Ossia PHP, JS e JSP ma insomma vedrete che potrete farlo anche con gli altri linguaggi. Il motivo di questo riconoscimento del dispositivo mobile è ovvio . E risiede nel fatto che quando lo è vogliamo che il sito reagisca in una determinata maniera in quanto le dimensioni video sono minore di quelle di un dispositivo desktop / laptop da 1024 x 780 in su. Sotto si considerano dispositivi mobili che siano tablet otto pollici oppure Smartphone

Dispositivi Mobili

Iniziamo con il lato Server.

PHP Riconoscimento dispositivo mobile

Per riconoscere se siamo su un dispositivo mobile o desktop con PHP utilizzeremo al variabile di ambiente HTTP_USER_AGENT , e utilizzero anche il metodo bool e la funzione string position o strps.

Ossia per esempio

$iphone = (bool) strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");

$_SERVER[‘HTTP_USER_AGENT’] restituisce il dispositivo che state utilizzando per esempio iphone. la fuzione strpos restituisce come valore 1 in quanto iPhone compare fin dalla prima posizione e il bool di 1 è ovviamente in Algebra booleana il valore Vero. Dopo facciamo un if e otteniamo se è o meno un dispositivo 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
 
}

Javascript Riconoscere un dispositivo mobile

Js o Javascript è un dispositivo lato client e quindi questa volta utilizzeremo la funzione navigator.userAgent che reagisce a secondo di come viene richiamata la pagina dal browser , carichiamo questa variabile su testmobile e quindi la testiamo per vedere se è vera o meno la condizione.


 var testmob = (/iphone|ipad|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase())); if (testmob) { /*Si sta utilizzando un dispositivo riconosciuto mobile*/ } else { /* E' un dispositivo Laptop o desktop non motible*/ }

JSP Riconoscere dispositivo Mobile.

Il meccanismo è pressochè identico con le jsp anche qui si agisce sul server come nel caso PHP e quindi anche qui si interroga la variabile User-Agent e dopo si fa il matches per vedere se contiene uno dei valori dei dispositivi mobili.

<% 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; } %>



Attacchi Cross-site Scripting (XSS) come bloccarli
Wordpress veloce con i CDN settando i nameserver