Forum Webscript.Ru

Программирование => Perl => Тема начата: Unregistered от 31 Августа 2002, 06:11:37

Название: Вопрос по кодированию url-запроса...
Отправлено: Unregistered от 31 Августа 2002, 06:11:37
Вопрос такой:
Мы передаем скрипту запрос, скрипт его получает и декодирует:

$var = $query->param(\'var\');

После некотых изменений переменной нам надо сделать ссылку:
print "/cgi-bin/script.cgi?var=$var";

для этого надо ее надо обратно закодировать. Это можно сделать с помощью модуля CGI? Если да, то как?
Название: Вопрос по кодированию url-запроса...
Отправлено: Serchey от 31 Августа 2002, 10:45:32
С помощю CGI - не знаю, но руцями мона тоже. Я не понимаю людей, которые используют такие здоровые на подъем модули, как CGI. Может кто-то обяснит, зачем загружать такое чудо, если надо всего несколько функций, и то, легко исполняемые вручную?
Название: Вопрос по кодированию url-запроса...
Отправлено: Chs от 01 Сентября 2002, 00:33:04
Цитировать
Я не понимаю людей, которые используют такие здоровые на подъем модули, как CGI.  Может кто-то обяснит, зачем загружать такое чудо, если надо всего несколько функций, и то, легко исполняемые вручную?

Если нужны несколько функций, то нужно и подружать лишь нужные функции.
use CGI qw(param); - например.
А по поводу "зачем" уже неожнократно говорил. что мхобретение велосипеда не преследуется по закону.
Плюс обычно те, кто не использует модуль CGI идут по следующему пути: разбор параметров формы, метод GET, потом обычно дописывается метод POST, потом разбор multypart/form-data, ну и т.д.
На каждом этапе в код естественно закрадываются ошибки, которые устраняются, но они могут всплыть на более поздних этапах, что существенно увеличивает время их поиска.
Для тренировки и отработки навыков программирования этот путь безусловно полезен, но....:)))
Название: Вопрос по кодированию url-запроса...
Отправлено: Serchey от 01 Сентября 2002, 12:46:59
А я вот привык все делать вручную(и даже без ошибок!), потому от хорошего искать лучшего не изволю. Но коль ты говоришь, то я на досуге попробую. Не зря ведь г.: "век живи - вет учись!"
Название: Вопрос по кодированию url-запроса...
Отправлено: ВВЕДИТЕ СВОЕ ИМЯ от 02 Сентября 2002, 08:37:48
И все-таки это можно сделать с помощью CGI? Если нет, то как это можно сделать в ручную?
Название: Вопрос по кодированию url-запроса...
Отправлено: glebushka от 03 Сентября 2002, 00:46:19
Цитировать
ее надо обратно закодировать

зачем? Не перживай, и без тебя закодируют:-). Ты всё правильно записал.
ЗЫ Или я чего не так понял?
Название: Вопрос по кодированию url-запроса...
Отправлено: ВВЕДИТЕ СВОЕ ИМЯ от 04 Сентября 2002, 08:34:13
to glebushka:  Ты скорее всего не так понял... Мне надо на странице вывести ссылку:

что-нибудь

При нажатии на эту ссылку в адресной строке появится значение $var, т.е. если переменная содержит русские буквы, то они и отобразятся, а надо чтоб вместо них были 16-ричные коды. Или ты имеешь ввиду, что независимо от того, что отображается в адресной строке, при передаче запроса он все равно будет декодироваться?
Название: Вопрос по кодированию url-запроса...
Отправлено: Serchey от 04 Сентября 2002, 11:34:41
ВВЕДИТЕ СВОЕ ИМЯ , я может чуть позже напишу сюда свою прогу, так что жди.
Название: Вопрос по кодированию url-запроса...
Отправлено: APL от 04 Сентября 2002, 13:15:38
sub urlencode {
   my ($val) = @_;
   $val=~s/ /\\+/g;
   $val=~s/[\\x80-\\xFF]/"%".(uc(unpack(\'H2h2\', "$&")))/ge;
   return $val;
}
Название: Вопрос по кодированию url-запроса...
Отправлено: Serchey от 04 Сентября 2002, 16:31:09
APL, ну ты зверь...
Название: Вопрос по кодированию url-запроса...
Отправлено: Mog. от 05 Сентября 2002, 17:20:48
Я как то делал такую штуку, ну там брал слово (чиста кириллицей) , дклал урл?$var=компьютеры , потом брал все это с помощью param из CGI модуля. Специально ничего не кодировал. А в скрипте сравнивал $var и "компьютеры". Все было ништяк все работало. Мне честно говоря и в голову не приходило, что надо кодировать что то :).
Название: Вопрос по кодированию url-запроса...
Отправлено: glebushka от 05 Сентября 2002, 22:22:22
Цитировать
при передаче запроса он все равно будет декодироваться?

да.
При ичпользовании ЦГИ.пм прога APL не нужна.
Цитировать
Мне честно говоря и в голову не приходило, что надо кодировать что то

И мне тоже:-).
Хоть я и стараюсь передавать англицкими буквами, но иногда использую русские, пока всё работало, так что не грузись:-).
Название: Вопрос по кодированию url-запроса...
Отправлено: ВВЕДИТЕ СВОЕ ИМЯ от 09 Сентября 2002, 08:33:10
to APL: сэнкс... вроде нормально работает.

to glebushka: причем тут CGI.pm если мне надо просто ссылку на странице вывести. А представь если в этой переменной иногда будут пробелы встречаться на сколько корректно будет работать? Тоже самое, что данную строку набрать в адресной строке в браузере...
Название: Вопрос по кодированию url-запроса...
Отправлено: ВВЕДИТЕ СВОЕ ИМЯ от 09 Сентября 2002, 10:45:41
sub urlencode {
my ($val) = @_;
$val=~s/([^a-zA-Z0-9.*_ @-])/sprintf "%%%lx", ord($1)/eg;
$val=~s/ /\\+/g;
return $val;
}