2012-08-07 65 views
1

我有什麼應該是一個非常簡單的問題。我正在使用以下簡單的PHP if/else語句。當nomobile未定義或不等於「true」時,則應執行下面顯示的JavaScript。如果它等於true,那麼它不應該執行。但是,即使nombobile = true,javascript也正在執行。有可能是一個小錯字搞亂了所有的東西,但我瘋狂地試圖找出什麼是錯的,無法弄清楚。PHP IF/Else不工作

<?php 
    if ($_GET["nomobile"]!="true") 
    {echo ' 
    <script type="text/javascript"> 
    if (screen.width <= 699) { 
    document.location = "http://www.heliohost.org/m/"; 
    } 
    </script>';} 
    else {} ?> 
+4

您的意思是它是一個字符串,設置爲「true」還是一個值爲true的布爾值? – andrewsi 2012-08-07 18:12:25

+1

當'if'語句上面添加'var_dump($ _ GET ['nonmobile'])'時,會產生什麼? – Matt 2012-08-07 18:14:48

+0

我對PHP並不是很有經驗,但我認爲是一個字符串。它應該是這樣的,如果你去http://www.heliohost.org/?nomobile=true那麼它不會重定向到/ m/ – Christopher 2012-08-07 18:15:32

回答

2

難道你沒有檢查$ _GET值是否被設置?以你的這一說法,並轉換成代碼應該產生這樣的:

當nomobile沒有定義或不等於「真」

if (!isset($_GET["nomobile"]) || $_GET["nomobile"] != "true"){ ... } 

有可能發生的,如果它沒有設置問題。

我希望有幫助!

0
if(!isset($_GET['nomobile']) || (isset($_GET['nomobile']) && $_GET['nomobile'] != "true")){ 
    echo '<script type="text/javascript"> 
    if (screen.width <= 699) { 
     document.location = "http://www.heliohost.org/m/"; 
    } 
    </script>'; 
} 
+1

爲什麼要調用'isset()'兩次? 'if(isset($ _ GET ['nomobile'])&& $ _GET ['nomobile']!='true')'就足夠了。 – Crontab 2012-08-07 18:17:59

+0

啊,這只是英文轉換爲代碼。 如果它不存在或者它不是「真」_when_它存在。 – Prasanth 2012-08-07 18:21:11

-2

刪除雙引號。

<?php 
    if ($_GET["nomobile"]!=true) { 
     echo '<script type="text/javascript"> if (screen.width <= 699) { document.location = "http://www.heliohost.org/m/"; } </script>'; 
    } 
    else {} 
?> 
+1

這不是**解決方案,因爲[它等同於OP中的代碼](http://viper-7.com/uS5vv1)。 – nickb 2012-08-07 18:20:10

1

我認爲問題出在您的Javascript。驗證screen.width通過提醒(或記錄它或無論您選擇做什麼)來計算小於或等於699的號碼

爲了澄清,當我嘗試瀏覽到http://www.heliohost.org/?nomobile=true時,我在代碼中看到了Javascript。如果我嘗試瀏覽到http://www.heliohost.org/http://www.heliohost.org/?nomobile=foo,Javscript不在那裏。這告訴我你的Javascript沒有達到你期望的效果,而不是你的PHP代碼有問題。

+0

問題在於當PHP不應該執行時。 Javascript不會導致這個 – PriestVallon 2012-08-07 18:43:10

+0

@PriestVallon根據我的測試,PHP代碼執行得很好,並在應該注入JavaScript時注入。你測試了你的說法還是你只是在爭論? – Crontab 2012-08-07 18:48:27

+0

我只是說什麼問題聲稱,如果/否則是問題,而不是JS。不意味着議論。 – PriestVallon 2012-08-07 18:49:41