![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Семён Розовых |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 22.11.2002 Репутация: нет Всего: нет |
Рассматривая многие исходники , я часто обнаруживаю вот такую строчку
$val=~ s/%[0-9a-hA-H] {2}/pack('C',hex($1))/ge; Я так понимаю - это символы, которые перекодируются в шестнадцатиричную систему. Но зачем? И почему только до h и H, а не весь алфавит? |
|||
|
||||
NightGoblin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1021 Регистрация: 24.11.2002 Где: 127.0.0.1 Репутация: нет Всего: 11 |
Это обработка CGI-запросов в формате application/x-www-urlencoded, в которой все символы, не входящие в \w (без локализации) преобразуются в коды вида %<код_символа> - например, %21 перекодируется в "!".
Странно только, почему A-Ha-h, а не A-Fa-f... -------------------- Kernel panic: /dev/null overflow! GCS/IT/MU/O d-@ s: a- C++$>++++$ ULSB(+++) P+++ L+++>++++ !E W++(-) N o? K w-- O? M>+ V? PS+ PE Y+ PGP+>+++ t- 5 X+ R- !tv b+ DI+ D+ G e++ h--- r++ y? B4F1 54B6 8738 26CD 5125 0581 B923 9273 FE59 1981 |
|||
|
||||
Семён Розовых |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 22.11.2002 Репутация: нет Всего: нет |
Таким макаром кодируются данные из формы. НО зачем? Что их так что ль просто нельзя обработать?
|
|||
|
||||
NightGoblin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1021 Регистрация: 24.11.2002 Где: 127.0.0.1 Репутация: нет Всего: 11 |
Дело в том, что когда данные посылаются из формы, имена параметров и их значения, например, разделяются символом "=", а пары "параметр=значение" - символом "&". И если такие символы встретятся в значении параметра, то получится непонятная ситуация, при которой этот символ надо во что-нибудь преобразовать. Ну и, чтобы не было путаницы с кириллицей (в рунете т.е.) или другими спецсимволами (вообще), их так кодируют.
А строчка эта не кодирует, а разбирает закодированное значение параметра (если, конечно, val - это value ![]() -------------------- Kernel panic: /dev/null overflow! GCS/IT/MU/O d-@ s: a- C++$>++++$ ULSB(+++) P+++ L+++>++++ !E W++(-) N o? K w-- O? M>+ V? PS+ PE Y+ PGP+>+++ t- 5 X+ R- !tv b+ DI+ D+ G e++ h--- r++ y? B4F1 54B6 8738 26CD 5125 0581 B923 9273 FE59 1981 |
|||
|
||||
HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: нет Всего: 42 |
На самом деле со всем этим добром сейчас разбираться не к чему. Есть такой хороший и удобный модуль CGI.pm, который сам разбирает запрос и перекодирует его.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |