会话无法在移动设备上正常工作

时间:2018-08-11 04:08:25

标签: php session

嗨,

我的网站有2个版本,一个用于PC,一个用于移动设备。 PC版本为mysite.org,而移动版本为mysite.org/mobile 因此,当用户从移动设备访问网站时,它会通过JS代码自动重定向到mysite.org/mobile。效果很好,但是,我为用户提供了选择查看PC版本的选择,因此,我需要一种方法,告诉浏览器一旦按下PC版本按钮就停止重定向。这就是我所做的。

<?php
session_start();
$_SESSION['redirect'] = true;

# Check whether the session should be unset.
if ($_GET['no_redirect'] == "true") {
   unset($_SESSION['redirect']);
}

# Check whether the session is set.
if (isset($_SESSION['redirect'])) {
 $redirect = <<<EOF
<script type='text/javascript'>DM_redirect("mobile/$page");</script>
EOF;
}
?>

我的html代码是这样的

<script type='text/javascript' src='js/mobile.js'></script>
  $redirect

如果$ redirect变量为空,则无论使用什么设备,都不会发生重定向。只要$ _SESSION ['redirect']为真,该变量就不会为空。因此,我停止重定向并查看PC版本的按钮如下所示:

<a href="&no_redirect=false" rel="alternate">SEE PC VERSION</a>

返回到移动版本的按钮看起来像这样

<a href="&no_redirect=true" rel="alternate">SEE MOBILE VERSION</a>

它不会完全起作用,因为在按下PC版本按钮后,它确实会转到PC版本页面,但是如果我从那里导航,它将再次重定向到移动版本。我可以使用什么解决方案?

谢谢。

1 个答案:

答案 0 :(得分:1)

您的问题是,您始终将<li class="woof_term_224">设置为$_SESSION['redirect'],并且仅在设置了true时才取消设置。因此,除非按下“ PC版本”按钮,否则您的if条件始终为true。 您可以改用以下代码:

$_GET['no_redirect']

如果尚未设置此代码,现在仅将session_start(); // if we haven't set redirect, assume we want to redirect if (!isset($_SESSION['redirect'])) $_SESSION['redirect'] = true; // Do we want to keep redirecting? if ($_GET['no_redirect'] == "true") { $_SESSION['redirect'] = false; } // Should we redirect? if ($_SESSION['redirect']) { $redirect = <<<EOF <script type='text/javascript'>DM_redirect("mobile/$page");</script> EOF; } 设置为$_SESSION['redirect']。但是,那不能让您回到移动版本。假设如果按下“移动版本”按钮,则页面将以true = $_GET['no_redirect']进行调用,在这种情况下,您可以将代码的第一部分更改为:

"false"