【问题标题】:Mobile to Desktop redirection condition doesn't work移动到桌面重定向条件不起作用
【发布时间】:2013-12-09 16:11:02
【问题描述】:

根据屏幕大小,我在任何地方都找不到重定向的 PHP 版本,因此我需要使用 PHP 的组合方法 echo-ing JS 脚本,但我在此处的答案之一中找到的代码由于某种原因不起作用。一切看起来都很好,但无论如何链接都会回到移动版本。我的桌面版链接是(抱歉这里不能显示标签):

href="http://www.webaddress.co.uk/?v=desktop" data-ajax="false" rel="external"

在我的 index.php 桌面版本的顶部,我有:

<?php session_start();

if (isset($_GET['v']) && $_GET['v'] == 'desktop') {
$_SESSION['v'] == 'desktop';
}

if (!isset($_SESSION['v']) || (isset($_SESSION['v']) && $_SESSION['v'] != 'desktop')) {
   echo "<script> if (window.screen.width < 1000) {window.location = '/mobile'; }</script>";
}
?>

由于某种原因,重定向发现第二个条件始终有效。

【问题讨论】:

  • 我认为您的括号已关闭。你关闭你的 if 语句太早了。
  • 如果您想测试设备大小,最好的方法是“仅 JavaScript”方法。在加载所有其他脚本/css/fonts/etc之前,可能会在head标签中添加这个sn-p ..
  • 在您的第一个 if 声明中,我很确定您想设置 $_SESSION['v'] 而不是将其与“桌面”进行比较。
  • 谢谢user555。将比较 == 更改为 = 后,它显然有效。

标签: javascript php jquery-mobile


【解决方案1】:

在您的第一个 if 语句中,我很确定您想设置 $_SESSION['v'] 而不是将其与 'desktop' 进行比较。

【讨论】:

    【解决方案2】:
    <?php session_start();
    
    if (isset($_GET['v']){
      if ($_GET['v'] == 'desktop') {
         $_SESSION['v'] = 'desktop';
      }
      if ($_GET['v'] == 'mobile') {
         $_SESSION['v'] = 'mobile';
      }
    
    }
    
    if (!isset($_SESSION['v'])) {
       echo "<script> if (window.screen.width < 1000) {window.location = '/?v=mobile'; } else {window.location = '/?v=desktop' }</script>";
    }
    ?>
    

    【讨论】:

    • 会话变量使用= 操作符设置。在控制语句之外比较它们是没有意义的。此外,如果 $_SESSION['v'] = 'mobile'; 我们将永远无法访问移动站点,因为您的 if 语句仅在未设置 $_SESSION['v'] 时才有效。
    • 这个想法是脚本只需要检测屏幕大小并重定向一次。一旦重定向完成, $_SESSION['v'] 就会相应地设置。一旦设置了 $_SESSION['v'] 就不需要再检查了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多