手动重定向移动桌面版本

时间:2014-09-29 16:18:51

标签: javascript php mobile session-variables

我在我的主页上有这段代码

<?php
 if(isset($_SESSION['mobile'])){
   if($_SESSION['mobile']==1){
     echo '
         <script>
           if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
             window.location = "mobile/index.php";
           }
         </script>';
   }
 }
 else{
   $_SESSION['mobile']=1;
   echo '
         <script>
           if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
             window.location = "mobile/index.php";
           }
         </script>';
 }
?>

在我的网站的移动版本上,为了回到destop版本,我插入了一个链接到这个几乎空的&#34; redirect.php&#34;页

<?php 
  $_SESSION['mobile']=0; 
  header("location: ../index.php");
  exit;
?>

但我没有得到理想的行为:一旦我使用我的手机进入网站,我就被正确地重定向到移动版本,但是一旦我点击链接获取桌面版本,我就会重新回到移动版本。我错过了什么?

谢谢! :)

2 个答案:

答案 0 :(得分:1)

请记住在使用会话之前调用session_start()函数。

最好使用它来减少代码:

<?php session_start();

if (isset($_GET["desktop"])) {

    // DESKTOP
    $_SESSION["mobile"] = 0;
    ...

} else {

    // MOBILE
    if (!isset($_SESSION["mobile"])) { $_SESSION["mobile"] = 1; }
    if ($_SESSION["mobile"] == 1){ echo '<script>...</script>'; }
    ...

}
?>

并使用?desktop=1链接到主页以切换到桌面版。

答案 1 :(得分:0)

根据您当前的代码 - 您应该有一个单独的会话var,告诉您用户已手动请求控制。

<?php
if(!$_SESSION['manuall_overide'])
 if(isset($_SESSION['mobile'])){
   if($_SESSION['mobile']==1){
     echo '
         <script>
           if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
             window.location = "mobile/index.php";
           }
         </script>';
   }
 }
 else{
   $_SESSION['mobile']=1;
   echo '
         <script>
           if( /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ) {
             window.location = "mobile/index.php";
           }
         </script>';
 }
}
?>

<?php 
  $_SESSION['manuall_overide']=1; 
  header("location: ../index.php");
  exit;
?>