Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.06.2011, 19:33
StinK StinK вне форума
Прохожий
 
Регистрация: 20.06.2011
Сообщения: 19
Версия Delphi: 7
Репутация: 10
По умолчанию idHTTP + idCookieManager

Второй день мучаюсь с авторизацией на сайте. Верней с принятием куков (я думаю дело в них). При успешной авторизации по адресу http://site.ru/login/ идет редирект на http://site.ru/home/ , а при неуспешной - возврат на страницу логина. Так вот авторизация проходит, идёт редирект на http://site.ru/home/, но от туда уже кидает обратно на страницу логина, будто разлогинило (все запросы смотрел через HTTPAnalyzer). Хотя это так и есть. Как правильно куки принять и отправить обратно? В idHTTP AllowCookies := True, CookieManager := IdCookieManager1 (лежит на форме). Все что уже написал, ниже:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
p:=Tstringlist.Create;
p.Add('login='+Edit1.Text);
p.Add('password='+Edit2.Text);
i:=IdHTTP1.Post('http://site.ru/login/', p);
if pos('logout', i) > 0 then
WebBrowser1.Navigate('http://site.ru/')
else
Memo1.Lines[0]:='LOGIN FAILED';
end;
Ответить с цитированием
  #2  
Старый 20.06.2011, 23:00
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

долбаный Indy, как же он меня бесит... используй 10.5.7 или, что говорят еще - Synapse
Ответить с цитированием
  #3  
Старый 21.06.2011, 08:56
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

на прошлой неделе писал решение точно такой же проблемы, см. в моих сообщениях.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #4  
Старый 21.06.2011, 15:33
StinK StinK вне форума
Прохожий
 
Регистрация: 20.06.2011
Сообщения: 19
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
на прошлой неделе писал решение точно такой же проблемы, см. в моих сообщениях.
Уже ищу
-----------
Нашёл http://www.delphisources.ru/forum/sh...22&postcount=7
Только оно какое-то длинное получается. Пошёл собирать

Цитата:
долбаный Indy, как же он меня бесит... используй 10.5.7 или, что говорят еще - Synapse
А как сделать, чтобы компоненты на панели появились? Пути к библиотекам синапса указал, а компоненты не появились.

Последний раз редактировалось StinK, 21.06.2011 в 15:37.
Ответить с цитированием
  #5  
Старый 21.06.2011, 15:36
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

http://www.delphisources.ru/forum/sh...ad.php?t=17493 7 пост
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #6  
Старый 21.06.2011, 15:46
StinK StinK вне форума
Прохожий
 
Регистрация: 20.06.2011
Сообщения: 19
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
Спасибо, нашёл уже

Только там ругается на необъявленную переменную ACookie. В остальном ошибок не выдает.
----------------------
Опять нашёл - ACookie : string;
Ответить с цитированием
  #7  
Старый 21.06.2011, 15:52
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

да, в моем варианте она была полем формы (для последующих запросов), поэтому в исх. не попала ну и наверняка с коллекцией CookieCollection покрутить придется под свой сервер
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #8  
Старый 21.06.2011, 15:54
StinK StinK вне форума
Прохожий
 
Регистрация: 20.06.2011
Сообщения: 19
Версия Delphi: 7
Репутация: 10
По умолчанию

Так-с. При попытке запроса вылетаем с ошибкой 301 Movied Permanently. Оно и понятно, т.к. ставится AIdHTTP.HandleRedirects:=False. Закомментировал строчку, редирект поставил на true, запустил. Теперь вылеатем при логине с 302 Found.
Ответить с цитированием
  #9  
Старый 21.06.2011, 16:00
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

не надо ничего комментить!
Код:
    try
      AIdHTTP.Post('/login.php', AStrings);
    except
      if (AIdHTTP.ResponseCode div 100)=3 then
      begin
редирект руками обрабатывается.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #10  
Старый 21.06.2011, 16:06
StinK StinK вне форума
Прохожий
 
Регистрация: 20.06.2011
Сообщения: 19
Версия Delphi: 7
Репутация: 10
По умолчанию

