У меня есть простая форма на моем веб-сайте, которая запрашивает идентификатор события, дату и сумму. Я хотел бы удостовериться, что любая дата, которую вводит пользователь, больше 10 дней в будущем. Я не хочу, чтобы мои клиенты делали платежи онлайн, если их мероприятие прошло менее 10 дней. Как только они вводят информацию, они направляются на безопасный веб-сайт, где они могут внести платеж, который был предоставлен моим банком.
Есть ли способ проверить дату отправки или через какой-то javascript, который использует свойство измененного объекта, которое предупредило бы пользователя о том, что дата недействительна?
Любая помощь будет потрясающей. Благодаря! Богатые
С HTML5 существует атрибут min
(и max
) для входов даты, который принимает форматы YYYY-MM-DD
качестве аргументов.
<input type="date" min="2017-09-01" name="my_date" />
Затем вы можете использовать PHP для создания дня, который составляет 10 дней в будущем, и установите эту дату через PHP.
<?php $date = new DateTime("+10 days"); ?> <input type="date" min="<?= $date->format("Ymd"); ?>" name="my_date" />
При этом это будет только клиентская сторона. Это не позволит пользователю выбирать любые дни между сегодняшним днем и последующими 10 днями в селекторе даты. Однако его можно обойти это – просто потому, что что-либо на стороне клиента можно манипулировать. Именно поэтому вы должны всегда выполнять проверку на стороне сервера, исходящую от клиента. Используя объекты DateTime, вы можете просто сравнить их напрямую, как показано ниже.
<?php $date_input = new DateTime($_POST['my_date']); $date_limit = new DateTime("+10 days"); if ($date_input > $date_limit) { // Valid date! It's not in the next 10 days }
DateTime
Проверяйте время UNIX + 10 дней в секундах.
$date = "2017-09-05"; If(strtotime($date) > time()+(60*60*24*10)){ Echo "ok"; }