PHP在一个函数中验证必需的字段+年龄验证

时间:2012-11-16 04:59:26

标签: php validation required dob

我有一份带有所需出生日期的登记表。

    <tr>
      <td><span class="required">*</span> <?php echo $entry_dob; ?></td>
      <td><input type="text" id="dob" name="dob" value="<?php echo $dob; ?>"   /><p id="age"></p>
        <?php if ($error_dob) { ?>
        <span class="error"><?php echo $error_dob; ?></span>
        <?php } ?>

        

所以在我的php控制器文件中[我使用的是MVC编码的软件],我有以下功能来完成所需的字段:

 if ((strlen(utf8_decode($this->request->post['dob'])) < 3) || (strlen(utf8_decode($this->request->post['dob'])) > 32)) {
        $this->error['dob'] = $this->language->get('error_dob');
    }

我还需要验证用户是否至少19岁。如果他/她不是,将显示错误,我在同一个php控制器文件中使用以下函数来实现此目的:

$allowed_age = 19;
$bdate = strtotime($_REQUEST['dob']);
$age = (time()-$bdate)/31536000;
if($age < $allowed_age) {
 $this->error['dob'] = $this->language->get('error_dob');
}

我测试了它,似乎工作正常。但是,我想知道如何一次验证这两件事。我的意思是,验证用户是否输入了dob,以及年龄是否超过19岁。

我不是专家,所以如果您知道更好的方法,请分享。

最诚挚的问候,

Codekmarv

1 个答案:

答案 0 :(得分:2)

用它来获得年龄

$age = floor( (strtotime(date('Y-m-d')) - strtotime($this->request->post['dob'])) / 31556926);

然后取$age值并在条件

时检查它
if (((strlen(utf8_decode($this->request->post['dob'])) < 3) || (strlen(utf8_decode($this->request->post['dob'])) > 32)) 
&& $age < 19) {
    $this->error['dob'] = $this->language->get('error_dob');
}

它将检查用户是否输入了一个值且年龄大于19。

您必须使用&&运算符来检查多个条件。