嗨,
我的网站有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版本页面,但是如果我从那里导航,它将再次重定向到移动版本。我可以使用什么解决方案?
谢谢。
答案 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"