if 语句触发,即使它不应该触发


If statement triggers even though it shouldn't

这是它的工作原理。如果用户单击链接以列出产品,则他们将被定向到产品页面。为了安全起见,我在开头设置了一些东西以确保设置"cid"或"sid"。我确信用户会转到带有 cid 或 sid 链接的页面,因为当我在浏览器中将鼠标悬停在它上面时,它会说出来。这是代码

<?php require("includes/header.php"); ?>
<?php
if(!isset($_GET['cid'])||!isset($_GET['sid'])) {
    header("Location: index.php");
}

不幸的是,用户仍然被引导。如有必要,我将发布更多代码。

您的代码要求同时定义$_GET['cid']$_GET['sid'],而不是其中一个定义。将||替换为符合您状况的&&

它应该是:

if (!(isset($_GET["sid"]) || isset($_GET["cid"])))

在您的情况下,假设一个 url 带有 ?sid=foo

  • !isset($_GET["sid"])计算结果为 false
  • !isset($_GET["cid"])计算结果为 true
  • true || false计算结果为 true,因此用户被重定向

将运算符更改为 &&。喜欢这个

If(!isset($_GET... && !isset($_GET...)