![]() |
Модераторы: ginnie |
![]() ![]() ![]() |
|
Vetlblya |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 3.6.2009 Репутация: нет Всего: нет |
Передаю в код строку "dfgdfg!#dfg$%jh^y&*yy()y" в условии работает ложь. В другой раз передаю строку "jhtgdjgh76756" и срабатывает опять ложь. Как произвести проверку наличия символов "][<>\|&;`'\"*\$\?~\^(){}\n\r" в строке, чтобы срабатывала истина, когда они присутствуют???????
my $query = $ENV{QUERY_STRING}; my $metasymbols = "][<>\|&;`'\"*\$\?~\^(){}\n\r"; print "Content-Type:text/html\n\n"; if ($query =~ s/[$metasymbols\\]//g) { print "<h2>1</h2><br>"; print $query; } else { print "<h2>2</h2><br>"; print $query; } |
|||
|
||||
JAPH |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 8.1.2007 Где: Ленобласть Репутация: нет Всего: 23 |
Странное экранирование. Экранировать нужно для регулярки квадратные скобки и слэш; для строки в двойных кавычках $, чтобы не подставлять $?. Хотя вроде без экранирования ][ тоже работает - DWIM
![]()
-------------------- Что непонятно - спрашиваем ![]() |
|||
|
||||
Vetlblya |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 3.6.2009 Репутация: нет Всего: нет |
попробовал с экранированием всерно на ложь вылетает обоих случаях. пробовал W, не помогает. |
||||
|
|||||
JAPH |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 8.1.2007 Где: Ленобласть Репутация: нет Всего: 23 |
Как определяем, что вылетает? Кэш браузера ни при чем? Не может быть проблема в другом участке кода? Поставьте warn для отладочных выводов в лог.
P.S. Зачем цитировать пост целиком.. -------------------- Что непонятно - спрашиваем ![]() |
|||
|
||||
Vetlblya |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 3.6.2009 Репутация: нет Всего: нет |
не так выразился... вылетает - в условии переходит всегда в ложь, при передаче любой строки, с символами "корявыми" или без них. в другом не может. что такое warn и куда его поставить? p.s. увлекся |
|||
|
||||
JAPH |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 8.1.2007 Где: Ленобласть Репутация: нет Всего: 23 |
еще вот это не расшифровал) warn - списковый оператор, выводящий предупреждение в STDERR, что в веб-программировании обычно направляется в лог ошибок.
Это сообщение отредактировал(а) JAPH - 8.2.2010, 13:15 -------------------- Что непонятно - спрашиваем ![]() |
||||
|
|||||
Vetlblya |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 3.6.2009 Репутация: нет Всего: нет |
я дико извиняюсь за свою тупость и невежество!!! а где хранится этот лог??? |
|||
|
||||
JAPH |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 8.1.2007 Где: Ленобласть Репутация: нет Всего: 23 |
Это хороший вопрос =)
А где вы тестируете скрипт? Попробуйте поискать файл error.log в: корневой папке сайта, в папке веб-сервера, просто поиском по файлам =) -------------------- Что непонятно - спрашиваем ![]() |
|||
|
||||
Vetlblya |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 3.6.2009 Репутация: нет Всего: нет |
две последние строчки из этого файла:
[Mon Feb 08 13:23:48 2010] [error] [client 127.0.0.1] $query: q=jhtgdjgh76756, referer: http://127.0.0.1/menu.html [Mon Feb 08 13:23:50 2010] [error] [client 127.0.0.1] $query: q=dfgdfg!, referer: http://127.0.0.1/menu.html чего они значат? |
|||
|
||||
JAPH |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 8.1.2007 Где: Ленобласть Репутация: нет Всего: 23 |
Сравнивая с
-------------------- Что непонятно - спрашиваем ![]() |
||||
|
|||||
Vetlblya |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 3.6.2009 Репутация: нет Всего: нет |
warn "True\n"; warn "False\n"; поставил сразу после условия.
вот что выдал error.log [Mon Feb 08 13:45:34 2010] [error] [client 127.0.0.1] $query: q=jhtgdjgh76756, referer: http://127.0.0.1/menu.html [Mon Feb 08 13:45:34 2010] [error] [client 127.0.0.1] True, referer: http://127.0.0.1/menu.html [Mon Feb 08 13:45:34 2010] [error] [client 127.0.0.1] False, referer: http://127.0.0.1/menu.html |
|||
|
||||
JAPH |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 8.1.2007 Где: Ленобласть Репутация: нет Всего: 23 |
Нет уж, надо именно в условии, чтобы различить, warn из которой ветки выдался =)
Кстати, подумалось вот о чем: не могут ли искомые символы быть url-encoded, предстать в форме %22, например?
-------------------- Что непонятно - спрашиваем ![]() |
|||
|
||||
Vetlblya |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 3.6.2009 Репутация: нет Всего: нет |
поставил warn "True\n"; warn "False\n"; внутри веток условия. лог выглядит так:
[Mon Feb 08 13:48:44 2010] [error] [client 127.0.0.1] $query: q=dfgdfg!, referer: http://127.0.0.1/menu.html [Mon Feb 08 13:48:44 2010] [error] [client 127.0.0.1] False, referer: http://127.0.0.1/menu.html [Mon Feb 08 13:48:45 2010] [error] [client 127.0.0.1] $query: q=jhtgdjgh76756, referer: http://127.0.0.1/menu.html [Mon Feb 08 13:48:45 2010] [error] [client 127.0.0.1] False, referer: http://127.0.0.1/menu.html Добавлено через 1 минуту и 48 секунд
если они url-encoded то что с ними делать? |
|||
|
||||
JAPH |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 8.1.2007 Где: Ленобласть Репутация: нет Всего: 23 |
А вы вводили строки, которые содержат искомые символы? Попробуйте.
Если url-encoded.. то декодировать =)
Можно переложить эту заботу на CGI, который умеет самостоятельно выковыривать все пришедшие параметры, разбираться с url-encoded и т.п. вещами. Это сообщение отредактировал(а) JAPH - 8.2.2010, 14:08 -------------------- Что непонятно - спрашиваем ![]() |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |