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.
fonte
2013-04-26 07:52:05
Principalmente il dispositivo cambierà l'agente utente –