1

我有一个带有所需出生日期字段的注册表。

    <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');
}

我已经对其进行了测试,它似乎工作正常。但是,我想知道如何同时验证这两件事。我的意思是,验证用户是否输入了出生日期,以及年龄是否超过 19 岁。

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

此致,

Codekmarv

4

1 回答 1

2

用这个来获取年龄

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

然后$age取值并在 if 条件下检查它

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。

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

于 2012-11-16T05:17:57.330 回答