2013-04-25 3 views
5

マイアンドロイド携帯電話のような多くのモバイルデバイスには、「デスクトップサイトのリクエスト」オプションがあります。私はモバイルウェブサイトを構築していて、そのネイティブ機能を作ろうとしています。モバイルデバイスのデスクトップサイトオプションをリクエストする

私たちの開発者として期待されることは何ですか?たとえば、leave_mobile = 1というGETリクエストがありますか、それとも、デバイス自体がユーザーエージェントを変更して、アプリケーションをちょっと別のデスクトップと思うように仕掛けているのでしょうか?

+2

ほとんどの場合、デバイスによってユーザーエージェントが変更されます –

答えて

6

私は自分のAndroidデバイスでいくつかのテストを行い、ユーザーエージェントを読み、変更されたようです。だから私はこのネイティブオプション作業をするために、セッションに最初のユーザーエージェントを取得し、各ページ要求で送信されたものと比較しました。 ユーザエージェントが同じでない場合は、それがモバイルデバイスであるかどうかを再検証し、trueの場合はセッションuser-agentを新しいものに上書きします。新しい妥当性検査が失敗した場合は、おそらくデスクトップバージョンを探して、新しいヘッダーのリダイレクトを送信する必要があります。

$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. 
    } 
} 

あなたが初めてデスクトップ上のモバイルウェブサイトを入力した場合、それは最初のセッションが作成されますので、それはデスクトップサイトにあなたを返送しません。こうすることで、返信する代わりに、デスクトップ上のモバイルサイトを確認することができます。ただし、ユーザーエージェントを変更した場合、再検証され、リダイレクトが失敗します。

完全に動作します。これが将来誰にでも役立つことを願っています。

+0

追加情報:https://productforums.google.com/forum/#!topic/chrome/tz24aCo6F3I – Keale

関連する問題