Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка даты
 
 автор: kis-kis   (02.02.2009 в 20:32)   письмо автору
 
 

Подскажите, как проверить введен ли правильно формат даты (Y-m-d)?

И как проверить дату (Y-m-d), введенную пользователем, чтобы избежать sql-инъекции?

Заранее спасибо.

  Ответить  
 
 автор: AcidTrash   (02.02.2009 в 21:10)   письмо автору
 
   для: kis-kis   (02.02.2009 в 20:32)
 

>Подскажите, как проверить введен ли правильно формат даты (Y-m-d)?
if(preg_match(...))
>И как проверить дату (Y-m-d), введенную пользователем, чтобы избежать sql-инъекции?
Далее этого не надо.

  Ответить  
 
 автор: Trianon   (02.02.2009 в 21:15)   письмо автору
 
   для: AcidTrash   (02.02.2009 в 21:10)
 

if(preg_match(...))
ну это как бы сказать... мало.

  Ответить  
 
 автор: AcidTrash   (02.02.2009 в 21:22)   письмо автору
 
   для: Trianon   (02.02.2009 в 21:15)
 

Мало в чем? В составлении паттерна? То уж даю тему подумать.

  Ответить  
 
 автор: Trianon   (02.02.2009 в 21:26)   письмо автору
 
   для: AcidTrash   (02.02.2009 в 21:22)
 

да нет.
Просто соответствие паттерну еще автоматически не означает, что строка представляет собой реальную дату (хотя бы в разумном диапазоне, я не про средневековье).

  Ответить  
 
 автор: AcidTrash   (02.02.2009 в 21:35)   письмо автору
 
   для: Trianon   (02.02.2009 в 21:26)
 

Ну это да.
Тогда для автора проще использовать select по каждому параметру даты.

  Ответить  
 
 автор: BinLaden   (02.02.2009 в 21:57)   письмо автору
 
   для: AcidTrash   (02.02.2009 в 21:35)
 

> Тогда для автора проще использовать select по каждому параметру даты

Вы темой не ошиблись?

  Ответить  
 
 автор: Trianon   (02.02.2009 в 22:02)   письмо автору
 
   для: BinLaden   (02.02.2009 в 21:57)
 

<SELECT > <OPTION> имелось в виду.
Впрочем, проблему не решит.

  Ответить  
 
 автор: BinLaden   (02.02.2009 в 22:03)   письмо автору
 
   для: Trianon   (02.02.2009 в 22:02)
 

> <SELECT > <OPTION> имелось в виду.
Да знаю я...

  Ответить  
 
 автор: Trianon   (02.02.2009 в 22:04)   письмо автору
 
   для: BinLaden   (02.02.2009 в 22:03)
 

тогда я не понял про тему.

  Ответить  
 
 автор: BinLaden   (02.02.2009 в 22:08)   письмо автору
 
   для: Trianon   (02.02.2009 в 22:04)
 

Автор, кажется, не называл источника даты. Это всего лишь предположение, что она формируется в HTML-форме. И <select> никак не может претендовать на проверку корректности даты, поскольку это всё на стороне клиента.
Настолько странный совет от такого профессионала, как AcidTrash, что я подумал не ошибся ли человек темой.

  Ответить  
 
 автор: AcidTrash   (02.02.2009 в 22:17)   письмо автору
 
   для: BinLaden   (02.02.2009 в 22:08)
 

Автором как я понял имелась ввиду элементарная проверка и с 99% вероятности из HTML.
А не...

  Ответить  
 
 автор: Trianon   (02.02.2009 в 22:33)   письмо автору
 
   для: AcidTrash   (02.02.2009 в 22:17)
 

я почему-то тоже так подумал.

  Ответить  
 
 автор: Loki   (03.02.2009 в 00:06)   письмо автору
 
   для: Trianon   (02.02.2009 в 21:26)
 

