Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2010, 12:17   #1
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию Не логинится на сайте

Здравствуйте, уважаемые! Возникла проблема, которая заключается в следующем, вот код:

Код:
procedure TBox.LoginButtonClick(Sender: TObject);
var
  S: string;
  M: TStringStream;
  Data: TIdMultiPartFormDataStream;
begin
  M := TStringStream.Create('');
  Data := TIdMultiPartFormDataStream.Create;
  Data.AddFormField('mode', 'login');
  Data.AddFormField('pass_hash', '');
  Data.AddFormField('lng', 'ru');
  Data.AddFormField('login', 'TTTTest17');
  Data.AddFormField('pass', 'TTTTest17');
  try
    LoginHTTP.Post('http://tm-trans.com/index.php', Data, M);
  except on E: EIDHttpProtocolException do
         if E.ErrorCode = 302 then
         begin
            LoginHTTP.Get(LoginHTTP.Response.Location, M);
         end;
  end;
  S := UTF8ToStrSmart(M.DataString);
  if Pos('Приветствуем', S) > 0 then
  begin
     ShowMessage('U R A ! ! !');
  end;
  M.Free;
  Data.Free;
end;
Но почему-то он не срабатывает, хотя снифером проверял, больше никаких пост параметров нет. Как мне кажется проблема в том, что при входе появляется ошибка 302 Moved, я ее обрабатываю, но проблема остается. В чем еще может скрываться проблема?
RIO вне форума Ответить с цитированием
Старый 11.11.2010, 13:53   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А эту тему почитать не судьба ?
http://www.programmersforum.ru/showthread.php?t=53215
mihali4 вне форума Ответить с цитированием
Старый 11.11.2010, 16:47   #3
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию

Так вот именно, что читал И менеджер подключен и индейцы обновлены...
RIO вне форума Ответить с цитированием
Старый 11.11.2010, 17:12   #4
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Ошибка 302 возникает из-за перенаправления. То, что вы ее обрабатываете, ничего не дает, всё равно в M ничего не записывается.
Попробуйте включить обработку перенаправления (HandleRedirects:=true)
Voody вне форума Ответить с цитированием
Старый 11.11.2010, 17:38   #5
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию

Как раз наоборот, при обработке ошибки записывается в M, а вот когда юзаю HandleRedirects, то ничего не записывается
RIO вне форума Ответить с цитированием
Старый 11.11.2010, 19:00   #6
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Да, не увидел. Тогда что у вас в ответе сервера? Какая страница? Уверены, что даже если там и будет слово "Приветствуем", оно будет в нужной вам кодировке?
Voody вне форума Ответить с цитированием
Старый 11.11.2010, 22:34   #7
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию

Кодировка читабельная Благодаря функции UTF8ToStrSmart, которую кстати здесь на форуме нашел... А в ответе у меня стартовая страница, которая опять предлагает мне авторизоваться

Кстати, ссылка на функцию, может кому-то пригодится:
http://programmersforum.ru/showthread.php?p=443061
RIO вне форума Ответить с цитированием
Старый 12.11.2010, 16:25   #8
pesi
Подтвердите свой е-майл
 
Регистрация: 05.03.2009
Сообщений: 65
По умолчанию

Код:
var
  S: string;
  M: TStringStream;
  Data: TIdMultiPartFormDataStream;
begin
  M := TStringStream.Create('');
  Data := TIdMultiPartFormDataStream.Create;
  Data.AddFormField('mode', 'login');
  Data.AddFormField('pass_hash', '');
  Data.AddFormField('lng', 'ru');
  Data.AddFormField('login', 'TTTTest17');
  Data.AddFormField('pass', 'TTTTest17');
  try
    LoginHTTP.Post('http://tm-trans.com/index.php', Data, M);
  except
    on E: Exception do
      if Pos('302', E.Message) > 0 then
        LoginHTTP.Get('http://tm-trans.com'+LoginHTTP.Response.Location, M);
  end;
  S := UTF8ToAnsi(M.DataString);
  if Pos('Приветствуем', S) > 0 then
  begin
     ShowMessage('U R A ! ! !');
  end;
  M.Free;
  Data.Free;
end;
pesi вне форума Ответить с цитированием
Старый 15.11.2010, 19:56   #9
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию

Не работает почему-то А у Вас работает данный код? Какая у вас версия Delphi, Indy?
Для тестов используйте логин TestAgain и пароль TestAgain

Последний раз редактировалось RIO; 15.11.2010 в 20:06.
RIO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторизация на сайте Abadd0N Работа с сетью в Delphi 14 10.06.2009 12:31
Вирус на сайте! sysyman О форуме и сайтах клуба 17 02.02.2009 00:14