2013-04-25 5 views
5

Molti dispositivi mobili come il mio telefono Android dispongono di un'opzione 'richiesta sito desktop'. Sono in procinto di costruire siti web per cellulari e voglio far funzionare quella funzionalità nativa.Richiedi l'opzione del sito desktop sui dispositivi mobili

Cosa ci si aspetta dalla nostra parte come sviluppatori? Esiste una richiesta GET ad esempio: leave_mobile = 1 o è il dispositivo stesso a cambiare l'user-agent per ingannare l'applicazione pensando che sia solo un altro desktop?

+2

Principalmente il dispositivo cambierà l'agente utente –

risposta

6

Ho eseguito alcuni test sui dispositivi Android e ho letto gli agenti utente e sembra che cambi. Quindi, quello che ho fatto per far funzionare questa opzione nativa è stato quello di acquisire l'agente utente iniziale in una sessione e su ogni richiesta di pagina confrontarlo con quello inviato. Se l'agente utente non è lo stesso, riconvalida se si tratta di un dispositivo mobile e se si sovrascrive la sessione utente-agente con una nuova. Se tuttavia la nuova convalida fallisce, probabilmente vorrebbe trovare la versione desktop in modo da inviare un nuovo reindirizzamento dell'intestazione.

$DesktopSite = 'www.example.com'; 
$UserAgent = $_SERVER['HTTP_USER_AGENT']; 

if (!isset($_SESSION['use_mobile'])){ 
    $_SESSION['use_mobile'] = 1; 
    $_SESSION['user_agent'] = $UserAgent; 
} else if ($_SESSION['user_agent'] != $UserAgent){ // Check if user-agent has changed 
    if(!preg_match(/*preg match from http://detectmobilebrowsers.com/ */){ 
     $_SESSION['use_mobile'] = 0; 
     $_SESSION['user_agent'] = $UserAgent; // Overwrite old user-agent with new one. 
     header("location: $DesktopSite"); // Send visitor to desktop website. 
    } else { 
     // Visitor still seems to be mobile. 
     $_SESSION['use_mobile'] = 1; 
     $_SESSION['user_agent'] = $UserAgent; // Overwrite old user-agent with new one. 
    } 
} 

Se si entra nel sito web mobile su un desktop per la prima volta, non ti invierà indietro al sito desktop perché crea la prima sessione. In questo modo puoi controllare il sito mobile su un desktop invece di essere rimandato indietro. Se tuttavia cambi il tuo user-agent, verrai riconvalidato e reindirizzato in caso di errore.

Funziona perfettamente. Spero che questo possa aiutare chiunque in futuro.

+0

Alcune informazioni aggiuntive: https://productforums.google.com/forum/#!topic/chrome/tz24aCo6F3I – Keale