这有什么问题?它没有成功
// 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>");
}
答案 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>");
}