Автор Тема: Киньте плиз кусок кода.  (Прочитано 2242 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Bum

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
Киньте плиз кусок кода.
« : 29 Декабря 2001, 07:51:29 »
Нужно разбить куки в хеш, не использую никаких  модулей,
а только стандартные функции и переменную
$env{\'http_coockie\'}

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
вот
« Ответ #1 : 31 Декабря 2001, 02:53:45 »
раз никто не ответил...

sub cook_me_babe {
#-------------------------
my $cook_me=($ENV{HTTP_COOKIE} || $ENV{COOKIE});
my @cook=split(/;/, $cook_me);
my($key, $val, %cook);
foreach my $kok(@cook){
  ($key, $val )=split(/=/, $kok);
#Ops, а енто сделать забыл, если б не flamio...
#т.е. добавлено, исправлено:
   $key =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   $key =~ tr/+/ /;
   $val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   $val =~ tr/+/ /;

  $cook{$key}=($val||\'\');
}

return %cook;
}

Цитировать
Нужно разбить куки в хеш, не использую никаких модулей,

Все-таки не удержусь - Cookies.pm из пакета CGI.
Сам по себе небольшой модуль и очень полезный.
Иногда куки просто удобно проверять через регулярные выражения (если в куках проверяется наличие идентификатора)

ЗЫ: в строке $cook{$key}=($val||\'\');
\'\' - это не двойные кавычки ,а две одинарных \'
:) в Cookies.pm примерно такой же код, но более "корректный по смыслу" и доп. проверки контекста там есть - можно и оттуда parse выдрать.
« Последнее редактирование: 06 Января 2002, 00:27:02 от Green Kakadu »
 в исканиях.

Оффлайн flymio

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 34
  • +0/-0
  • 0
    • Просмотр профиля
    • http://notlj.ru
... resume next ...
« Ответ #2 : 05 Января 2002, 19:38:35 »
sub get_cookie
{
 local($chip, $val);
 foreach (split(/; /, $ENV{HTTP_COOKIE} || $ENV{COOKIE}))
 {
    s/\\+/ /g;
    ($chip, $val) = split(/=/,$_,2);
    $chip =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge;
    $val =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge;
    $cookie{$chip} = $val;
  }
}

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28