使用会话将整个站点中的循环重定向到移动站点


Redirect loop in full site to mobile site using session

我有一个完整的站点,它一直在操作系统商务中,移动站点是核心PHP(codeignator),完整版本和子域上的移动版本。

例如完整站点:www.example.com,移动站点域为m.example.com。当用户在手机中打开完整的网站域时,网站会重定向到适当的移动域,但如果移动用户想查看完整的网站,则用户可以在手机中查看完整的站点。

我已经用它来完成重定向http://code.google.com/p/php-mobile-detect/,但它不会重定向到完整的站点或使用会话的移动站点。我知道我必须使用PHP SESSIONS和REQUEST才能正常工作,但我不确定如何在这种情况下使用它们,所以你能建议如何使用会话解决这个重定向问题吗?

我的代码是:

session_start(); 
  include('includes/Mobile_Detect.php');
  $detect = new Mobile_Detect;
 if(isset($_REQUEST['fullsite']) && $_REQUEST['fullsite'] == 'yes')
 {//check if fullsite view request from mobile or website?
    $_SESSION['fullsite']="yes";
    if($detect->isMobile()) {
               $_SESSION['website']="mobile";
    }
    else{
       $_SESSION['website']="computer"; 
    }
    $deviceType = header('Location: https://www.example.com/');
  }
  else
  {
    if($_SESSION['website'] =="mobile"  && $_SESSION['fullsite'] !="yes")
    {
        if($detect->isTablet())
        {
            $deviceType = 'tablet';
        }
        else
        {
            $deviceType = 'phone';
        }
        $deviceType = header('Location: https://m.example.com/');
    }
    elseif($_SESSION['website'] =="computer" && $_SESSION['fullsite'] =="yes")
    {
        $deviceType = 'computer';
        $deviceType = header('Location: https://www.example.com/');
    }
    else{   
        $deviceType = 'computer';
     }
    $scriptVersion = $detect->getScriptVersion();
    session_destroy();
  }

根据我从github页面得到的信息,你应该能够让它像这样工作:

index.php

session_start();
if ($_GET['fullscreen'] == 'yes') {
    $_SESSION['fullscreen'] = 1;
} else if ($_GET['fullscreen'] == 'no') {
    $_SESSION['fullscreen'] = 0;
}
if (false == isset($_SESSION['fullscreen']) && ($_SESSION['fullscreen'] == 0)) {
    // If session['fullscreen'] has not been set (maybe first visit
    // or the user does not what in fullscree
    // check the device and do redirect
    require_once 'Mobile_Detect.php';
    $detect = new Mobile_Detect();

    // Any mobile device (phones or tablets).
    if ( $detect->isMobile() ) {
    }
    ...
}
// Other code here

当从手机访问时,如果用户想要完整版本,请提供一个带有GET参数fullscreen=yes的url锚点(http://example.com?fullscreen=yes)如果在完整的网站上并检测到移动设备(不包括在上面的代码中),您可以提供一个链接到带有fullscreen=no 的移动版本