首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用getdate()来验证用户的年龄?

如何使用getdate()来验证用户的年龄?
EN

Stack Overflow用户
提问于 2016-03-24 06:17:25
回答 2查看 86关注 0票数 0

当用户尝试在我的网站注册时,我需要验证他们是否足够老。我正在尝试使用getdate()函数来完成此操作。

我知道getdate()是做什么的,但我正在努力理解如何正确地使用它来达到这个目的。

代码语言:javascript
复制
<?php
$fn = $_POST["fullname"];
$un = $_POST["username"];
$pw = $_POST["password"];
$dob = $_POST["dayofbirth"];
$mob = $_POST["monthofbirth"];
$yob = $_POST["yearofbirth"];

$date = getdate();

if ( $yob =$yob>= $date["year"]-16)
{
    echo "Too young to register!";
}
elseif ($yob <=1899)
{
    echo "Don't be silly, you are not that old!";
}
else 
{
    echo "<h1>Thank you for registering with us!</h1>";
    echo "<p> You have successfully registered with these details:
          <br>Your full name :$fn<br> Username: $un 
          <br>Date of birth: $dob $mob $yob</p>";
}
?>
EN

回答 2

Stack Overflow用户

发布于 2016-03-24 06:25:35

尝试:

代码语言:javascript
复制
$registration = new DateTime(implode('-', array($yob, $mob, $dob)));
$now = new DateTime();

var_dump($now->diff($registration)->y);

这将为您提供实际年龄,并将月、日和闰年考虑在内。

DateTime Class Manual

票数 3
EN

Stack Overflow用户

发布于 2016-03-24 06:37:38

如果您将此if ( $yob =$yob>= $date["year"]-16)更正为if ( $yob >= $date["year"]-16),那么它将执行您所期望的操作,并且在某些情况下会起作用。问题是,根据某人的生日与当前日期相比是在哪一年,像这样减去年份通常会得到不正确的结果。

更好的方法是使用DateTime::diff方法计算年龄。这应该能让你知道这个人的确切年龄。

代码语言:javascript
复制
$age = date_create("$yob-$mob-$dob")->diff(new DateTime());

然后,您可以比较生成的DateInterval对象的year属性以验证年龄。

代码语言:javascript
复制
if ( $age->y < 16) {
    echo "Too young to register!";
} elseif ($age->y > 117) {
    echo "Don't be silly, you are not that old!";
} else { ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36189759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档