如何设置出生日期输入的验证规则


how can i set validation rules for a date of birth input

如何设置登记表的出生日期验证?

我试着将输入的日期与当前日期进行比较,但没有成功。

if (date("d/m/y") > $dob){
    echo "impossible";
}

或者更好的是,我如何才能让用户无法选择尚未到来的日期。

此外,我如何比较不允许12岁以下的人加入我的网站的日期?

现在在HTML5中,您可以将日期类型的输入设置为最小值和最大值。如下:

<input type="date" min="2013-10-01" max="2013-10-20">

现在,如果您希望将最大日期设置为当前日期,那么您可以从PHP date函数或javascript Date函数中获取当前日期。

但是,如果你想添加客户端验证,你必须添加一些类似于用PHP编写的逻辑。为了使其发挥作用,您可以使用Carbon库轻松比较两个日期。

https://jqueryui.com/datepicker/#min-最大

请检查此链接。

它是一个Jquery模块,在那里您可以限制最小日期甚至最大日期。

有很多选择。请阅读文档。

根据您的表单输入,您的$dob变量可能由en_US用户使用,这些用户按mm/dd/yyyy填写。正如您所说的dd/mm/yyyy ,最好根据您的需要将该表单拆分为三个值

现在,您想检查日期是否还没有到来,在此之前,请检查日期变量是否在($day > 0 && $day <= 31) && $month > 0 && $month <= 12 && $year >= 0 && $year <= date('Y')之间,因为现在您可以将这些数字格式化为unix时间戳,以查看数字是否已经过去。

<?php
  $date = new DateTime("$year-$month-$day");
  echo $date->getTimestamp() > time() ? 'use submitted a date in the future' : 'user submitted a date in the past';
  // keep in mind that any date before 31/12/1899 will not work.
?>

请使用此函数:

function isAdult(day, month, year) {
    var age = 18;
    var mydate = new Date();
        mydate.setFullYear(year, month-1, day);
    var currdate = new Date();
    var setDate = new Date();         
        setDate.setFullYear(mydate.getFullYear() + age, month-1, day);
    if ((currdate - setDate) > 0) return true;
    return false;
}
var dob = new Date("1980-12-01");
if( isAdult(dob.getDate(), dob.getMonth()+1, dob.getFullYear()) ) {
    console.log("Adult")
}

我设法做到了这一点,因为我不想对这个使用jquery

if (isset($_POST['button'])){
   $dob = $_POST['dob'];
   echo $dob."<br>".date("o-m-d");
   if (date("o-m-d") < $dob){
       echo "<br>invalid dob";
   } else echo "<br>valid dob";
}

当我选择2016年1月31日时,脚本给出

2016-01-31
2016-01-09
invalid dob