2011-09-26 61 views
0

正如標題所說,我試圖弄清楚如何在提交按鈕被點擊後檢查表單中是否有空條目。php檢查表單是否提交空字段

if(isset($_POST['submit']) && ($selected == ''|| $text == '' || $email == '')) 
{ 
    // *do things* 
} 
else{ 
    //*more things* 
} 

這是不正確的?

+1

$選擇,$電子郵件,$文本是一個表單輸入? –

+0

可能需要發佈一些更多的代碼 –

+0

對不起,因爲他們是已經被檢索的輸入,但是這段代碼什麼也沒做。 – Sam

回答

2

您可以像處理提交按鈕一樣引用它們。

即:$_POST['input_name']

從那裏檢查,使用適當的函數:isset()empty()is_null()(雖然表單變量很少遇到如null

我也建議你閱讀了上PHP external variables

+0

但我已經將它們設置爲代碼中的那些變量。 – Sam

+0

然後跳到我答案的第二部分。 –

+0

小心空()。對於諸如「0」的值也返回true;可能不是你想要的。由於$ _POST變量以字符串形式發送給您,因此我會使用strlen()。只是我的2cc。 – maraspin

2

你可以做的是循環$ _POST變量。排除那些你不感興趣,並進行類似:

$allIsOk = true; 
foreach ($_POST as $index => $value) { 
    if (strlen($value)<1) { 
    $allIsOk = false;  
    } 
} 

...然後你做出你的選擇上$ allIsOk。

這種做法是出於兩個原因:

  1. 有了上面的建議,你需要檢查結合起來,因爲空() 將返回true 0,甚至是「0」,並可能導致撞頭 問題。
  2. 通過這種方法,您可以添加參數,無需 做出巨大的if語句

當然,這僅僅是想法。檢查文件總是明智的。另外,你可以用一個array_walk調用來替換foreach循環,以使事情變得更加奇特(尤其是從PHP 5.3開始)。 ;-)

祝你好運!

PS此外,要確定您的腳本是否已被POST操作調用,而不是考慮提交元素,我建議您使用$ _SERVER全局。 http://php.net/manual/en/reserved.variables.server.php只需檢查'REQUEST_METHOD'參數。

所以,你可能有:

if ('POST' == $_SERVER['REQUEST_METHOD']) { 

    // It's ok for these to be null - or empty 
    $exclude = array('submit', 'other_param'); 
    $allIsOk = true; 
    foreach ($_POST as $index => $value) { 
    if (!in_array($index, $exclude) && strlen($value)<1) { 
     $allIsOk = false;  
    } 
    } 
} 

if ($allIsOk) { 
    // Do Something 
} else { 
    // Do Something Else 
}