我听不懂if这个句子。为什么我不能直接检查$view是否已设置?还有两个问题-"$_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;
?>
感谢所有的帮助
我觉得你把代码搞砸了。由于许多错误,此操作将不会执行。if
语句可能是
if(isset($_GET[$view]) && $_GET[$view] != "")
即,首先检查$view密钥是否存在,然后检查该密钥是否为空。请注意不存在的键和存在但为空的键之间的区别,以及在这种情况下为什么要同时检查这两个键。
为什么我不能直接检查$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
$view="";
if(isset($_GET["$view"]) && $_GET("$view")! = "") { $view =$_GET["$view"];};
您实际上将$view="";
设置为空参数isset($_GET["$view"]
看起来像这个isset($_GET[""]
如果带有上述代码的语句被忽略,则您将获得完整的
同样,你的switch($view);
看起来也像switch("")
这意味着无论您的$_GET
中有什么,都只会执行您的第一个案例
也要检查代码的这一部分是否有错误。病例后结肠需要去除
case:"contact":
include(contact.html);
break;
首先,请正确使用[]和()。然后您必须了解操作员:http://www.w3schools.com/php/php_operators.asp
目前,您的代码是没有意义的。