Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    riconoscere dispositivo mobile

    Salve a tutti
    Ho fatto un piccolo script per riconoscere un dispositivo mobile:

    Codice PHP:
    $dispositivo=$_SERVER['HTTP_USER_AGENT'];$arr=array('iPhone','iPod','iPad','Android','Blackberry','Opera Mobi','Cindows CE','Windows Phone','Symbian');$result=false;foreach($arr as $pos){    $result=strpos($dispositivo,$pos);    if($result===true) break;} 
    ma non funziona mi sapete dire il perche?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Attento che strpos() restituisce il numero corrispondente alla posizione in cui viene trovata a parola cercata, non ritorna TRUE, quindi

    if ( $result === TRUE )

    non si verificherà mai.

    Dovresti usare == TRUE ma non funzionerebbe ugualmente, perché strpos() può restituire 0 che è diverso da TURE, ma la parola è stata trovata.

    Il modo corretto di procedere è fare il check su FALSE

    if ( $result !== FALSE) break;

  3. #3
    si hai perfettamente ragione gli stavo facendo una modifica e gli ho postato quello modificato

  4. #4
    si la parola viene trovata
    quindi:
    $dispositivo=$_SERVER['HTTP_USER_AGENT'];
    $arr=array('iPhone','iPod','iPad','Android','Black berry','Opera Mobi','Cindows CE','Windows Phone','Symbian');
    $result=false;
    foreach($arr as $pos){
    $result=strpos($dispositivo,$pos);
    if($result!==false) break;
    }
    if($result==false){
    ...
    }

    e mi funge grazie tanto.

  5. #5
    Non sprecare cicli per la ricerca, usa la funzione già fatta array_search()

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Sul secondo if dovresti mettere ===

  7. #7
    Utente di HTML.it L'avatar di garakkio
    Registrato dal
    Dec 2011
    residenza
    Roma
    Messaggi
    480
    Ma prima di chiedere perché non funziona, prova a spiegare quello che stai facendo.
    Cioè: a che ti serve riconoscere un dispositivo mobile?

  8. #8
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    ma usare in_array() non sarebbe meglio?
    restituisce di suo vero o falso, l'unica cosa è che devi fare attenzione a maiuscole e minuscole

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Quote Originariamente inviata da clasku Visualizza il messaggio
    ma usare in_array() non sarebbe meglio?
    restituisce di suo vero o falso, l'unica cosa è che devi fare attenzione a maiuscole e minuscole
    Il problema è che la stringa dell'user agent non è solo "Android", "iPhone", "iPad" ecc... ma una cosa tipo questa

    Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

    Quindi in_array() non funzionerebbe, a meno di mettere nell'array tutte le possibili stringhe, che è un casino, bisognerebbe sempre aggiornare lo script all'aggiornarsi delle versioni.

  10. #10
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Vero, non avevo considerato il fatto che fosse una stringa unica

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.