Как сделать даты законными / безопасными перед передачей их в strtotime ()? - PullRequest
3 голосов
/ 16 января 2012

Вот что у меня сейчас.

$date = mysqli_real_escape_string($dbc, trim(date('Y-m-d',strtotime($_POST['date']))));

Мне сказали, что я должен убедиться, что $date является безопасным / законным, прежде чем передать его на strtotime(). Как я могу это сделать? Я посмотрел вверх http://us3.php.net/strtotime, но это действительно не говорит мне, что я ищу, я думаю.

Может кто-нибудь объяснить мне немного подробнее, как убрать отправку в strtotime?

Ответы [ 2 ]

5 голосов
/ 16 января 2012

Нет никакой реальной причины предварительно очищать значение. Худшее, что может случиться, это то, что время не является действительным, и strtotime() возвращает ложь (что также можно использовать для проверки правильности строки даты).

Кроме того, нет причин обрезать и экранировать возвращаемое значение функции date( 'Y-m-d' ): она никогда не будет возвращать значения с конечным пробелом или чем-либо, что должно быть экранировано.

3 голосов
/ 16 января 2012

Это намного больше, чем нужно делать.Функция strtotime () должна выполнить всю «проверку», в которой вы нуждаетесь - либо вернет правильную дату, либо нет.После этого вам не нужно обрезать или экранировать вывод из date () - выход определяется вами.Вот что я бы сделал:

$date = strtotime($_POST['date']);
if($date) {
    $date = date('Y-m-d', $date);
    //do stuff based on valid date
}
else {
    //handle invalid date. 
}
...