gpt4 book ai didi

php - 检查是否超过 18 年,仅适用于 1960->1994

转载 作者:可可西里 更新时间:2023-11-01 01:02:24 24 4
gpt4 key购买 nike

我的表格有一些问题。 PHP 将检查年龄是否未满 18 岁,如果是,则此人会收到一条消息,提示他需要年满 18 岁。但是,该表单仅在此人出生于 1960 年至 1994 年之间时才有效。如果此人出生于 1950 年,他会收到一条消息说他未满 18 岁...

我的代码有什么问题?

if(empty($_POST["born"])) {$born_error = ('<span class="notutfyllt">*Fødselsår is not filled out</span><br/>');}
else {
$today = date_create('today');
$born = date_create("{$_POST['born']}");
$age = date_diff($today, $born)->y;

} if ($age >= 18) {
$born_error = "";
} else {
$born_error = ('<span class="notutfyllt">*You need to be 18 year</span><br/>');
}

来自表单:

<label for="born">Year of born:</label>
<input type="text" name="born" id="born" value="'.$born.'">

新版本:

if(empty($_POST["born"])) {$born_error = ('<span class="notutfyllt">*Fødselsår is not filled out</span><br/>');}
else {
$bday = new DateTime($_POST["born"]);
$today = new DateTime('Y');
$diff = $today->diff($bday);
if($diff->y>18) {
$born_error = "";
}else {
$born_error = ('<span class="notutfyllt">*You need to be 18 years</span><br/>');
}
}

最佳答案

来自 PHP manual 的注释:

The "Year (and just the year)" format only works if a time string has already been found -- otherwise this format is recognised as HH MM.

例子:

$born = date_create('1950');
var_dump($born);

产生:

object(DateTime)#1 (3) {
["date"]=>
string(19) "2013-12-05 19:50:00"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Berlin"
}

我猜1960及以上是无效时间,所以算作年。您将不得不询问完整的出生日期或在您的脚本中添加 "-01-01"(这会给某些人带来错误的结果)。

关于php - 检查是否超过 18 年,仅适用于 1960->1994,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20397795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com