2013-02-15 99 views
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*/ } 

但也不能工作。所以我很困惑

+0

一個愚蠢的問題,你確定表單是POST類型而不是GET嗎?如果用$ _REQUEST替換$ _POST,會得到什麼結果? – Vasilis 2013-02-15 22:30:51

+0

不,它是後,我喜歡在盒子外面的想法。我在表格中的其他字段工作正常,但是當我添加這些單選按鈕後,它不會提交。 – Alex 2013-02-15 22:33:46

回答

1

你的邏輯是向後返回true:

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>'; 
}?> 
+0

謝謝!你是對的我把比較運算符從==改變爲!=,忘記了也改變邏輯運算符。謝謝! – Alex 2013-02-15 22:36:13

1

錯誤是在if語句中。你應該替換||與& &

否則你總是會得到錯誤信息

因爲即使是0你的if語句,因爲= 1爲真

+0

這不是一個PHP錯誤,只是我有「你的想法必須有一個有效的地位」的錯誤,我試過了,當你打印$ iStatus的價值時仍然是同樣的問題 – Alex 2013-02-15 22:26:18

+0

你會得到什麼? – Vasilis 2013-02-15 22:27:35

+0

我得到一個0,所以是的,我不知道怎麼回事 – Alex 2013-02-15 22:29:09