2013-12-09 54 views
-1

我無法找到任何地方PHP版本的重定向取決於屏幕大小,所以我需要使用PHP的組合方法回聲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>"; 
} 
?> 

出於某種原因,重定向發現第二條件總是有效的。

+0

我認爲你的括號已關閉。你很早就關閉你的if語句。 – echochamber

+0

如果要測試設備大小,最佳方法是「僅限javascript」方法。也許在加載所有附加腳本/ css/fonts/etc之前,在頭標籤中加入這段代碼。 –

+1

在你的第一個'if'語句中,我確定你要設置'$ _SESSION ['v']'和不要將它與'桌面'進行比較。 – user555

回答

-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>"; 
} 
?> 
+1

會話變量使用'='運算符設置。在控制語句之外進行比較毫無意義。另外如果'$ _SESSION ['v'] ='mobile';'我們將永遠不會進入移動網站,因爲您的if語句只有在沒有設置$ _SESSION ['v']'的情況下才有效。 – user555

+0

的想法是腳本只需要檢測屏幕大小並重定向一次。一旦重定向完成,相應地設置$ _SESSION ['v']。一旦$ _SESSION ['v']被設置,它不需要再檢查了。 – DaveDeveloper

0

在你的第一個if語句我敢肯定你想設置​​,而不是它針對'desktop'比較。