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であっても、!= 1が真であるため、ifステートメントが真を返すためです。

于 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 に答える