0

我只是在修复一些表单验证,我似乎有一个非常奇怪的问题。

$newsletter = $_POST['newsletter']; // value 0 or 1 is passed from form, as "value"
// input type is radiobuttens

然后我有一个非常简单的

if ($newsletter != "0" || $newsletter != "1") {
    $error_message .= 'Invalid newsletter?<br />';
}

它不通过这个?我确实尝试过:

if ($newsletter != 0 || $newsletter != 1) {

也没有通过,但据我所知,那就是将字符串与 int 进行比较

4

4 回答 4

1

您必须将语句更改为&&

if ($newsletter != "0" && $newsletter != "1") {

这将检查它是否既不是 0 也不是 1。

于 2013-05-03T13:38:38.450 回答
0

你想要一个AND比较。我假设您想确保只有 0 或 1 的值被传递给脚本。

if ($newsletter != "0" && $newsletter != "1") {
    $error_message .= 'Invalid newsletter?<br />';
}

OR由于 0 != 1 您的条件的任何一方都是正确的。所以这总是过去了。

于 2013-05-03T13:39:57.040 回答
0

如果是“0”,则不是“1”。如果是“1”,则不是“0”。所以它总是要么不为零,要么不为一。没有值会通过该测试。

如果它不等于“1”并且也不等于“0”,您只想返回一个错误。

于 2013-05-03T13:37:20.543 回答
0

回答评论,你可以这样做:

if(!$newsletter) { $error_message .= 'Invalid newsletter?<br />'; }
于 2013-05-03T13:38:18.527 回答