2012-08-07 106 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