PHP验证表单数据

时间:2012-06-19 08:34:02

标签: php

我需要验证提交的表单数据:

  1. 检查字段是否为空。
  2. 继续验证非空数据。
  3. x - 仅允许空格,下划线,aplha数字字符。 y - 检查它是否是图像。

    我正在使用下面的代码,它不起作用。它没有验证和打印错误。

    <?php
    $validate = array(
        '/^[a-z\d ]{4,20}$/i' => array('$x' => 'Please enter valid name.'),
        '/^[a-z\d ]{4,20}$/i' => array('$y' => 'Please enter a real category.')
    );
    
    $error = '';
    
    foreach ($validate as $key => $field)
    {
        if (preg_match($key,$field[0]))
        {
           $error.= $field[0];
        }
    }
    
    if ($error)
    {
        echo $error;
        exit;
    }
    

2 个答案:

答案 0 :(得分:1)

使用filter_var功能。你有那里需要的选择。

答案 1 :(得分:1)

您正在将正则表达式与错误消息匹配,您提交的字符串($ x和$ y)。

你可能想做这样的事情:

$validate = array(
    '/^[a-z\d ]{4,20}$/i' => array($x, "Please enter valid name."),  //change here
    '/^[a-z\d ]{4,20}$/i' => array($y, "Please enter a real category.") //change here
);

$error = '';
foreach ($validate as $key => $field)
{
    if (preg_match($key,$field[0]))
    {
       $error.= $field[1]; //change here
    }
}

if($error)
{
    echo $error;
    exit;
}

更新

我该怎么做。

$validate = array(
    array($x, '/^[a-z\d ]{4,20}$/i', "Please enter valid name."),
    array($y, '/^[a-z\d ]{4,20}$/i', "Please enter a real category."),
    array($phone, '/^\(?[0-9]{3}\)?|[0-9]{3}[-. ]? [0-9]{3}[-. ]?[0-9]{4}$/' , "Please enter a valid phone number")
);

$error = '';
foreach ($validate as $validation)
{
    if (!preg_match($validation[1],$validation[0]))
    {
       $error .= $validation[2]; 
    }
}

if($error != '')
{
    echo $error;
    exit;
}

$validate现在是一个字段数组,每个字段都用它自己的数组表示,包含错误信息,正则表达式匹配它和提交的主题。