您好我正在创建一个约会表格,其中包含输入日期,即我正在使用日期,月份和年份的下拉框。我设法验证用户从今天开始24小时输入,但是如果用户输入了任何月份不可用的内容,例如。 2013年6月31日,2013年9月31日,表格已成功提交,但是,我从帖子中得到的是,它会发送到前一个月,例如用户密钥在31 / 06 / 2013 ,结果我得到31 / 05 / 2013,和其他人一样。你可以看到月份不正确。
我现在拥有的是要验证的代码;
$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();
}
答案 0 :(得分:2)
您可以使用checkdate
功能。它检查格里高利历中日期的有效性,并考虑闰年:
bool checkdate ( int $month , int $day , int $year )
例如:
<?php
var_dump(checkdate(12, 31, 2000));
var_dump(checkdate(2, 29, 2001));
?>
输出
bool(true)
bool(false)
如果日期不正确,您可以轻松添加一些基本规则来尝试并更正它(例如,如果年份不是闰年,则将2月29日替换为3月1日。)
答案 1 :(得分:1)
正如Wookai所说,首先检查日期。
此外,您的mktime输入顺序错误。
请参阅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();
}
您可以尝试在提交表单上使用jquery来帮助用户。见datepicker