如果语句触发,即使它不应该

时间:2012-06-03 18:25:28

标签: php header get

这是它的工作原理。如果用户点击链接列出产品,那么他们将被定向到产品页面。为了安全起见,我在开头设置了一些内容,以确保设置'cid'或'sid'。我确信用户会转到与cid或sid链接的页面,因为它在我浏览器中将鼠标悬停在它上面时显示它。这是代码

<?php require("includes/header.php"); ?>
<?php

if(!isset($_GET['cid'])||!isset($_GET['sid'])) {
    header("Location: index.php");
}

不幸的是,用户仍然被指示。如有必要,我会发布更多代码。

3 个答案:

答案 0 :(得分:4)

您的代码要求定义 <{em> $_GET['cid']$_GET['sid'],而不是其中之一。在您的情况下将||替换为&&

答案 1 :(得分:0)

应该是:

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

在您的情况下,假设网址为?sid=foo

  • !isset($_GET["sid"])评估为false
  • !isset($_GET["cid"])评估为真
  • true || false评估为true,因此用户被重定向

答案 2 :(得分:0)

将运营商更改为&amp;&amp;。喜欢这个

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