2013-01-17 82 views
0

我正在嘗試創建一個函數,它爲用戶輸入提供兩個參數,另一個函數爲錯誤消息。我最初有一個關聯數組與兩個輸入字段和相應的錯誤。 當沒有任何條目提交函數時,我得到兩個類似的輸出;我以爲我會得到'test1'和'test2'。我每次都傳遞不同的論點,但是我得到了相同的結果。代碼如下函數內部的PHP條件語句

$valid = TRUE; 
    //$errors=''; 
    $errors=array('desc_error'=>'please enter valid description', 
        'title_error'=>'provide valid title','no_error'=>'',); 
    function sanitizeText($input,$error){ 
     //$input; 
     if($input!='') 
     { 
      $input= filter_var($input, FILTER_SANITIZE_STRING); 
      if($input==''){ 
       global $errors; 
       $errors[$error]; 
       $valid=FALSE; 
       return $errors[$error]; 
      } 
      else{ 
       $input; 
       echo 'test 1'; 
       return $input; 
      } 


     } 
     else if($input=='') 
     { 

      if($input==$_POST['desc']) 
      { 
       echo 'the description field is required<br/>'; 
       $valid=FALSE; 
      } 
      else{ 
       // 
      } 

     } 

    } 
    if(isset($_POST['submit'])) 
    { 
     $title=sanitizeText($_POST['title'],'title_error'); 
     $desc=sanitizeText($_POST['desc'],'desc_error'); 


    } 

?> 


<form method="post" action=""> 
    <p>Book Title:<input type="text" name="title" maxlength="100" value=""/></p> 
    <p>Desc:<input type="text" name="desc" maxlength="100" value=""/></p> 

    <p><input type="submit" name="submit" value="Submit"/></p> 
</form> 
+0

你知道$ valid不在函數的範圍內嗎? – Daedalus

+0

好的,範圍有點令人困惑我會做的修復,但仍然是我所擁有的部分是在最後如果其他聲明。我提交了兩次使用不同參數調用的函數,但仍然回顯「test1」。 – user1986244

+0

'test2'從腳本回顯到哪裏? 其他如果條件$ input ==''你檢查desc是否等於$ input我不明白。 –

回答

0

您的代碼是沒有意義的logic wise。首先,您檢查$input是否爲空字符串,或者不是,然後在第一次檢查中,您再次進行相同的檢查。由於if是按順序評估的,並且輸入不會是空字符串,所以第一個if將始終執行。

然後,你的第一個'其他';它只會在$input變量是一個空字符串時纔會執行。我可以看看你正在嘗試做什麼,但它現在不能正常工作。爲了它的工作,那就要看起來像下面:

function sanitizeText($input,$error) { 
    global $errors; 
    global $valid; 

    $input_val = filter_var($_POST[$input], FILTER_SANITIZE_STRING); 

    if ($input_val != '') { 
     $valid = TRUE; 
     return $input; 
    } 
    else if ($input_val == '') { 
     $valid = FALSE; 
     echo $errors[$error].'<br />'; 
    } 
} 
if(isset($_POST['submit'])) 
{ 
    $title=sanitizeText('title','title_error'); 
    $desc=sanitizeText('desc','desc_error'); 

} 

如果輸入的值不是一個空字符串,它會返回輸入值。如果是,它將不會返回任何內容,而是會回顯相應的錯誤。