PHP检查用户输入日期

Nic*_*ick 1 php validation date

因此,用户可以通过键入或使用日期选择器输入出生日期.这可能会出错,所以在服务器端我想检查它是否是一个有效的日期.

我在strtotime()上阅读了很多,看了很多例子,但不是100%正确的例子.

这就是我所拥有的:

$geboortedatum = $_POST['geboortedatum'];
$geboortedatum = date("Y-m-d", strtotime($geboortedatum));
list($y, $m, $d) = explode("-", $geboortedatum);

// var_dump(checkdate($d,$m,$y));
if(checkdate($d, $m, $y)) {
    echo "OK Date";
}
else {
    echo "BAD Date";
    exit();
}
Run Code Online (Sandbox Code Playgroud)

这大部分时间都有效.有没有可靠的方法来检查输入是否是真实且正确的日期?

//编辑

那不是一个好例子!当用户输入31-31-1980时,它也不起作用.这也是有效的,虽然不应该!

Joh*_*nde 8

您可以使用的组合strtotime(),并checkdate()看到如果日期是有效的:

function isRealDate($date) { 
    if (false === strtotime($date)) { 
        return false;
    } 
    list($year, $month, $day) = explode('-', $date); 
    return checkdate($month, $day, $year);
}
Run Code Online (Sandbox Code Playgroud)

用法

if (isRealDate($geboortedatum)) {
    // date is ok
}
else {
    // date is not ok
}
Run Code Online (Sandbox Code Playgroud)