Вернул все назад
Поставил везде свои значения из логов HTTPAnalyzer'а.
Код:
DELETE
Теперь при логине вылетаем с 302 Found

Последний раз редактировалось StinK, 24.06.2011 в 11:44.
Ответить с цитированием
  #11  
Старый 21.06.2011, 16:14
StinK StinK вне форума
Прохожий
 
Регистрация: 20.06.2011
Сообщения: 19
Версия Delphi: 7
Репутация: 10
По умолчанию

А, ну и вот сама строчка аунтефикации на сервере:
Код:
DELETE

Последний раз редактировалось StinK, 24.06.2011 в 11:43.
Ответить с цитированием
  #12  
Старый 23.06.2011, 12:16
StinK StinK вне форума
Прохожий
 
Регистрация: 20.06.2011
Сообщения: 19
Версия Delphi: 7
Репутация: 10
По умолчанию

NumLock, так ничего и не получилось с твоим примером
Ответить с цитированием
  #13  
Старый 23.06.2011, 14:45
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
unit Unit1;

interface

uses
  IdHTTP, IdCookieManager,
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    Button1: TButton;
    Button2: TButton;
    IdHTTP1: TIdHTTP;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses IdCookie, IdHTTPHeaderInfo, StrUtils;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  AStrings: TStrings;
  s: String;
begin
  IdHTTP1.AllowCookies:=False;
  IdHTTP1.Request.UserAgent:='Mozilla/3.0';
  AStrings:=TStringList.Create;
  try
    AStrings.Add('handle=don.sim2012@yandex.ru');
    AStrings.Add('password=123456789');
    IdHTTP1.Request.ContentType:='application/x-www-form-urlencoded';
    try
      IdHTTP1.Post('http://lockerz.com/auth/login', AStrings);
    except
      Memo2.Lines.Assign(IdHTTP1.Response.RawHeaders);
      for i:=0 to IdHTTP1.Response.RawHeaders.Count-1 do
        if AnsiStartsText('Set-Cookie: lockerz2=', IdHTTP1.Response.RawHeaders[i]) then
        begin
          s:=IdHTTP1.Response.RawHeaders[i];
          s:=Copy(s, 22, Length(s));
          s:=Copy(s, 1, Pos(';', s)-1);
        end;
      Memo1.Text:=s;
    end;
  finally
    AStrings.Free;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  IdHTTP1.Request.CustomHeaders.Text:='Cookie: lockerz2='+Memo1.Text;
  IdHTTP1.Request.ContentType:='';
  IdHTTP1.Request.ContentLength:=-1;
  Memo1.Text:=IdHTTP1.Get(IdHTTP1.Response.Location);
  Memo2.Lines.Assign(IdHTTP1.Response.RawHeaders);
  Memo1.Lines.SaveToFile('d:\Downloads\lockerz2.htm');
end;

end.

http://data.cod.ru/112283

в htm будет строчка "Hello, Alexander {My Account} | {Sign Out}", что говорит о работоспособности метода. довести до ума мне лень, основной момент, думаю, понятен.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #14  
Старый 23.06.2011, 15:05
StinK StinK вне форума
Прохожий
 
Регистрация: 20.06.2011
Сообщения: 19
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
в htm будет строчка "Hello, Alexander {My Account} | {Sign Out}", что говорит о работоспособности метода. довести до ума мне лень, основной момент, думаю, понятен.
Да, сам принцип работы понятен. Попробую позже, спасибо.

Самому наконец-то удалось завести инди10 на 7-ой дельфи. Авторизация проходит, судя по найденной строчки "ВЫХОД". Но при открытии браузера в этом же приложении искомой страницы не вижу. Опять таки только главная страница для входа. Что теперь тут не работает - не знаю.
Ответить с цитированием
  #15  
Старый 23.06.2011, 15:08
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от StinK
Но при открытии браузера в этом же приложении искомой страницы не вижу. Опять таки только главная страница для входа. Что теперь тут не работает - не знаю.
и не будет. у тебя же Инди авторизовалось, а не браузер.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:29.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter