Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php生日验证函数_Php - Fatal编程技术网

php生日验证函数

php生日验证函数,php,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("-"

我试图在我的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;
} }
函数validateDOB($dob){
列表($ydob,$mdob,$ddob)=爆炸(“-”,$dob);
$year_diff=日期(“Y”)-$ydob;
$month_diff=日期(“m”)-$mdob;
$day_diff=日期(“d”)-$ddob;
如果($day_diff<0 |$$month_diff<0){
$year_diff--;
返回$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 {
        ....}
if(!$username)|(!$country)|(!$dob)|(!$email)|(!$password)){
$error_message=“您没有提交以下所需信息!

”; 如果(!$username){ $error_message.=“输入用户名”; }否则如果(!$country){ $error_message.=“输入国家/地区”; }如果(!$dob){ $error_message.=“输入D.O.B”; }如果(!$email){ $error_message.=“输入电子邮件地址”; }如果(!$password){ $error_message.=“输入密码”; } }否则{ ....}
非常感谢你。
Ray

您必须在else语句中添加以下内容:

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

如果(validateDOB($dob)您必须在else语句中添加:

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

如果(validateDOB($dob)有一种更简单的方法:

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

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

   return true;
}
编辑:要将日期从欧洲日期格式转换为MySQL格式,可以执行以下操作:

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

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

有一种更简单的方法:

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

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

   return true;
}
$date = '2010-11-05 18:55:21';
if (strtotime($date) !== false)
{
    ...
}
编辑:要将日期从欧洲日期格式转换为MySQL格式,可以执行以下操作:

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

您可以在将其传递给函数之前执行此操作,也可以在函数内部执行此操作。具体取决于您。

函数
仅在有效日期(也是闰年)时返回
True
如果不符合申请的最低年龄要求,也会抛出
FALSE
。在Best Social Network上找到我()

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

函数
仅当它是有效日期(也是闰年)时才返回
True
,如果它不符合应用程序的最低年龄要求,也会抛出
FALSE
。请在最佳社交网络上找到我()


谢谢,我将对此进行研究。我的问题是如何从函数中调用变量或从函数中调用结果,以便在else if语句中使用。2注意:1)如果再次分解,为什么要将串联字符串传递给ValidateDB?为什么不传递这三个部分?2)用户Ray Hmar:或者只创建两个像yyyymmdd这样的数字,然后减去它们,例如
20111110-19760331=350783
。嘿,我35;-)但这并不是这里的问题……谢谢,我会研究这个问题。我的问题是如何从函数中调用变量或从函数中调用结果,以便在else if语句中使用。注:1)如果再次分解,为什么要将一个连接的字符串传递给validateDOB?为什么不传递这三个部分?2)用户Ray Hmar:或者只创建两个像yyyymmdd这样的数字,然后减去它们,例如
20111110-19760331=350783
。嘿,我35;-)但这并不是问题所在……谢谢,看起来更简单。数据库中的日期格式看起来更简单像这样的“19-4-2003”如果$entrantAge大于$minAge,这个函数实际上应该返回false,因为你是在比较unix时间戳,而不是实际年龄。更大的unix时间戳=更年轻。我只是想把这个放在这里,以防有人搜索它。谢谢数据库中的日期格式如下所示“19-4-2003”如果$entrantAge大于$minAge,这个函数实际上应该返回false,因为你是在比较unix时间戳,而不是实际年龄。更大的unix时间戳=更年轻。我只是想把这个放在这里,以防有人搜索它。