PHP简单方程

时间:2013-06-26 17:07:12

标签: php

这有什么问题?它没有成功

// define
$prv=0;

if(isset($_GET['prv'])) {
$prv = intval($_GET['prv']);
}

// security
if($prv != 0 OR $prv != 2)  {
die("<p>Error</p>");
}

这始终贯穿die()部分,即使prv未定义或在网址(2)中定义为and is 2

这确实有效:

// security
if($prv == 0 OR $prv == 2)  { } else {
die("<p>Error</p>");
}

4 个答案:

答案 0 :(得分:0)

将您的if语句更改为:

// security
if($prv != 0 AND $prv != 2)  {
    die("<p>Error</p>");
}

使用OR它总是会评估为真,因为当$ prv == 0时它不等于2.有意义吗?

答案 1 :(得分:0)

无论“prv”的值是多少,它肯定不能同时为0和2,所以其中一个条件总是正确的;这就是你进入该条款的原因。

答案 2 :(得分:0)

分解:

  • 如果$prv不为0,则第一个条件通过,OR成功
  • 否则,$pev必须为0.因此它必须是“不是2”,因此OR成功。

请尝试&&

答案 3 :(得分:0)

==替换!=

if($prv != 0 AND $prv != 2)  {
    die("<p>Error</p>");
}