3

我对这个简单的if陈述有疑问:

$type = $_GET['type'];
if ($type !== 1 || $type !== 2) {
    header('Location: payment.php');
    exit;
}

只允许类型12 ,但是...

  1. www.example/succeed.php?type= 1 - 重定向回 payment.php
  2. www.example/succeed.php?type= 2 - 重定向回 payment.php
  3. www.example/succeed.php?type= 3 - 重定向回 payment.php

最后一个例子没问题,但我不知道为什么它在第一个和第二个例子中也重定向。

4

3 回答 3

4

!==是身份运算符;所以它也检查类型。

但是 $_GET, $_POST, ... 数组中的数据是字符串。所以你还需要检查一个字符串:

if ($type !== "1" && $type !== "2") /* ... */

还要检查是否$a !== $x && $a !== $y始终为真(如果$x !== $y)。所以||在这里使用。

于 2013-10-05T21:46:51.537 回答
1

尝试这个:

if (!($type == 1 || $type == 2)) {
    header('Location: payment.php');
    exit;
}

这可以说成Anything other than type is 1 or 2

于 2013-10-05T22:00:48.420 回答
0

如果你的意思是只有值 1 和 2 的类型应该被重定向你应该试试这个代码

if ($type === 1 || $type === 2) {
    header('Location: payment.php');
    exit;
}
于 2013-10-05T21:51:28.867 回答