2014-01-05 30 views
0

我有一個函數,驗證是否設置了所有必要的參數,然後修剪這些參數。 這可能嗎?我怎麼能/應該爲每個參考傳遞這些參數?修剪一個函數的POST值

$error = false; 
$error = array(); 

$posts = array('first_name', 'last_name', 'email', 
       'telephone', 'address', 'CAP', 'city', 'comments' 
       //many others 
       ); 

$post_error = dieOrTrim(&$posts, &$error); 

echo '<pre>'; 
echo '0'.$_POST['first_name'].'0<br />'; 
var_dump($error);    
var_dump($_POST); 
echo '</pre>'; 
die(); 

功能:

function dieOrTrim(&$param) { 
    foreach($param as &$p){ 
     if(!isset($_POST[$p])){ 
      $error[] = '$_POST['.$p.']'; 
      $post_error = 'ERROR'; 
      return $post_error; 
     }else{ 
      $_POST[$p] = trim($_POST[$p]); 
     } 
    } 
} 

進入上FIRST_NAME場返回 '名稱':

0 Name 0 

array(0) { 
} 

array(18) { 
    ["first_name"]=> 
    string(6) " Name " 
    ["last_name"]=> 
    string(0) "" 
    ["email"]=> 
    string(0) "" 
    ["telephone"]=> 
    string(0) "" 
    ["address"]=> 
    string(3) "+41" 
    ["CAP"]=> 
    string(3) "(0)" 
    ["city"]=> 
    string(0) "" 
    ["comments"]=> 
    string(0) "" 
    ["etc"]=> 
    string(0) "" 
    ["etc"]=> 
    string(1) "1" 
    ["etc"]=> 
    string(0) "" 
    ["etc"]=> 
    string(0) "" 
    ["etc"]=> 
    string(0) "" 
    ["etc"]=> 
    string(0) "" 
    ["etc"]=> 
    string(0) "" 
    ["etc"]=> 
    string(0) "" 
    ["etc"]=> 
    string(1) "1" 
    ["etc"]=> 
    string(1) "1" 
} 
+0

[PHP的可能重複需要修剪所有$ \ _ POST變量](http://stackoverflow.com/questions/4710440/php-need-to-trim-all-the-post-variables) –

回答

4

有沒有不應該修剪的值?

否則你可能只是剪裁用array_map所有的值,如果$_POSTempty

if(!empty($_POST)) { 
    $_POST = array_map("trim", $_POST); 
} 

希望幫助,沒有那麼多的代碼:)

+0

謝謝,這是最快和最好的解決方案。我只保留我的函數來驗證所有參數都已設置。 – Perocat

+0

快樂,你喜歡它! –

1

我在你的函數中看到的問題是,您在檢查後!isset($_POST[$p])立即返回。我相信你想繼續下一個項目,並據此進行操作。

function dieOrTrim($param) { 
    $post_error = ''; 

    foreach($param as $p){ 
     if(!isset($_POST[$p])){ 
      $post_error = 'ERROR'; 
      continue; 
     } 

     // Trim $_POST[$p] if it's set 
     $_POST[$p] = trim($_POST[$p]); 
    } 

    return $post_error; 
} 

此外,由於您沒有修改任何傳遞的參數,因此不需要通過引用傳遞這些參數。

+0

謝謝!不,我想停止在$ _POST [$ p]的第一次接種,這是我的意圖。問題是,在函數 – Perocat

+0

之後測試$ _POST [$ p]參數時,它們不會被修剪。您的輸入如何,例如'var_dump($ _ POST)'? – vee

+0

我之前對此感興趣,只是爲了確保它不會早早死掉。但是請在你的問題之前和之後發佈。 – vee