我无法理解,如果判刑。为什么我不能检查是否设置了$ view?还有2个问题 - 什么是“$ _GET(”$ view“)!” “!”标志意味着什么?什么更改?而且,为什么它等于=“”?
<?php
$myurl=htmlspecialchars($_SERVER["PHP_SELF"]);
$view="";
if(isset($_GET["$view"]) && $_GET("$view")! = "") { $view =$_GET["$view"];};
include(head.html);
switch($view] {
case "" :
include(main.html);
break;
case "people" :
include(people.html);
break;
case:"contact":
include(contact.html);
break;
default :
include(404.html);
break;
};
include_once(foot.html;
?>
感谢所有帮助
答案 0 :(得分:1)
为什么我不能检查是否设置了$ view?
因为显然该代码的作者不希望空字符串有效。例如,如果有一个名为$view
的字段且用户未在其中放置任何内容,则会出现这种情况。
实际上,你可以这样做,因为$view
无论如何都被初始化为空字符串!此代码可能是由新手复制/粘贴或编写的。
什么!改变?
它实际上是!=
,以令人困惑的方式编写。这两个是相同的:
&& $_GET("$view")! = "")
&& $_GET("$view") != "")
此外,您的代码有错误。 $_GET("$view")
无效,()
应为[]
。所以,这是更正和可读的代码:
if (isset($_GET["$view"]) && $_GET["$view"] != "") {
$view = $_GET["$view"];
}
此外:
switch($view] // ...what is this?
include_once(foot.html; // and this?
case:"contact": // ummmm
答案 1 :(得分:1)
我认为你搞砸了你的代码。由于许多错误,这将不会执行。 if
语句可能是
if(isset($_GET[$view]) && $_GET[$view] != "")
即,首先检查$ view键是否存在,然后检查该键是否为空。请注意不存在的密钥与存在但是为空的密钥之间的区别,以及在这种情况下检查两者的原因。
答案 2 :(得分:1)
$view="";
if(isset($_GET["$view"]) && $_GET("$view")! = "") { $view =$_GET["$view"];};
您实际上将$view="";
设置为空参数
isset($_GET["$view"]
的内容如下所示isset($_GET[""]
使用上述代码的整个if语句将被忽略
同样,您的switch($view);
也看起来像switch("")
这意味着无论您在$_GET
检查代码的这一部分是否也有错误。案件需要移除后的冒号
case:"contact":
include(contact.html);
break;
答案 3 :(得分:0)
首先,正确使用[]和()。然后你必须了解运营商:http://www.w3schools.com/php/php_operators.asp
现在你的代码没有意义。