PHP - 测试 $_GET 值是否为以下之一
PHP - Test if $_GET value is one of the following
关于 Whosebug 的第一个问题(新用户)就这么简单。
我有一个网站 www.website.com/?view=overview .
我想测试VIEW是否存在,如果不存在则重定向到另一个页面
(这是用 empty($_GET['view') 完成的并且有效
如果该测试通过,我现在想要获取该视图是 5 个值之一,如果是,那么我允许用户继续,否则我将重定向到另一个页面。
我已经尝试使用变量和数组,使用 in_array,我最多只能正确识别单个值。当我尝试测试多个时,它总是重定向。这是我测试两个值(概述和设置)的示例,但再次测试的总数应该是 5。
if (empty($_GET['view'])) {
header("Location: www.website.com/?view=overview");
} else {
if (($_GET['view'] != "overview") || ($_GET['view'] != "settings")) {
header("Location: www.website.com/?view=overview");
}
}
}
我到处找,卡住了!
您可以使用 in_array(needle, haystack)
具有有效值列表:
$valid_views = ['overview', 'settings'];
if (!in_array($_GET['view'], $valid_views){
header("Location: www.website.com/?view=overview");
} else {
// view is ok, continue
header("Location: www.website.com/?view=".$_GET['view']);
}
您正在使用 || (OR) 当你应该使用 && (AND)
if (empty($_GET['view'])) {
header("Location: www.website.com/?view=overview");
} else {
if (($_GET['view'] != "overview") && ($_GET['view'] != "settings")) {
header("Location: www.website.com/?view=overview");
}
}
}
如果 $_GET['view']
等于 'settings' 那么它不等于 'overview',那部分条件将通过并且您的代码将重定向。反之亦然。
关于 Whosebug 的第一个问题(新用户)就这么简单。
我有一个网站 www.website.com/?view=overview .
我想测试VIEW是否存在,如果不存在则重定向到另一个页面 (这是用 empty($_GET['view') 完成的并且有效
如果该测试通过,我现在想要获取该视图是 5 个值之一,如果是,那么我允许用户继续,否则我将重定向到另一个页面。
我已经尝试使用变量和数组,使用 in_array,我最多只能正确识别单个值。当我尝试测试多个时,它总是重定向。这是我测试两个值(概述和设置)的示例,但再次测试的总数应该是 5。
if (empty($_GET['view'])) {
header("Location: www.website.com/?view=overview");
} else {
if (($_GET['view'] != "overview") || ($_GET['view'] != "settings")) {
header("Location: www.website.com/?view=overview");
}
}
}
我到处找,卡住了!
您可以使用 in_array(needle, haystack)
具有有效值列表:
$valid_views = ['overview', 'settings'];
if (!in_array($_GET['view'], $valid_views){
header("Location: www.website.com/?view=overview");
} else {
// view is ok, continue
header("Location: www.website.com/?view=".$_GET['view']);
}
您正在使用 || (OR) 当你应该使用 && (AND)
if (empty($_GET['view'])) {
header("Location: www.website.com/?view=overview");
} else {
if (($_GET['view'] != "overview") && ($_GET['view'] != "settings")) {
header("Location: www.website.com/?view=overview");
}
}
}
如果 $_GET['view']
等于 'settings' 那么它不等于 'overview',那部分条件将通过并且您的代码将重定向。反之亦然。