Visualizzazione risultati 1 fino 4 di 4
Like Tree2Likes
  • 2 Post By saitfainder

Discussione: HTTP_USER_AGENT e dispositivi mobile

  1. #1
    L'avatar di Johell
    Johell non è connesso Utente attivo
    Data registrazione
    27-03-2007
    Messaggi
    415

    Predefinito HTTP_USER_AGENT e dispositivi mobile

    Ho da poco realizzato la versione mobile del mio sito, e ho sfruttato l'HTTP_USER_AGENT di php per determinare da quale dispositivo provenga l'accesso e provvedere ad un redirect automatico alla versione mobile.

    Di seguito lo script
    Codice PHP:
    $my_user_agent = strtolower($_SERVER["HTTP_USER_AGENT"]);
    if
    (
    strpos($my_user_agent, "alcatel") === FALSE &&
    strpos($my_user_agent, "benq") === FALSE &&
    strpos($my_user_agent, "blackberry") === FALSE &&
    strpos($my_user_agent, "ericsson") === FALSE &&
    strpos($my_user_agent, "galaxy") === FALSE &&
    strpos($my_user_agent, "iphone") === FALSE &&
    strpos($my_user_agent, "ipod") === FALSE &&
    strpos($my_user_agent, "lg") === FALSE &&
    strpos($my_user_agent, "motorola") === FALSE &&
    strpos($my_user_agent, "nec-") === FALSE &&
    strpos($my_user_agent, "nokia") === FALSE &&
    strpos($my_user_agent, "sagem") === FALSE &&
    strpos($my_user_agent, "samsung") === FALSE &&
    strpos($my_user_agent, "sanyo") === FALSE &&
    strpos($my_user_agent, "sharp") === FALSE &&
    strpos($my_user_agent, "sie-") === FALSE &&
    strpos($my_user_agent, "sony") === FALSE &&
    strpos($my_user_agent, "panasonic") === FALSE &&
    strpos($my_user_agent, "playstation portable") === FALSE &&
    strpos($my_user_agent, "philips") === FALSE
    )
    {
    // non succede nulla, carica il sito normale
    }
    else
    {
    // carica il sito mobile
    echo "<script language=\"javascript\">
    top.location.href = \"http://johell.altervista.org/mobile/\";
    </script>"
    ;
    }
    Il problema è che non funziona con tutti gli smartphone, ad esempio alcuni modelli samsung non rilasciano la stringa "samsung" nell'HTTP_USER_AGENT, di conseguenza il controllo salta...
    Su un samsung di mio possesso, ad esempio, l'HTTP_USER_AGENT rilascia una stringa molto lunga, ma al suo interno "samsung" non appare...

    C'è un modo migliore per stabilire al 100% se il dispositivo è mobile?

  2. #2
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Ho un motorola (android), ma la marca non compare nell'user agent. Però c'è il modello...
    Data l'infinità dei dispositivi mobile, sarebbe improbabile tentare di riconoscerli singolarmente.

    Tanto per farti un esempio, potresti tentare di distinguerli per sistema operativo; credo che tutti i dispositivi android abbiano, appunto, "android" nell'user agent. Lo stesso discorso vale per windows phone e iOS.
    Poi potresti integrare gli stessi controlli che hai fatto nel codice sopra, per dispositivi con OS meno popolari, più vecchi, ecc.

  3. #3
    L'avatar di Johell
    Johell non è connesso Utente attivo
    Data registrazione
    27-03-2007
    Messaggi
    415

    Predefinito

    Se inserisco android come parametro di confronto darei il sito mobile a tutti i dispositivi android (i quali non saranno tutti smartphone).
    Ad esempio io su i tablet preferisco si carichi la versione desktop, ma se inserissi android manderei tutto all'aria.
    Ultima modifica di Johell : 27-04-2014 alle ore 14.43.00

  4. #4
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Quell'approccio ti fa inevitabilmente scontrare coi problemi che hai visto.

    Il modo moderno è quello che si basa più semplicemente sulle dimensioni dello schermo usando CSS e media query.
    karl94 and Johell like this.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •