theUg
Зарегистрирован: 27.11.2002 Сообщения: 2
|
Добавлено: Ср Ноя 27 2002 16:33 Заголовок сообщения: Perl-скрипт, считывающий и применяющий значение куки. |
|
|
Есть тут у меня скрипт перловый, который должен считывать куку и использовать её значение для вывода соответствуюего куска кода. Для облегчения задачи, значение куки равно изменяемой части имени файла вставляемого куска.
Так вот. Скрипт, в целом, работает, но куку читать не может и выдаёт только значение по умолчанию. Что делать?
Сырец:
#!/usr/bin/perl
sub get_cookies {
my ($name, $value, $cookies_hash);
my $cookies_string = $ENV{HTTP_COOKIE};
return if not defined $cookies_string;
foreach my $cookie (split(/;\s*/, $cookies_string)) { ($name, $value) = split (/\s*=\s*/, $cookie); next if $value =~ /^\s*$/; $cookies_hash->{$name} = decode($value); } return $cookies_hash; };
sub decode { my $string = shift; return if not defined $string; $string =~ s/%([0-9a-fA-F]{2})/chr hex($1)/ge; $string =~ s/\r\n/\n/g; return $string; }
my $cookies = get_cookies();
my $filename = $cookies->{filename} || "0101";
print "Content-type: text/html\n\n"; open(F, "../standings/include/".$filename."s.html") || die "Can't open file: $!"; print ; close(F); |
|
theUg
Зарегистрирован: 27.11.2002 Сообщения: 2
|
Добавлено: Ср Ноя 27 2002 17:49 Заголовок сообщения: Re: Perl-скрипт, считывающий и применяющий значение куки. |
|
|
Ой. Мне, ко всему прочему, надо учиться методикам диагностики ошибок. Мне тут подсказали напечатать $ENV{HTTP_COOKIE}, чтобы посмотреть, что программа получает на входе.
Он выдал мне куки, которые принадлежат этому же домену -- но это куки форумов, установленных на сервере, а нужную мне куку он просто не видит. При этом, ява скрипт читает их без проблем.
У меня появилось подозрение (eureka!): я задаю куку скриптом в поп-апе и из него же читаю. Пока я тестирую, я не задаю ни домен, ни expire и т.п., поэтому не записывается ли она дефолтом только для файла того поп-апа? Пойду проверю.
* * * (через 20 минут)
Я временно перенёс скрипты задания куков на страницу, с которой вызывается перловая программа и в переменной $ENV{HTTP_COOKIE} таки обнаружил свою родную куку. Вот только скрипт её не читает и, даже не смотря (а может и благодаря ) на свои скудные познания в Perl'е, я не вижу, как этот скрипт определяет какая кука моя, а какая нет. Либо нужно проверять само значение куки, либо, что проще, сверять значение имени куки, поскольку оно известно заранее. Вот только как это сделать, я не очень представляю.
Через if then else, скорее всего? |
|