【发布时间】:2015-12-25 22:41:11
【问题描述】:
以下问题:我有一个 controller.php,它从输入的 URL 中捕获两个 $_GET-Values。
- $view = $_GET['view']
- $sitename = $_GET['site']
现在我想检查 $sitename 是“leichtathletik”还是“landingpage”或“galerie”或“anlaesse”或“mitglieder”
与
如果 $view 是 "visitor" 或 "admin" 或 "member"
如果为假
转发到 404 错误页面
如果为真 运行以下代码
if (
($sitename != "landingpage"
&& $sitename != "leichtathletik"
&& $sitename != "mitglieder"
&& $sitename != "anlaesse"
&& $sitename != "galerie")
|| ($view != "visitor"
&& $view != "member"
&& $view != "admin")
) {
header("HTTP/1.0 404 Not Found"); //prüft ob der Sitename und der Viewname gültig sind. Wenn nicht -> Error
exit();
} else {
//run code
}
}
使用此代码,我可以插入错误的 $view 或 $sitename 并且它不会转发到 404 页面
原始网址如:www.domain.tld?view=xxx&sitename=xxx
重写后的url是这样的:www.domain.tld/view/sitename.php .哪里错了?
【问题讨论】:
-
为什么不把它分解成逻辑块,而不是试图把所有东西串成一个巨大的if?这将使您更容易发现问题。
-
您必须查看您的声明。如果它太长太复杂,总有更好、更简单的方法。如果您的关键字要像您介绍的那样被非常具体地评估,请考虑编写一个迭代一系列可能性的函数,甚至是每个关键字的开关。
-
看看这个问题:*.com/questions/5534268/…
-
这里没有转发,只是设置了headers。
-
好的,我会尝试将语句分解为更小的 if-statments
标签: php if-statement operator-keyword