• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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 () ?
 
S

strander

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';
}
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!