2013-09-24 99 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()用戶重定向。但是,在重定向之前,您將無法檢查屏幕寬度。