我在 PHP 上制作了一个简单的验证表单系统(通过我的原始 php MCV 框架),但我遇到了一个我无法解决的问题
我有这个代码
$credentials = array('name' => 'required', 'password' => 'required|between');
$validator = new Validation;
if (!$validator->check($credentials, array(5, 10))) Redirect::to('/login', 'error', $validator->msg);
然后我的班级校准器看起来像
public function check($fields, $size)
{
foreach ($fields as $key => $val)
{
$rule = explode('|', $val);
if (in_array('required', $rule))
{
if (empty($_POST[$key]))
{
$this->msg = 'Field '.$key.' is required';
$this->final = false;
}
}
elseif (in_array('between', $rule))
{
if (strlen($_POST[$key]) < $size[0])
{
$this->msg = 'Filed '.$key.' must be between '.$size[0].' and '.$size[1].' chars';
$this->final = false;
}
if (strlen($_POST[$key]) > $size[1])
{
$this->msg = 'Filed '.$key.' must be between '.$size[0].' and '.$size[1].' chars';
$this->final = false;
}
}
}
if (!$final)
{
return false;
}
else
{
return true;
}
}
问题是当我像这样发送数组时(只有 1 条规则)
$credentials = array('name' => 'required', 'password' => 'between');
它工作正常,但如果我添加更多规则(必需|介于...),我的函数将仅适用于第一个规则,因此在这种情况下,忽略规则之间...