Всем привет . Давно уроков не было, учёба... Вот решил сделать вам подарок под ёлку. В преддверии Нового Года опередим процесс и изучим сладенькое ;D . Кстати, поздравляю всех с наступающим!!!
Поспешу так же и огорчить, из-за сессии не смогу писать до 25...
Посвящу я этот урок авторизации на сайте Вконтакте. Вы можете использовать множество методов авторизации, которых завались в нете, но сегодня я расскажу только про один, на 7-ке врятли пойдет, этот метод оптимален для Delphi Xe/Xe 2.
Итак:
1) создаем проект, кидаем на форму 2 Edit'a и Button.
2) Поскольку в Xe 2 новые обозначения компонентов, которые не понимают свои же формы из палитры инструментов, зададим стандартный набор uses.
....
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
Эти строки пишем в unit1.pas, для тех кто не понял.
3) Также добавляем на форму IdHttp1 с палитры инструментов Indy Clients и IdCookieManager1 с Indy Misc.
4) Выделяем IdHttp1 и в Object Inspector'e выбираем параметр True для HandleRedirect.
5) В Uses дописываем новые компоненты IdUri, RegExpr(файл regexpr.pas должен лежать в папке с проектом(прилагается в прикрепленных файлах)).
6) Дважды тыкаем на форме по нашему Button'у.
7) В соответствии с этим кодом (любезно спизжен с блога tezmen.ru), правим свой.
procedure TForm1.Button1Click(Sender: TObject); var Enter:TStringList; reg:TRegExpr; uri: TIdUri; temp:string; begin Enter:=TStringList.Create; Enter.add('act=login'); Enter.Add('al_test=3'); Enter.Add('email='+edit1.text); Enter.Add('pass='+edit2.Text); uri:=TIdUri.Create('http://vkontakte.ru'); idhttp1.RedirectMaximum:=2; reg:=TRegExpr.create; reg.Expression:='[0-9a-z]{60}'; temp:=idhttp1.post('http://login.vk.com', Enter); temp:=idhttp1.response.RawHeaders.GetText; reg.Exec(temp); if reg.Match[0]'' then begin application.processmessages ; idcookiemanager1.AddServerCookie('remixsid='+reg.Match[0], uri); messageDlg('Авторизация прошла успешно!', mtInformation, [mbOk], 0); end else begin messageDlg('Неверный логин или пароль!', mtInformation, [mbOk], 0); end; end; end.
Компилируем, проверяем.