3

こんにちは、日、月、年のドロップダウンボックスを使用している入力日付を含む予約フォームを作成しています。今日の日付から24時間以内にユーザーが入力することを確認できましたが、ユーザーが何か月に利用できないものを入力した場合. 2013 年 6 月 31 日、2013 年 9 月31 日、フォームは正常に送信されましたが、投稿から取得したものは、ユーザー キーが2013 年 6 月 31 日、結果が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 ($時、$分、$秒、$月、$日、$年)。

編集:

日付の更新を確認するには、次を追加します。

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 に答える