php メールフォーム日付チェック方法
現在メールフォームで生年月日を記述しており、生年月日の値を確認画面に渡し、確認画面にて日付チェックをして、日付が間違っていたらフォーム画面に戻るということをやりたいのですが、日付チェックの部分で困っています。
例→2月20日は○
→2月30日は×
form.php
<?php
//年の入力
print '<select name="year">' . "\n";
$start = date('Y') -29;
$end = date('Y') -16;
for ($i = $start; $i <= $end; $i++) {
print '<option value="' . sprintf("%04d",$i) . '">' . sprintf("%04d",$i) . '</option>' . "\n";
}
print '</select>年' . "\n";
//月の入力
print '<select name="month">' . "\n";
for ($i = 01; $i <= 12; $i++) {
print '<option value="' . sprintf("%02d",$i) . '">' . sprintf("%02d",$i) . '</option>' . "\n";
}
print '</select>月' . "\n";
//日の入力
print '<select name="day">' . "\n";
for ($i = 01; $i <= 31; $i++) {
print '<option value="' . sprintf("%02d",$i) . '">' . sprintf("%02d",$i) . '</option>' . "\n";
}
print '</select>日' . "\n";
?>
confirm.php
//生年月日をチェック
if (checkdate($month, $day, $year)) {
$error[] = '生年月日が正しくありません。';
}
という記述です。
この記述方法ですと、
2月20日は「生年月日が正しくありません。」とでてきますが、
2月31日を指定すると確認画面を通過できるという謎の状態になっています。
できれば閏年の計算もできる方法もお願いします。
どうかご教授お願いします。
補足
ありがとうございます! VBでいうIsDate関数のようなものはないのでしょうか? 自分で閏年計算もしないとだめなんですかね?