在验证之前修剪我的输入?

时间:2014-01-05 10:26:59

标签: php validation

我对我的服务器端验证脚本有一些疑问。目前,我通过检查$ _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']);

但是,包含所有空格(例如“”)的字符串将通过empty()检查,但trim()将删除所有空格。因此,如果我有一个传入所有空格的字符串,它将通过我的验证并删除所有空格,留给我一个空变量?

但是,如果我在验证它们之前调整我的变量,那么我将无法检查字段是否存在(isset($ _ POST ['etc'])?

如果是这样,我将如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以在值完成条件之前修剪该值,或者更改条件以检查空字符串。

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

我建议在病情发生之前进行修剪。虽然为什么你的任务陈述在检查后让我感到困惑。