微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP - 测试 $_GET 值是否为以下之一

如何解决PHP - 测试 $_GET 值是否为以下之一

关于 stackoverflow 的第一个问题(新用户)对我来说太赤裸裸了。

我有一个网站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',条件的那部分将通过并且您的代码将重定向。反之亦然。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。