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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2011, 18:51   #1
-=Virus=-
Форумчанин
 
Аватар для -=Virus=-
 
Регистрация: 03.07.2009
Сообщений: 246
По умолчанию авторизация на трекере

Помогите авторизоватся на трекере.

PHP код:
<!-- Login -->
<
div class="loginform"><br><br>
<
div class="loginform_inn">


<
form method="post" action="takelogin.php"><input class="login" type="text" size=20 name="username" value="Логин..." onBlur="if(this.value=='') this.value='Логин...';" onFocus="if(this.value=='Логин...') this.value='';" /><input class="pass" type="password" size=20 name="password" value="123456" onBlur="if(this.value=='') this.value='123456';" onFocus="if(this.value=='123456') this.value='';" /><br><input type="submit" value="Вход"></form>
<
form method="post" action="signup.php"><input type="submit" value="Регистрация"></form>

</
div></div>
<!-- /
Login --> 
Код авторизации

Пробовал так
Цитата:
procedure TForm1.Button1Click(Sender: TObject);
var
LoginInfo: TStringList;
Response: TStringStream;
begin
try
LoginInfo := TStringList.Create;
LoginInfo.Add('username=Denis ');
LoginInfo.Add('password=password');
IdHTTP1.Post('http://goldentorrent.ru/takelogin.php',LoginInfo,Response);
memo1.Lines.add(Response.DataString );
finally
begin
Response.Free;
LoginInfo.Free;
end;
end;
end;

Последний раз редактировалось -=Virus=-; 17.07.2011 в 20:33.
-=Virus=- вне форума Ответить с цитированием
Старый 17.07.2011, 19:20   #2
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Цитата:
Сообщение от -=Virus=- Посмотреть сообщение
Пробовал так
И? Какой результат? Какой текст возвращает сервер?
Voody вне форума Ответить с цитированием
Старый 17.07.2011, 20:31   #3
-=Virus=-
Форумчанин
 
Аватар для -=Virus=-
 
Регистрация: 03.07.2009
Сообщений: 246
По умолчанию

В том то и дело что ни чего не получается
-=Virus=- вне форума Ответить с цитированием
Старый 17.07.2011, 20:55   #4
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

По коду не очень понятно, как вы определяете, что ничего не получается.
Видимо вы смотрите текст ответа. Например в случае неверного пароля там должен быть такой текст:
Код:
<td class="embedded">Имя пользователя или пароль неверны</td>
А в случае, если и пользователя такого нет, такой:
Код:
<td class="embedded">Вы не зарегистрированы в системе.</td>
А что у вас?
Voody вне форума Ответить с цитированием
Старый 17.07.2011, 20:56   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

снифером смотри, что ещё посылается на сайт кроме логина и пароля. Кукисы тоже к примеру
Человек_Борща вне форума Ответить с цитированием
Старый 17.07.2011, 21:54   #6
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Вот работает у меня:
Код:
unit Unit1;

interface

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

const
  ServerStatusLogIn :array[0..1]of string=('<td class="embedded">', '</td>');


type
  TForm1 = class(TForm)
    IdHTTP1: TIdHTTP;
    IdCookieManager1: TIdCookieManager;
    Memo1: TMemo;
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Edit2: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Edit3: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  function FindTagTextParam(Txt, Tg1, Tg2: string; IncludeTag: Boolean): string;
  function ExtractLogInResult(S :string):string;

implementation

{$R *.dfm}

function FindTagTextParam(Txt, Tg1, Tg2: string; IncludeTag: Boolean): string;
const
 StartPos :Integer = 1; //начало поиска тегов
var a, b, L :Integer;
    S :string;
    Buf :string;
    CorA,CorB :Integer; //коррекция копирования
begin // поиск первого включения тегов
  Result := '';
 if Trim(Txt) = '' then Exit;
 Buf := AnsiUpperCase(Txt);
 a := PosEx(AnsiUpperCase(Tg1), Buf, StartPos);
 a := a + Length(Tg1);
 b := PosEx(AnsiUpperCase(Tg2), Buf, a);
 L := b - a;
  // коэффициенты коррекции строки
 CorA := Length(Tg1);
 CorB := Length(Tg2) + Length(Tg1);
  // добавить ячейку
 if IncludeTag then
 begin // вместе с тегами поиска
  S := Copy(Txt, a - CorA, L + CorB);
  If Pos(Tg1, S) = 1 then
   Result := S;
 end
  else
 begin // занчение между тегами
  Result := Copy(Txt, a, L);
 end;
end;

function ExtractLogInResult(S :string):string;
begin
  Result := '';
  if Trim(S) = '' then
   Exit;
  Result := FindTagTextParam(S, ServerStatusLogIn[0], ServerStatusLogIn[1], False);
end;

procedure TForm1.Button1Click(Sender: TObject);
const
    LogInnLink = 'http://goldentorrent.ru/takelogin.php';
    Lg = 'username=%s';
    Psw = 'password=%s';
var
  FPost :TStringList;
  FTxtStrm :TStringStream;
  FBuf :string;
begin
 TButton(Sender).Enabled := False;

 Memo1.Lines.Clear;
 Edit3.Clear;

 FPost := TStringList.Create;
 FTxtStrm := TStringStream.Create;
  try
 FPost.Add(Format(Lg, [Edit1.Text]));
 FPost.Add(Format(Psw, [Edit2.Text]));
 IdHTTP1.Post(LogInnLink, FPost, FTxtStrm);
 FBuf := FTxtStrm.DataString;
 Memo1.Lines.Text := FBuf;
 Edit3.Text := ExtractLogInResult(FBuf);
  finally
 TButton(Sender).Enabled := True;
 FreeAndNil(FPost);
 FreeAndNil(FTxtStrm);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 With IdHTTP1 do
 begin
   HandleRedirects := True;
   ProtocolVersion := pv1_1;
   AllowCookies := True;
   CookieManager := IdCookieManager1;
   with Request do
   begin
     Host := 'goldentorrent.ru';
     UserAgent := 'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.9.168 Version/11.50';
     Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
     AcceptLanguage := 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3';
     AcceptEncoding := 'gzip, deflate';
     AcceptEncoding := 'windows-1251,utf-8;q=0.7,*;q=0.7';
     Referer := 'http://goldentorrent.ru/';
     ProxyConnection := 'keep-alive';
     ContentType := 'application/x-www-form-urlencoded';
   end;
 end;
end;

end.
Вложения
Тип файла: rar Авторизация goldentorrent.ru.rar (855.3 Кб, 11 просмотров)

Последний раз редактировалось Alter; 17.07.2011 в 21:57.
Alter вне форума Ответить с цитированием
Старый 18.07.2011, 00:43   #7
-=Virus=-
Форумчанин
 
Аватар для -=Virus=-
 
Регистрация: 03.07.2009
Сообщений: 246
По умолчанию

Всё бы хорошо но когда вводишь существующий логин и пароль то не авторизовывается. Кидает на главную страницу и всё.
Вот попробуй логин=Denis пароль=12345
Главное вводишь левые данные всё работает, вводишь существующие данные полный бред получается.

Последний раз редактировалось -=Virus=-; 18.07.2011 в 00:51.
-=Virus=- вне форума Ответить с цитированием
Старый 18.07.2011, 17:26   #8
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Добавил проверку на вход, входит.
Код:
unit Unit1;

interface

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

const
  ServerStatusLogIn :array[0..1]of string=('<td class="embedded">', '</td>');
  LogInSuc  = '<a href="logout.php">';
  LogInSucS = 'Вход успешен';


type
  TForm1 = class(TForm)
    IdHTTP1: TIdHTTP;
    IdCookieManager1: TIdCookieManager;
    Memo1: TMemo;
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Edit2: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Edit3: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  function FindTagTextParam(Txt, Tg1, Tg2: string; IncludeTag: Boolean): string;
  function ExtractLogInResult(S :string):string;
  function IsLogIn(S :string):Boolean;

implementation

{$R *.dfm}

function FindTagTextParam(Txt, Tg1, Tg2: string; IncludeTag: Boolean): string;
const
 StartPos :Integer = 1; //начало поиска тегов
var a, b, L :Integer;
    S :string;
    Buf :string;
    CorA,CorB :Integer; //коррекция копирования
begin // поиск первого включения тегов
  Result := '';
 if Trim(Txt) = '' then Exit;
 Buf := AnsiUpperCase(Txt);
 a := PosEx(AnsiUpperCase(Tg1), Buf, StartPos);
 a := a + Length(Tg1);
 b := PosEx(AnsiUpperCase(Tg2), Buf, a);
 L := b - a;
  // коэффициенты коррекции строки
 CorA := Length(Tg1);
 CorB := Length(Tg2) + Length(Tg1);
  // добавить ячейку
 if IncludeTag then
 begin // вместе с тегами поиска
  S := Copy(Txt, a - CorA, L + CorB);
  If Pos(Tg1, S) = 1 then
   Result := S;
 end
  else
 begin // занчение между тегами
  Result := Copy(Txt, a, L);
 end;
end;

function ExtractLogInResult(S :string):string;
begin
  Result := '';
  if Trim(S) = '' then
   Exit;
  Result := FindTagTextParam(S, ServerStatusLogIn[0], ServerStatusLogIn[1], False);
end;

function IsLogIn(S :string):Boolean;
var
  Buf :string;
begin // удачно вошли, или нет
  Result := False;
  if Trim(S) = '' then
   Exit;
  Buf := AnsiLowerCase(S);
  Result := (Pos(LogInSuc, Buf) > 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
const
    LogInnLink = 'http://goldentorrent.ru/takelogin.php';
    Lg = 'username=%s';
    Psw = 'password=%s';
var
  FPost :TStringList;
  FTxtStrm :TStringStream;
  FBuf :string;
begin
 TButton(Sender).Enabled := False;

 Memo1.Lines.Clear;
 Edit3.Clear;

 FPost := TStringList.Create;
 FTxtStrm := TStringStream.Create;
  try
 FPost.Add(Format(Lg, [Edit1.Text]));
 FPost.Add(Format(Psw, [Edit2.Text]));
 IdHTTP1.Post(LogInnLink, FPost, FTxtStrm);
 FBuf := FTxtStrm.DataString;
 Memo1.Lines.Text := FBuf;
  case IsLogIn(FBuf) of
 True: Edit3.Text := LogInSucS;
 False: Edit3.Text := ExtractLogInResult(FBuf);
  end;
  finally
 TButton(Sender).Enabled := True;
 FreeAndNil(FPost);
 FreeAndNil(FTxtStrm);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 With IdHTTP1 do
 begin
   HandleRedirects := True;
   ProtocolVersion := pv1_1;
   AllowCookies := True;
   CookieManager := IdCookieManager1;
   with Request do
   begin
     Host := 'goldentorrent.ru';
     UserAgent := 'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.9.168 Version/11.50';
     Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
     AcceptLanguage := 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3';
     AcceptEncoding := 'gzip, deflate';
     AcceptEncoding := 'windows-1251,utf-8;q=0.7,*;q=0.7';
     Referer := 'http://goldentorrent.ru/';
     ProxyConnection := 'keep-alive';
     ContentType := 'application/x-www-form-urlencoded';
   end;
 end;
end;

end.
Дальше полученный HTML текст страницы самому парсить нужно.
Вложения
Тип файла: rar Авторизация goldentorrent.ru 2.rar (456.8 Кб, 14 просмотров)
Alter вне форума Ответить с цитированием
Старый 18.07.2011, 22:46   #9
-=Virus=-
Форумчанин
 
Аватар для -=Virus=-
 
Регистрация: 03.07.2009
Сообщений: 246
По умолчанию

Alter, у тебя какая вервия Delphi?
-=Virus=- вне форума Ответить с цитированием
Старый 20.07.2011, 21:39   #10
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

2010 версия
Alter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторизация Fiber Visual C++ 1 14.03.2011 16:30
Обычная авторизация или авторизация на уровне браузера? calugin Безопасность, Шифрование 0 13.01.2011 00:34
Авторизация doniyor JavaScript, Ajax 1 07.11.2009 21:13
Авторизация? Gromsky PHP 5 07.08.2009 19:27
Авторизация AIst PHP 5 03.12.2008 20:57