首页 > 解决方案 > PHP isset 等于 $var1 或 $var2

问题描述

我正在尝试制作路由系统。

我想做的事:

网址:http://localhost/wiki.php?post_id=1调用第二个 if

Url's:http://localhost/wiki.php?post_id=1&action=upvote http://localhost/wiki.php?post_id=1&action=downvote先调用 if

这是路由系统:

if(isset($_GET['post_id']) & ((isset($_GET['action']) ? $_GET['action'] : null) == "upvote" || "downvote")){
    //Do stuff
}else if(isset($_GET['post_id'])){
    //Do stuff
}

问题:

Url's:http://localhost/wiki.php?post_id=1&action=upvote http://localhost/wiki.php?post_id=1&action=downvote像他们应该做的那样工作。

但是 url:http://localhost/wiki.php?post_id=1调用 first 而不是 second if too...

注意:未定义索引:第 18 行 D:\xampp\htdocs\controllers\WikiController.php 中的操作

第 18 行:$rate = $_GET['action'];它在第一个 if 中。

在测试时我发现如果我改变if(isset($_GET['post_id']) & ((isset($_GET['action']) ? $_GET['action'] : null) == "upvote" || "downvote")){

 if(isset($_GET['post_id']) & ((isset($_GET['action']) ? $_GET['action'] : null) == "upvote")){

或者

 if(isset($_GET['post_id']) & ((isset($_GET['action']) ? $_GET['action'] : null) == "downvote")){

它工作正常。但我想学习如何正确地做到这一点,而不仅仅是简单地制作 2 个不同的路由器。

标签: phpurl-routing

解决方案


这部分(exp) == "upvote" || "downvote"不像你想象的那样工作。它只测试是否exp等于"upvote",第二部分"downvote"被理解为布尔值true,所以你留在替代的第一部分。

尝试

if(isset($_GET['post_id']) && (($exp = (isset($_GET['action']) ? $_GET['action'] : null)) == "upvote" || $exp == "downvote")){

推荐阅读