2013-09-24 77 views
1

这是我的代码。有人遇到了PHP重定向的问题,所以我只是通过一个JS中的一个,并将另一个注释掉。强制“访问完整网站”链接始终显示完整网站

因此,当我在我的手机(WP8)上,如果我有“偏好移动网站”,即使使用下面的代码,我也会陷入移动网站“m.smsalem.com”。但是,如果我将其更改为“更喜欢桌面版网站”,我首先获取移动网站,然后点击“访问完整网站”,然后我可以查看常规网站。

任何想法我可以做什么force如果用户点击该链接,“偏好移动网站”设置为访问常规网站的用户?

<?php 
include 'http://smsalem.com/Mobile_Detect.php'; 
$detect = new Mobile_Detect(); 

if(strpos($_SERVER['HTTP_REFERER'], 'm.smsalem.com')){ 
    setcookie("noMobile", true, time()+86400); /* expire in 1 hour */ 
} 

if ($detect->isMobile()) { 
    if(!isset($_COOKIE['noMobile'])){ 
     ?> 
     <script type="text/javascript"> 
      if (screen.width <= 700) { 
      window.location = "http://m.smsalem.com"; 
     } 
    </script> 
    <?php 
     //header('Location: m.smsalem.com'); 
     //exit(0); 
     } 
} ?> 
+0

输出已经发送后,你不能调用'header()'(我们可以看到) – SamT

+0

这不是问题。如果没有JS,那么'header()'对我来说工作正常,但不是我的同事。我认为他们没有dl文件的新版本。 同样,问题是“无论重定向方法”,当点击“查看完整网站”链接时,我如何强迫移动用户留在标准网站上? 我想要移动网站的人添加一个查询字符串到完整网站链接,但他们是一个痛苦的屁股工作。 – Xhynk

+1

您在'setcookie()'中设置的cookie将不会在$ _COOKIE中可用,直到** NEXT **命中您的服务器。超级全局变量在脚本启动时建立并填充,然后在脚本执行期间不会再由PHP触及。 –

回答

0

正如Marc B所提到的,您设置的cookie在您刷新之前不可用。如果您只将cookie设置为一小时,那么为什么不使用直接可用的SESSION。然后

你的代码应该是这样的:

<?php 
include 'http://smsalem.com/Mobile_Detect.php'; 
$detect = new Mobile_Detect(); 

if(strpos($_SERVER['HTTP_REFERER'], 'm.smsalem.com')){ 
    $_SESSION["noMobile"] = true; 
} 

if ($detect->isMobile()) { 
    if(!isset($_SESSION["noMobile"])){ 
     ?> 
     <script type="text/javascript"> 
      if (screen.width <= 700) { 
      window.location = "http://m.smsalem.com"; 
     } 
    </script> 
    <?php 
     //header('Location: m.smsalem.com'); 
     //exit(0); 
     } 
} ?> 

个人而言,我会使用PHP header()用户重定向。但是,在重定向之前,您将无法检查屏幕宽度。