Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование cookie Роботом 
:(
    Опции темы
Materium
Дата 20.12.2006, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 4.12.2006
Где: Питер

Репутация: нет
Всего: 2



Простой Робот отправляет в chat.cgi сообщение "ura".
Сообщение прекрасно проходит все конвееры и благополучно выводится.
Проблема в том, что в cookie записан Ник. chat.cgi получает из кукеса этот ник, и подставляет его перед текстом. Как модернизировать код, чтобы он использовал ранее записанный кукес?
Приведённый ниже код этого не делает, error.log без ошибок.
Читал доки, пробовал разные функции из документации, но ничего у меня не получилось.

Код

#!/usr/bin/perl -w
use HTTP::Request::Common qw(POST);
use LWP::UserAgent;
use HTTP::Cookies;
use CGI;

$co=new CGI;
print $co->header(-type=>"text/html; charset=windows-1251");
$ua=LWP::UserAgent->new();
$Cookie=HTTP::Cookies->new();
$req='http://test1.ru/cgi/chat/chat.cgi';
$ua->cookie_jar($Cookie);
my $rs = POST $req,
    [textarea=>"ura"];
$ua->request($rs);

 smile 

Ввиду того что задаю много детских вопросов, korob2001 прошу на этот топик внимания не обращать. )))
--------------------
#!sub abc {return "ok"}${&abc()}="TMTOWTDI";print "$ok";
PM MAIL   Вверх
nitr
Дата 20.12.2006, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 12
Всего: 84



Ну вот без модулей получить куки... вот наваял smile
Код

...
my $cookie = &getcookies;
foreach (keys %$cookie) {  #Это чтобы узнать какая кукис отвечает за ник, потом можно убрать :)
    print "$_\t".$cookie->{$_}."\n";
}
#Ну а если известно имя параметра куки, то можно так
my $nick = $cookie->{nick_param};
...
sub getcookies {
    my $hash;
    if (exists $ENV{'HTTP_COOKIE'}) {
        foreach (split /; /, $ENV{'HTTP_COOKIE'}) {
            my ($name, $value) = split(/=/, $_);
            $hash->{$name} = $value;
        }
    }
    scalar(keys %$hash) > 0 ? return $hash : return undef;
}
...


Это сообщение отредактировал(а) nitr - 20.12.2006, 23:59


--------------------
PM   Вверх
Materium
Дата 21.12.2006, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 4.12.2006
Где: Питер

Репутация: нет
Всего: 2



nitr спасибо за пример, он мне пригодится, но я сразу вижу что... наверное я не так объяснил чего я хочу. ))) Очень хорошо что Робот получит кукис. Нужно, чтобы робот каким-то образом передал этот кукис сценарию. В error.log сценария chat.cgi пишется об неинициализированной переменной 
Код

$cgi->param('nick_param');
, посему сообщение "ura" выводится, но без ника перед ним. В доках я прочитал что UserAgent по умолчанию отключает куки. Там есть функции типа add_cookie_header и т.д., я пробовал включить как-то куки, чтобы chat.cgi их схватил также как он их хватает когда я открываю свой IE и запускаю его, но ничего не выходит. ))) Так как передать chat.cgi куку из Робота??? )))

Это сообщение отредактировал(а) Materium - 21.12.2006, 16:31
--------------------
#!sub abc {return "ok"}${&abc()}="TMTOWTDI";print "$ok";
PM MAIL   Вверх
Materium
Дата 21.12.2006, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 4.12.2006
Где: Питер

Репутация: нет
Всего: 2



nitr решил я до безобразия ещё проще объяснить что нужно. ))
есть скрипт:
Код

#/usr/bin/perl -w
use CGI;
$cgi=new CGI;
$abc=$cgi->cookie('nick');
# тут print header
print $abc;


Робот должен впихнуть что-то в 'nick', пока не важно что и откуда. )))
--------------------
#!sub abc {return "ok"}${&abc()}="TMTOWTDI";print "$ok";
PM MAIL   Вверх
Materium
Дата 11.1.2007, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 4.12.2006
Где: Питер

Репутация: нет
Всего: 2



Столько просмотров, неужели никто не знает??? )))
--------------------
#!sub abc {return "ok"}${&abc()}="TMTOWTDI";print "$ok";
PM MAIL   Вверх
nitr
Дата 12.1.2007, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 12
Всего: 84



Materium, а что не работает? smile)
ты не упростил вопрос, а слишком запутал, что где не работает, что тебе нужно???


--------------------
PM   Вверх
Materium
Дата 13.1.2007, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 4.12.2006
Где: Питер

Репутация: нет
Всего: 2



мне не нужно получить кукис роботом, мне нужно чтобы робот передал сценарию, использующему кукис, какое-то значение (или кукис)... сценарий выше получает кукис из кукесов: $abc=$cgi->cookie('nick');
мне нужно чтобы робот "впихнул" своё значение в 'nick', где он его возьмёт не важно. пусть передаст какую-то строку.
Как я писал выше, робот подсоединяется к чату и выводит сообщение. Но так как чат берёт Ник из кукесов, мне нужно чтобы робот _передал сценарию кукес_. Получить кукес одно, передать в некоторый сценарий я его хочу - это другое!
--------------------
#!sub abc {return "ok"}${&abc()}="TMTOWTDI";print "$ok";
PM MAIL   Вверх
Black Rabbit
Дата 14.1.2007, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 21.10.2004

Репутация: нет
Всего: 2



Ты же передаешь в сценарий значение  [textarea=>"ura"];
Разве нельзя считать роботом кукис $abc=$cgi->cookie('nick'), 
 модифицировать его значение и передать  тем  же способом
 [textarea=>"ura", cookie_value=>doSomethingWith($abc) ];
PM MAIL ICQ   Вверх
Materium
Дата 14.1.2007, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 4.12.2006
Где: Питер

Репутация: нет
Всего: 2



cookie_value - это есть ключ? если дело в этом то это то что мне нужно было узнать!!!
--------------------
#!sub abc {return "ok"}${&abc()}="TMTOWTDI";print "$ok";
PM MAIL   Вверх
nitr
Дата 14.1.2007, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 12
Всего: 84



Materium, снова запутал... это за робот на CGI? Или это всё же не робот, а часть чата?


--------------------
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0766 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.