• ⚡️ Последний шанс: Вебинар по пентесту стартует через 30 минут!

    Друзья, ровно через 30 минут (8 июля в 19:00) начинается наш практический вебинар по пентесту и поиску уязвимостей!

    Если вы хотите:
    🕵️‍♀️ Узнать, как находить и эксплуатировать уязвимости в веб-приложениях.
    💡 Получить ценные инсайты от настоящего эксперта.
    🚀 Сделать решительный шаг в мир кибербезопасности.
    То этот вебинар для вас!

    Ведущий вебинара – Александр Медведев – эксперт с более чем 10-летним опытом в сфере информационной безопасности, пятикратный победитель Standoff и обладатель престижных сертификаций: OSWE, OSCP, PNPT, CEH, CWAPT.

    Успейте присоединиться! Зарегистрироваться сейчас

    Возникли сложности с регистрацией? Пишите нам: @Codeby_Academy
    Будем вас ждать!

PHP и.... дата...

  • Автор темы Автор темы Guest
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

вводит пользователь дату...

3и поля = 1е день, 2е месяц, 3е год...

проверяем их сначала все 3и на пустоту а затем проверяем:
год чтоб был ОТ 1900 ДО текущего + 5
месяц ОТ 1 ДО 12
и день... ОТ 1 ДО (в зависимости от введённого месяца и года, например 2 месяц, 2003 года - только 28 дней)

я попробывал заюзать функцию mktime

Код:
function CDD ($d, $m, $y) 
{ 
if ($m == date ('m', mktime (0, 0, 0, $m, $d, $y))) return 'day - ok'; else return 'day - wrong'; 
}


со свежими годами вроде прокатило... типа к примеру с 2004 годом 30 днём и 2 месяцем мктайм выдало 1 число и 3 месяц... месяца не совпали значит день типа не правильный...
вот... но на винде матерится меньше 1 1 1970... а на линуксе как то странно оно возвращает дату......

есть способ более получче ? чтоб диапазон года и на винде и на линухе был от 1900 ?

или самому писать вычислялку высокосного и дней месяцев типа 30 или 31 ?

может как нидь извращнуться с localtime () ?
 
function CDD ($d, $m, $y)
{
$lmd[1] = $lmd[3] = $lmd[5] = $lmd[7] = $lmd[8] = $lmd[10] = $lmd[12] = 31;
$lmd[4] = $lmd[6] = $lmd[9] = $lmd[11] = 30;
$lmd[2] = 28; if ($y % 4 == 0) $lmd[2] = 29;

if ($d < 1 || $d > $lmd[$m]) return 'bok'; else return 'ok';
}
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab