Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

           Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
           И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - https://clck.ru/fCqwP

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2011, 21:29   #1
Oleg_teacher
 
Регистрация: 20.02.2007
Сообщений: 3
По умолчанию Авторизация на сайте. Почему не получается?

Код:
var
  Http  : TidHttp;
  CM    : TidCookieManager;
  Data  : TStringList;
  StrPage, UserID,  UserName  :  String;
  i : integer;
begin
  try
    Http := TIdHTTP.Create(Self);
    Data := TStringList.Create;
    CM := TidCookieManager.Create(Http);
    Http.AllowCookies := true;
    Http.CookieManager := CM;
    Http.HandleRedirects := true;

    Http.Request.Host:='www.promo-immunitet.ru';
    Http.Request.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10';
    Http.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
    Http.Request.AcceptLanguage:='ru,en-us;q=0.7,en;q=0.3';
    Http.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7';
    Http.Request.Referer:='http://www.promo-immunitet.ru';

 //   Data.Add('mode=login');
    Data.Add('UserName=' + Edit1.Text);
    Data.Add('Password=' + Edit2.Text);
    StrPage := Http.Post('http://www.promo-immunitet.ru/logon', Data);
  finally
    Data.Free;
    CM.Free;
    Http.Free;
  end;

if pos('Выйти',StrPage)>0 then Caption:='+'
else Caption:='-';

  Memo1.Lines.Text := StrPage;
end;

Последний раз редактировалось AlDelta; 04.04.2011 в 01:06.
Oleg_teacher вне форума Ответить с цитированием
Старый 03.04.2011, 15:42   #2
Arsenx777
Delphi, c++, php
Форумчанин
 
Аватар для Arsenx777
 
Регистрация: 14.03.2011
Сообщений: 288
По умолчанию

Вот пример на сайте mail! у меня работает
Код:
var
PostData, ResponseData : TStringList;
begin
PostData := TStringList.Create;
try
ResponseData := TStringList.Create;
PostData.Add('Login=name');
PostData.Add('Domain=mail.ru');
PostData.Add('Password=pass');
ResponseData.Text := IdHTTP1.Post('http://win.mail.ru/cgi-bin/auth', PostData);
if Pos('logout',ResponseData.Text)>0 then
ShowMessage('Авторизовались!')
else
ShowMessage('Авторизация не удалась!');
finally
PostData.free;
ResponseData.free;
end;
end;
можно вместо
Код:
('Login=name');
и
Код:
('Password=pass');
name-поставить Tedit1 и
pass- Tedit2;
Мудр тот, кто знает нужное, а не многое.

Arsenx777 вне форума Ответить с цитированием
Старый 04.04.2011, 00:45   #3
Usov
Форумчанин
 
Аватар для Usov
 
Регистрация: 29.09.2009
Сообщений: 228
По умолчанию

Все решается сравнением того что шлется с браузера и проги.
Usov вне форума Ответить с цитированием
Старый 04.04.2011, 00:49   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,455
По умолчанию

возможно потому что ответ сервера приходит не в совсем той кодировке, в результате вся кирилици это абра-кадабра. По этому чтобы найти "Выйти", нужно перекодировать ответ сервера в ANSI кодировку, для этого делаем так:
Код:
 StrPage:=UTF8ToANSI(StrPage);
после получения ответа.

И вообще оформляйте привильно код. Он не читабелен вообще. Делается это при помощи кнопочки
Если не поможет, то наоборот ANSItoUTF8 Обе функии есть в idHTTP модуле.

И зачем вы сами заполняете секцию Http.Request? Вы 100% уверены что она соответствует требованиям http сервера?
Возпользуйтесь HTTP Analyzer сниффером и посмотрите что посылает браузер и что посылает ваша программа. Зачастую у сайта при логине есть тучка hidden переменных которые тоже посылаются на сервер.

Последний раз редактировалось Человек_Борща; 04.04.2011 в 00:56.
Человек_Борща вне форума Ответить с цитированием
Ответ

           Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
           Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторизация на сайте record222 Работа с сетью в Delphi 12 01.01.2011 00:17
Авторизация на сайте Areostar Общие вопросы .NET 3 03.11.2010 17:22
Авторизация на сайте zumm Общие вопросы Delphi 1 23.05.2010 20:00
Авторизация на сайте Kengie Помощь студентам 2 23.03.2010 21:28
Авторизация на сайте gusluk Работа с сетью в Delphi 3 20.11.2008 14:40