строка времени от ввода пользователя - PullRequest
0 голосов
/ 25 февраля 2012

У меня есть страница регистрации, в которой есть 3 выпадающих списка для дня, месяца и года, которые настроены для дня в числовом формате - (1-31) месяц (01-12) и год (1993) и т. Д.

Теперь у меня проблемы с переводом на временную метку.

Пробовал:

$day = $_POST['day'];
$month = $_POST['month'];
$year = $_POST['year'];

$Dob = strtotime($month . " " . $day . " " . $year);

Но это не дает мне никакого выхода :(. Мне нужно, чтобы день-месяц-год был организован особым образом?

Ответы [ 4 ]

4 голосов
/ 25 февраля 2012

try

<?php
if (empty($_POST['month']) || empty($_POST['day']) || empty($_POST['year'])) {
  // handle invalid input, at least one of month, day, year wasn't given
} else if (!checkdate($_POST['month'], $_POST['day'], $_POST['year'])) {
  // handle invalid date, such as February 30th
} else {
  // convert to epoch (unix timestamp)
  $time = mktime(0, 0, 0, $_POST['month'], $_POST['day'], $_POST['year']);
}

Помимо этого, три <select> s для ввода даты очень 1998-ые.Почему бы не использовать <input type="date"> вместо этого?Это позволяет браузерам открывать окно выбора даты (которое можно заполнить).

1 голос
/ 25 февраля 2012

Две вещи:
1) Никогда не предполагайте, что данные защищены от ввода пользователя, даже если это выпадающий список.(Int) заставляет каждый элемент быть целым числом.Несмотря на то, что в этом случае это не так важно, для хранилища базы данных становится ОЧЕНЬ важно постоянно очищать ввод данных.

2) Вам просто нужны косые черты между ними.strtotime распознает Эти форматы

$Dob = strtotime((int)$month . "/" . (int)$day . "/" . (int)$year);
1 голос
/ 25 февраля 2012
$Dob = strtotime($day . "-" . $month . "-" . $year);

Примечание:

Даты в форматах m / d / y или d-m-y устраняются путем анализа разделителя между различными компонентами: если разделитель является косой чертой (/), то предполагается, что используется американский m / d / y; тогда как если разделителем является тире (-) или точка (.), то предполагается, что используется европейский формат d-m-y.

http://php.net/manual/en/function.strtotime.php

0 голосов
/ 25 февраля 2012

Он должен соответствовать одному из предопределенных типов формата даты, как указано на странице руководства. http://php.net/manual/en/function.strtotime.php

http://www.php.net/manual/en/datetime.formats.date.php

...