Intereting Posts
RewriteRule, создающий 500 внутренних ошибок сервера Запросить WMI удаленно с помощью PHP OpenSSL HMAC-SHA1 дайджест не соответствует Crypto's Как обрабатывать исключение Swift_TransportException в Silex doctrine2 queryBuilder должен возвращать только соответствие результата с значениями массива (ids): 0 / Null и / или один и / или многие id (ы) должны возвращать один результат дублирование вставки данных в CodeIgniter Как получить результат сложного шаблона Википедии? PHP foreach loop для заполнения выпадающего списка со значениями из массива массивов как создать веб-службу php, которая принимает строку и выполняет операции с базой данных Расширение валидатора Laravel несколько раз Удалить пустые элементы массива Сгенерировать все возможные комбинации с помощью набора строк kohana 3.2 ORM find_all () с отношениями как установить id элемента с помощью PHP dom? Неопределенная константа класса 'MYSQL_ATTR_INIT_COMMAND' с pdo

Исправление ошибок и ошибок PHP DateTime

Как я могу предотвратить сбой PHP при создании объекта DateTime?

$in = new DateTime($in); $out = new DateTime($out); 

$in и $out исходят из формы, чтобы они могли быть чем угодно. Я принуждаю пользователя использовать календарь и блокировать его с датами с помощью javascript. Что делать, если пользователь может обойти эту проверку?

Если $in = "anything else other than a date" PHP сработает и заблокирует рендеринг всей страницы.

Как предотвратить это и просто return(0) если PHP не может проанализировать дату?

Посмотрите документацию по DateTime() , вот небольшой фрагмент:

 <?php try { $date = new DateTime('2000-01-01'); } catch (Exception $e) { echo $e->getMessage(); exit(1); } echo $date->format('Ym-d'); ?> 

PHP Manual DateTime :: __ construct ()

strtotime() вернет false, если формат плохой, поэтому это должно ломать плохие форматы.

 if (strtotime($in) === false) { // bad format } 

Как насчет обработки исключений?

 try { $in = new DateTime($in); } catch (Exception $e) { echo $e->getMessage(); return(0); } 

Конструктор DateTime генерирует исключение, если строка даты / времени не может быть проанализирована. Вы можете поймать его. Посмотрите следующий фрагмент:

 try { $dt = new DateTime('10th - 12th June 2013'); // bad date string } catch (Exception $e) { var_dump($e->getMessage()); }