2014-01-05 40 views
0

我對我的服務器端驗證腳本有一些疑問。目前,我通過檢查$ _POST數組中的字段是否爲空來驗證我的輸入數據,如果它們比最小長度短。在驗證之前修剪我的輸入?

我的腳本(摘錄);

if(!isset($_POST['BizAddItemCat']) OR empty($_POST['BizAddItemCat'])) 
{ 
    die("Please enter a category for your item."); 
} 

if(!isset($_POST['BizAddItemSubCat']) OR empty($_POST['BizAddItemSubCat'])) 
{ 
    die("Please enter a subcategory for your item"); 
} 

if(!isset($_POST['BizAddItemName']) OR empty($_POST['BizAddItemName']) OR strlen($_POST['BizAddItemName']) < 5) 
{ 
    die("Your item name must contain at least 5 characters"); 
} 

if(!isset($_POST['BizAddItemPrice']) OR empty($_POST['BizAddItemPrice'])) 
{ 
    die("Your item must have a price"); 
} 

if(!isset($_POST['BizAddItemQty']) OR empty($_POST['BizAddItemQty'])) 
{ 
    die("You must enter your available stock for your item"); 
} 

if(!isset($_POST['BizAddItemDesc']) OR empty($_POST['BizAddItemDesc']) OR strlen($_POST['BizAddItemDesc']) < 20) 
{ 
    die("Your item description must contain at least 20 characters"); 
} 

我再修剪一下$ _ POST變量,並將它們分配給變量

$itemcat=trim($_POST['BizAddItemCat']); 
$itemsubcat=trim($_POST['BizAddItemSubCat']); 
$itemname=trim($_POST['BizAddItemName']); 
$itemprice=trim($_POST['BizAddItemPrice']); 
$itemqty=trim($_POST['BizAddItemQty']); 
$itemdesc=trim($_POST['BizAddItemDesc']); 

然而,與所有空格的字符串(如「」),將通過空()檢查,但所有的空間將被trim()刪除。因此,如果我有一個字符串傳入所有空格,它會通過我的驗證,並將所有的空間刪除,留下一個空的變量?

但是,如果我確認他們之前修剪我的變量,那我就不能檢查,如果存在的字段(isset($ _ POST [「等」])?

如果是的話,我會怎樣去解決這個?

+0

首先修剪然後檢查空 –

回答

0

它經歷的條件之前,您既可以修剪值,或更改條件檢查一個空字符串。

if ($_POST['whatevervalue'] !== " ") 

我會建議與條件之前修剪去。雖然爲什麼你在檢查後發出賦值語句這讓我很困惑。

+0

當我測試了我的腳本,如果我通過使用修剪輸入(例如$ a = trim($ _ POST ['dsadasdas']))然後檢查isset(),它總是返回$ a爲真(isset()通過),但是當我刪除修剪,isset()返回false。所以我雖然我會檢查後檢查是否存在輸入是空的分配變量。通過修整之前驗證,我的isset()將無法正常工作? –

+0

你確定這些值是否正確設置? –

相關問題