为什么我必须检查“;如果“;($_GET[“$view”])&&$_获取(“$view”).什么是"


Why do I have to check "IF" ($_GET["$view"]) && $_GET("$view")! . What does "!" mean? Why does it equal = ""

我听不懂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

目前,您的代码是没有意义的。