|
|
|
| Подскажите, как проверить введен ли правильно формат даты (Y-m-d)?
И как проверить дату (Y-m-d), введенную пользователем, чтобы избежать sql-инъекции?
Заранее спасибо. | |
|
|
|
|
|
|
|
для: kis-kis
(02.02.2009 в 20:32)
| | >Подскажите, как проверить введен ли правильно формат даты (Y-m-d)?
if(preg_match(...))
>И как проверить дату (Y-m-d), введенную пользователем, чтобы избежать sql-инъекции?
Далее этого не надо. | |
|
|
|
|
|
|
|
для: AcidTrash
(02.02.2009 в 21:10)
| | if(preg_match(...))
ну это как бы сказать... мало. | |
|
|
|
|
|
|
|
для: Trianon
(02.02.2009 в 21:15)
| | Мало в чем? В составлении паттерна? То уж даю тему подумать. | |
|
|
|
|
|
|
|
для: AcidTrash
(02.02.2009 в 21:22)
| | да нет.
Просто соответствие паттерну еще автоматически не означает, что строка представляет собой реальную дату (хотя бы в разумном диапазоне, я не про средневековье). | |
|
|
|
|
|
|
|
для: Trianon
(02.02.2009 в 21:26)
| | Ну это да.
Тогда для автора проще использовать select по каждому параметру даты. | |
|
|
|
|
|
|
|
для: AcidTrash
(02.02.2009 в 21:35)
| | > Тогда для автора проще использовать select по каждому параметру даты
Вы темой не ошиблись? | |
|
|
|
|
|
|
|
для: BinLaden
(02.02.2009 в 21:57)
| | <SELECT > <OPTION> имелось в виду.
Впрочем, проблему не решит. | |
|
|
|
|
|
|
|
для: Trianon
(02.02.2009 в 22:02)
| | > <SELECT > <OPTION> имелось в виду.
Да знаю я... | |
|
|
|
|
|
|
|
для: BinLaden
(02.02.2009 в 22:03)
| | тогда я не понял про тему. | |
|
|
|
|
|
|
|
для: Trianon
(02.02.2009 в 22:04)
| | Автор, кажется, не называл источника даты. Это всего лишь предположение, что она формируется в HTML-форме. И <select> никак не может претендовать на проверку корректности даты, поскольку это всё на стороне клиента.
Настолько странный совет от такого профессионала, как AcidTrash, что я подумал не ошибся ли человек темой. | |
|
|
|
|
|
|
|
для: BinLaden
(02.02.2009 в 22:08)
| | Автором как я понял имелась ввиду элементарная проверка и с 99% вероятности из HTML.
А не... | |
|
|
|
|
|
|
|
для: AcidTrash
(02.02.2009 в 22:17)
| | я почему-то тоже так подумал. | |
|
|
|
|
|
|
|
для: Trianon
(02.02.2009 в 21:26)
| | А за что Вы не любите средневековье?:) | |
|
|
|
|
|
|
|
для: Loki
(03.02.2009 в 00:06)
| | Я? Я просто не умею его готовить :)
Просто с 14 по 19 век, пока люди (точнее церкви) утрясали выравнивание линейной временной оси, опираться на строгие даты довольно тяжко. Как минимум нужно учитывать локацию события. | |
|
|
|
|
|
|
|
для: Trianon
(03.02.2009 в 00:17)
| | Ссылка имеет вид - /afisha/place/129/timetable/2009-02-06/
Дата генерируется автоматически и участвует в sql-запросе на выборку событий, но что мешает пользователю поменять ссылку? Я про это спрашивал, не думал что возникнет такая "жаркая" дисскусия... :) | |
|
|
|
|
|
|
|
для: kis-kis
(03.02.2009 в 15:50)
| | напрямую к скрипту обратиться, минуя ЧПУ, тоже ничто не мешает. | |
|
|
|
|
|
|
|
для: Trianon
(03.02.2009 в 16:08)
| | Остальные переменные проверяются, а вот как дату проверить не знаю, поэтому и спросил... | |
|
|
|
|
|
|
|
для: kis-kis
(03.02.2009 в 16:19)
| | если проблема в том, чтобы sql-инъекции избежать - работайте с датой точно также, как работаете со строкой с произвольным текстом. | |
|
|
|
|
|
|
|
для: Trianon
(03.02.2009 в 16:37)
| | т.е. Вы имеете ввиду проверять дату так?
if (!get_magic_quotes_gpc())
{
$data = mysql_escape_string($_GET['data']);
}
|
| |
|
|
|
|
|
|
|
для: kis-kis
(03.02.2009 в 16:57)
| | какой интересный способ :))
Еще раз.
Что Вы хотите определить в ходе проверки?
Попробуйте ответить на вопрос развернуто. | |
|
|
|
|
|
|
|
для: Trianon
(03.02.2009 в 17:02)
| | Соответствует ли формат даты, формату (Y-m-d) - (([0-9]{4})-([0-9]{2})-([0-9]{2})).
Хотя если ввести не цифры, то произойдет переадрессация на страничку 404, может быть этого достаточно? | |
|
|
|
|
|
|
|
для: kis-kis
(03.02.2009 в 17:08)
| | Ну так AcidTrash же Вам посоветовал! И шаблон Вам известен.
В чем проблема-то?
if(preg_match('/^(([0-9]{4})-([0-9]{2})-([0-9]{2}))$/', $date))
echo 'соответствует';
else
echo 'не соответствует';
|
| |
|
|
|
|
|
|
|
для: Trianon
(03.02.2009 в 17:13)
| | А как Вы считаете этого достаточно для обеспечения безопасности от инъекции? | |
|
|
|
|
|
|
|
для: kis-kis
(03.02.2009 в 17:15)
| | от инъекции через переменную $date?
Да. Этого достаточно.
Скажем так, если в ветви "не соответствует" не пытаться всё таки выполнять запрос. | |
|
|
|
|
|
|
|
для: Trianon
(03.02.2009 в 17:16)
| | Спасибо! | |
|
|
|