2009-01-23 104 views
0

我目前正在尝试验证表单服务器端,它的工作方式是将所有数据放入数组中,并将表单字段作为键和将字段数据作为值,但是我需要检查所有数据钥匙有一个价值相关的其他明智我希望提交停止和用户不得不编辑那里的细节,然后重新提交,是否有一个快速检查,我可以运行,而不是打破阵列分开,检查或检查之前是放在数组中与开关或if语句丢失?验证数组中的每个元素?

回答

0

一个选择是做两个。

以字段名称作为键具有单独的字段选项数组。现在

$fieldTypes = array('nameFirst' => 'name', 
        'nameLast' => 'name', 
        'phone'  => 'phone', 
        'email'  => 'email'); 
foreach($input as $key => $value) { 
    switch($fieldTypes[$key]) { 
     case 'name': 
      //run $value against name validation 
      break; 
     case 'phone': 
      //run $value against phone validation 
      break; 
     case 'email': 
      //run $value against email validation 
      break; 
     default: 
      //code here for unknown type 
    } 
} 

,即可以在任何数量的方式来使用,很容易扩展到包括的东西,如果需要的字段或没有,甚至是错误的信息等。通过将$fieldTypes数组转换为多维数组或包含数据的对象数组。

这样,如果您决定添加一个字段,它可能不会涉及验证代码中的太多更改。

0

如何像

<?php 
$arrayFilled = true; 
foreach($array as $key=>$value) { 
    $arrayFilled = trim($value) == '' ? false : $arrayFilled; 
    if($arrayFilled === false) { break; } 
} 
if($arrayFilled === false) { 
    echo "missing data"; 
} 
else { 
    echo "filled array"; 
} 

你可能要检查的不仅仅是一个空字符串更多,但我把它留给你

+0

你可以选择你的线? – Sampson 2009-01-23 16:22:21

1

Sico87,

更多的不是你不想同时测试所有的字段。例如,您可能有一个联系人字段,其中包含未授权的电话号码条目选项,并且由于该原因而拒绝提交将会产生问题。

在很多情况下,单独测试您的字段比较容易,因此您可以对每个字段进行特别的关注。您需要特别注意电子邮件地址,并特别注意生日。

从长远来看,平等对待可能会造成非常严重的问题。

1
function fieldEmpty($value) { 
    return trim($value) == ''; 
} 

if (count(array_filter($array, 'fieldEmpty'))) { 
    die('bad'); 
} 
相关问题