3

嗨,我正在创建一个约会表格,其中包括输入日期,我正在使用下拉框输入日期、月份和年份。我设法验证用户从今天开始输入 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();
}
4

2 回答 2

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 日)。

于 2013-05-23T10:11:53.427 回答
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 来帮助用户。见日期选择器

于 2013-05-23T10:18:44.830 回答