如何在php中使用正确的月日和闰年输入验证输入日期

如何在php中使用正确的月日和闰年输入验证输入日期,php,Php,嗨,我正在创建一个约会表单,其中包括输入日期,我正在使用下拉框输入日期、月份和年份。我设法验证用户从今天开始24小时输入,但如果用户输入了任何月份都不可用的内容,例如2013年6月31日、2013年9月31日,则表单将成功提交,但从帖子中获得的信息,将返回到前一个月,例如用户在2013年6月31日输入时,我得到的结果与其他月份相同,即2013年5月31日。正如你所看到的,这个月是不正确的 我现在拥有的是要验证的代码 $appointment_inputdate = mktime(0,0,0, i

嗨,我正在创建一个约会表单,其中包括输入日期,我正在使用下拉框输入日期、月份和年份。我设法验证用户从今天开始24小时输入,但如果用户输入了任何月份都不可用的内容,例如2013年6月31日、2013年9月31日,则表单将成功提交,但从帖子中获得的信息,将返回到前一个月,例如用户在2013年6月31日输入时,我得到的结果与其他月份相同,即2013年5月31日。正如你所看到的,这个月是不正确的

我现在拥有的是要验证的代码

$appointment_inputdate = mktime(0,0,0, intval($appointment_day), intval($appointment_month), intval($appointment_year));
$appointment_today = mktime(0,0,0, date("d"), date("m"), date("Y")); 
因为我现在只有这个,但日期不正确,我不知道怎么做

if ($appointment_inputdate <= $appointment_today) {
echo "
    <div style=\"background-color: #E00;\">
        Submission fail. Your appointment date must be at least 24 hours before. Please go back and change the date.
    </div>
    <input style=\"padding:10px 20px;margin-top:20px;\" type=button value=\"Back\" onClick=\"history.go(-1)\">
";
exit();
}
if($appointment\u inputdate您可以使用该功能。它检查公历中日期的有效性,并考虑闰年:

bool checkdate ( int $month , int $day , int $year )
例如:

<?php
var_dump(checkdate(12, 31, 2000));
var_dump(checkdate(2, 29, 2001));
?>

如果日期不正确,您可以轻松添加一些基本规则来尝试更正它(例如,如果年份不是闰年,则将2月29日替换为3月1日)。

正如Wookai所说,请先检查日期

此外,您还错误地获得了mktime输入的顺序

见:

mktime($hour、$minute、$second、$month、$day、$year

编辑:

要检查日期更新,请添加:

if (!checkdate ((int)$month,(int)$day,(int)$year)) {
echo "
    <div style=\"background-color: #E00;\">
        Not a valid date;
    </div>
    <input style=\"padding:10px 20px;margin-top:20px;\" type=button value=\"Back\" onClick=\"history.go(-1)\">
";
exit();
}
if(!checkdate((int)$month,(int)$day,(int)$year)){
回声“
不是有效日期;
";
退出();
}

您可以尝试在提交表单上使用jquery来帮助用户。请看

haha,我打算编写一个自定义的checkdate函数,+1如何将其实现到规则中,实际上我对php非常陌生。很有趣。我会更改它,但仍然无法解决问题,我已经四处搜索,仍然找不到任何线索
if (!checkdate ((int)$month,(int)$day,(int)$year)) {
echo "
    <div style=\"background-color: #E00;\">
        Not a valid date;
    </div>
    <input style=\"padding:10px 20px;margin-top:20px;\" type=button value=\"Back\" onClick=\"history.go(-1)\">
";
exit();
}