【问题标题】:PHP Validate required field + age validation in one functionPHP在一个函数中验证必填字段+年龄验证
【发布时间】:2012-11-04 20:00:33
【问题描述】:

我有一个包含出生日期字段的注册表。

    <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

【问题讨论】:

    标签: php validation required date


    【解决方案1】:

    用它来获取年龄

    $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。

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

    【讨论】:

    • 非常感谢。我真的很感谢你的帮助。我尝试使用您的代码,但无法验证年龄是否超过 19 岁。如果 dob 来自 ui datepicker,这有什么区别吗?
    • @codekmarv 你能解释一下it's failing to validate if the age is older than 19.。尝试打印$age 值,当年龄大于 19 或小于 19 时应该在什么时候报错。
    • 我的意思是它正在检查用户是否选择了出生日期,当没有选择出生日期时它显示错误,所以这部分是可以的;但是,它不会检查年龄是否大于 19,如果小于 19,则应该抛出错误。见这里:link
    • 不确定如何检查 $age 中的值,但我可以告诉你它正在做它的工作,它正在老化。如果功能组合失败(一个两个检查用户是否给 dob 工作,但另一个检查用户是否超过 19 岁不工作)。如果我将它们分开,它们都可以工作。
    • 所以这里一定有我们遗漏的东西,而且这个 php 部分对我来说实际上是新的,所以我一无所知if (((strlen(utf8_decode($this-&gt;request-&gt;post['dob'])) &lt; 3) || (strlen(utf8_decode($this-&gt;request-&gt;post['dob'])) &gt; 32)) &amp;&amp; $age &gt; 19) { $this-&gt;error['dob'] = $this-&gt;language-&gt;get('error_dob'); }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 2013-03-23
    • 1970-01-01
    相关资源
    最近更新 更多