А за что Вы не любите средневековье?:)

  Ответить  
 
 автор: Trianon   (03.02.2009 в 00:17)   письмо автору
 
   для: Loki   (03.02.2009 в 00:06)
 

Я? Я просто не умею его готовить :)

Просто с 14 по 19 век, пока люди (точнее церкви) утрясали выравнивание линейной временной оси, опираться на строгие даты довольно тяжко. Как минимум нужно учитывать локацию события.

  Ответить  
 
 автор: kis-kis   (03.02.2009 в 15:50)   письмо автору
 
   для: Trianon   (03.02.2009 в 00:17)
 

Ссылка имеет вид - /afisha/place/129/timetable/2009-02-06/

Дата генерируется автоматически и участвует в sql-запросе на выборку событий, но что мешает пользователю поменять ссылку? Я про это спрашивал, не думал что возникнет такая "жаркая" дисскусия... :)

  Ответить  
 
 автор: Trianon   (03.02.2009 в 16:08)   письмо автору
 
   для: kis-kis   (03.02.2009 в 15:50)
 

напрямую к скрипту обратиться, минуя ЧПУ, тоже ничто не мешает.

  Ответить  
 
 автор: kis-kis   (03.02.2009 в 16:19)   письмо автору
 
   для: Trianon   (03.02.2009 в 16:08)
 

Остальные переменные проверяются, а вот как дату проверить не знаю, поэтому и спросил...

  Ответить  
 
 автор: Trianon   (03.02.2009 в 16:37)   письмо автору
 
   для: kis-kis   (03.02.2009 в 16:19)
 

если проблема в том, чтобы sql-инъекции избежать - работайте с датой точно также, как работаете со строкой с произвольным текстом.

  Ответить  
 
 автор: kis-kis   (03.02.2009 в 16:57)   письмо автору
 
   для: Trianon   (03.02.2009 в 16:37)
 

т.е. Вы имеете ввиду проверять дату так?


if (!get_magic_quotes_gpc()) 

$data = mysql_escape_string($_GET['data']);

  Ответить  
 
 автор: Trianon   (03.02.2009 в 17:02)   письмо автору
 
   для: kis-kis   (03.02.2009 в 16:57)
 

какой интересный способ :))

Еще раз.
Что Вы хотите определить в ходе проверки?
Попробуйте ответить на вопрос развернуто.

  Ответить  
 
 автор: kis-kis   (03.02.2009 в 17:08)   письмо автору
 
   для: Trianon   (03.02.2009 в 17:02)
 

Соответствует ли формат даты, формату (Y-m-d) - (([0-9]{4})-([0-9]{2})-([0-9]{2})).
Хотя если ввести не цифры, то произойдет переадрессация на страничку 404, может быть этого достаточно?

  Ответить  
 
 автор: Trianon   (03.02.2009 в 17:13)   письмо автору
 
   для: kis-kis   (03.02.2009 в 17:08)
 

Ну так AcidTrash же Вам посоветовал! И шаблон Вам известен.
В чем проблема-то?

if(preg_match('/^(([0-9]{4})-([0-9]{2})-([0-9]{2}))$/', $date))
 echo 'соответствует';
else 
 echo 'не соответствует';

  Ответить  
 
 автор: kis-kis   (03.02.2009 в 17:15)   письмо автору
 
   для: Trianon   (03.02.2009 в 17:13)
 

А как Вы считаете этого достаточно для обеспечения безопасности от инъекции?

  Ответить  
 
 автор: Trianon   (03.02.2009 в 17:16)   письмо автору
 
   для: kis-kis   (03.02.2009 в 17:15)
 

от инъекции через переменную $date?
Да. Этого достаточно.
Скажем так, если в ветви "не соответствует" не пытаться всё таки выполнять запрос.

  Ответить  
 
 автор: kis-kis   (03.02.2009 в 17:21)   письмо автору
 
   для: Trianon   (03.02.2009 в 17:16)
 

Спасибо!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования