0

我正在使用单选按钮进行安全检查,即使我认为不应该出现错误,它也会返回错误。知道我做错了什么吗?

这是要更新的课程

public function set ($iStatus)
{
    $this->iStatus = $iStatus;
}
public function create ()
{
    if ($this->iStatus != 0 || $this->iStatus != 1 || $this->iStatus != 2)
    {
        echo "Your idea must have a valid status";
    }
    else
    {
        //update the database
    }
}

然后是html表单

if (isset($_POST["submit"]))
{
    $class->set($_POST["status"]);
    $class->create();
}
else
{
    <input type="radio" name="status" value="0" checked/> 
    <input type="radio" name="status" value="1" /> 
    <input type="radio" name="status" value="2" /> 
}

并返回错误有效状态。我想也许输入将所有内容都保存为字符串或字符,所以我重新检查错误说

if ($this->iStatus != '0') { /*blah*/ }

但这也没有用。所以我很困惑

4

2 回答 2

1

错误在 if 语句中。您应该替换 || 和 &&

否则您将始终收到错误消息

因为即使它是 0 你的 if 语句也会返回 true 因为 != 1 是 true

于 2013-02-15T22:24:47.087 回答
1

你的逻辑是倒退的:

if ($this->iStatus != 0 || $this->iStatus != 1 || $this->iStatus != 2)

应该:

if ($this->iStatus != 0 && $this->iStatus != 1 && $this->iStatus != 2)

全面测试:

<?php
class foo{
    private $iStatus;

    public function set($iStatus){
        $this->iStatus = $iStatus;
    }
    public function create(){
        if ($this->iStatus != 0 && $this->iStatus != 1 && $this->iStatus != 2){
            echo "Your idea must have a valid status";
        }else{
            echo "All good";
        }
    }
}

if (isset($_POST["submit"])){
    $class = new foo;
    $class->set($_POST["status"]);
    $class->create();
}else{
    echo '
    <form method="post" action="./">
    <input type="radio" name="status" value="0" checked>
    <input type="radio" name="status" value="1"> 
    <input type="radio" name="status" value="2">
    <input type="radio" name="status" value="3">
    <input name="submit" type="submit">
    </form>';
}?>
于 2013-02-15T22:34:21.910 回答