Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Регистрация на сайте


Автор: ZZnOB 31.3.2010, 18:18
Доброго времени суток, уважаемые форумчане.
Помогите с регистрацией на сайте (управляется движком DLE). С пост запросом все ясно, не могу получить капчу в TImage. Помогите с ней разобраться. smile 

PS: Не для спама , а для личной образованности.

Автор: Akella 31.3.2010, 20:03
Ошибка в 17ой строке.

Автор: Matematik 31.3.2010, 22:31
Цитата(ZZnOB @  31.3.2010,  18:18 Найти цитируемый пост)
не могу получить капчу в TImage
  • ищешь в HTML коде ссылку на картинку
  • скачиваешь картинку
  • загружаешь картинку в Timage
  • ???
  • PROFIT

На каком пункте не получается?

Автор: ZZnOB 31.3.2010, 23:12
Расскажу по порядку.
При регистрации на сайте управляемом CMS DLE , с расширеным методом я сначала захожу на страницу по урлу
http://sait.ru/index.php?do=register передавая параметр методом POST содержащим dle_rules_accept=yes, после этого попадаю на страницу с формой регистрации. Во время соединения скрипт делает запрос GET к http://site.ru/engine/modules/antibot.php (это и есть картинка).  Далее мне нужно вывести эту самую картинку в Image, после чего заполнив из едитов все данные пост запроса, отправить все это методом POST на сайт.
Проблема в том, что я недавно начал программировать (точнее пытаться) и это мое первое знакомство с программированием в интернет и с Indy в частности. Я не понимаю, как вывести эту картинку в Image/
Если не затруднит, то пример приведите. Буду очень признателен.

Автор: Matematik 1.4.2010, 00:37
Примерно так
Код

uses GIFImg,Jpeg;
procedure TForm1.btn2Click(Sender: TObject);
var mem: TMemoryStream;
begin
    mem := TMemoryStream.Create;
    try
      htp.Get('http://forum.vingrad.ru/style_images/2/menu/menu.gif', mem);
      mem.Position := 0;
      mem.SaveToFile('img.gif');
    finally
      mem.Free
    end;
  img1.Picture.LoadFromFile('img.gif');
end;

Автор: ZZnOB 1.4.2010, 08:32
Проблема в том что при прямом обращении к скрипту http://site.ru/engine/modules/antibot.php, допустим если этот адрес ввести в адресную строку, то картинка не показывается, а пишется Hacking Attemp. Как сделать так чтобы все же показалась картинка. На ум приходит только сохранить страницу на компьютер и вывести в имэйдж локально. Или я все же чего то не понимаю?
Если можно, если у кого то есть время, напишите в асю 272девять29821. Или пример с сайтна на DLE. Нужен только вывод картинки в Image

Автор: Matematik 1.4.2010, 12:17
Цитата(ZZnOB @  1.4.2010,  08:32 Найти цитируемый пост)
Проблема в том что при прямом обращении к скрипту http://site.ru/engine/modules/antibot.php, допустим если этот адрес ввести в адресную строку, то картинка не показывается, а пишется Hacking Attemp.

Тогда надо всё скачивать одним экземпляром TIdHTTP
включить запоминание cookie
Код

htp.AllowCookies := True;

и передевать в заголовке referer адрес страницы регистрации
Код

htp.Request.Referer := 'http://sait.ru/index.php?do=register ';


А вообще, смотри какие запросы делает браузер. Я пользуюсь Firefox с аддонами https://addons.mozilla.org/ru/firefox/addon/6647 или FireBug

Автор: ZZnOB 1.4.2010, 18:03
Цитата(Matematik @  1.4.2010,  12:17 Найти цитируемый пост)
А вообще, смотри какие запросы делает браузер. Я пользуюсь Firefox с аддонами HttpFox или FireBug 

Спасибо за плагины. Буду пробовать.

Автор: ZZnOB 1.4.2010, 19:07
Пробую так... Пока задача минимум вывести картинку в имэйдж.
Код

procedure TForm1.Button2Click(Sender: TObject);
var mem: TMemoryStream;
zap:TStringList;

begin
    mem := TMemoryStream.Create;
    idhttp.AllowCookies := True;
    try
    zap:=TStringList.Create;
    zap.Add('dle_rules_accept=yes');
    idhttp1.Request.Referer := 'http://textured.ru/index.php?do=register ';
    idhttp1.Post('http://textured.ru/index.php?do=register',zap);
    idhttp1.Get('http://textured.ru/engine/modules/antibot.php', mem);
    mem.Position := 0;
    mem.SaveToFile('img.gif');
    finally
      mem.Free
    end;
  image1.Picture.LoadFromFile('img.gif');
end;

Компилится без ошибок. Запускаю, жму на кнопку и получаю ошибку
"Invalid GIF Signature" Что, на мой взгляд, говорит о том что не картинка это  smile , в чем косячу?

Автор: ZZnOB 1.4.2010, 20:21
Код

procedure TForm1.Button2Click(Sender: TObject);
var mem: TMemoryStream;
zap:TStringList;

begin
    mem := TMemoryStream.Create;
    idHttp1.AllowCookies:=true;
    try
    zap:=TStringList.Create;
    zap.Add('dle_rules_accept=yes');
    idhttp1.Request.Referer := 'http://textured.ru/index.php?do=register ';
    idhttp1.Post('http://textured.ru/index.php?do=register',zap);
    idhttp1.Get('http://textured.ru/engine/modules/antibot.php', mem);
    mem.Position := 0;
    mem.SaveToFile('img.jpeg');
    finally
      mem.Free
    end;
  image1.Picture.LoadFromFile('img.jpeg');
end;


А вот это заработало  smile , только вот не пойму, почему ему GIF не нравился, хотя в uses GIFImage был прописан

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)