php生日验证功能

时间:2011-11-10 11:45:08

标签: php

我正在尝试在我的php脚本中添加生日验证功能,以确保用户是18岁以上。但我仍然坚持如何在if语句中添加它。

这是从输入字段中获取的内容:

$ydob = ($_POST['ydob']);
$mdob =($_POST['mdob']);
$ddob = ($_POST['ddob']);
$dob = $ddob."-".$mdob."-".$ydob;

功能:

function validateDOB($dob){

list($ydob,$mdob,$ddob) = explode("-",$dob);
$year_diff = date("Y") - $ydob;
$month_diff = date("m") - $mdob;
$day_diff = date("d") - $ddob;

if ($day_diff < 0 || $month_diff < 0) {
$year_diff--;
return $year_diff;
} }

此块用于检查是否正确输入了所有详细信息。 所以我的问题是如何在此处添加此功能以验证用户是否超过18岁。

if((!$username) || (!$country) || (!$dob) || (!$email) || (!$password)){

    $error_message = "You did not submit the following required information!<br /><br />";
    if(!$username){
        $error_message .= "Enter a User Name";
    } else if(!$country){
        $error_message .= "Enter a Country"; 
    } else if(!$dob){ 
                    $error_message .= "Enter a D.O.B";
            } else if(!$email){ 
                    $error_message .= "Enter a Email Address"; 
            } else if(!$password){ 
                $error_message .= "Enter a Password"; 
            }
     } else {
        ....}

非常感谢你。 射线

4 个答案:

答案 0 :(得分:2)

你必须在你的else语句中添加:

else {
   if(validateDOB($dob) <18)
   {
      $error_message .= "Not old enough<br />";
   }
}

答案 1 :(得分:2)

有一种更简单的方法:

function validateDOB($date)
{
    $minAge=strtotime("-18 YEAR");
    $entrantAge= strtotime($date);

    if ($entrantAge < $minAge)
    {
        return false;
    }

   return true;
}

然后:

if(validateDOB($date))
{ 
   echo "Welcome";
}
else
{
   echo "Sorry, you are too young";
}

编辑:要将您的日期从欧洲日期格式转换为MySQL格式,您可以这样做:

$ymd = DateTime::createFromFormat('d-m-Y', $dmy)->format('Y-m-d');

您可以在将其传递给函数之前执行此操作,或者您可以在函数内部执行此操作。由你决定。

答案 2 :(得分:0)

$date = '2010-11-05 18:55:21';
if (strtotime($date) !== false)
{
    ...
}

答案 3 :(得分:0)

Function仅在有效日期(也是闰年)时返回True,如果不符合您的应用程序的最低年龄要求,则会抛出FALSE。在最佳社交网络上找到我Fun n Enjoyhttp://www.myfne.com/ravinder

   function checkDOB($minage="-18 YEAR")
    {
        if(checkdate( $_POST["dob_month"] , $_POST["dob_day"] , $_POST["dob_year"])==TRUE){
            return true;
        }
        $date=$_POST["dob_month"]."-".$_POST["dob_day"]."-".$_POST["dob_year"];
        $minAge=strtotime($minage);
        $entrantAge= strtotime($date);

        if ($entrantAge > $minAge)
        {
            return true;
        }

       return false;
    }