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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2011, 14:40   #1
KpacaB4uk
Новичок
Джуниор
 
Регистрация: 17.02.2011
Сообщений: 2
По умолчанию Авторизация на сайте

Привет всем программистам. Помогите мне сделать программу для авторизации на сайте heroeswm.ru
У меня че то не получается.
Вот мой код:
Код:
unit Unit1;


interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    IdHTTP1: TIdHTTP;
   function Pars(T_, ForS, _T: string): string;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var StrPage, ssylka:string;
    Data:TstringList;
begin
 idhttp1.HandleRedirects:=true;
 StrPage:=idhttp1.Get('http://www.heroeswm.ru/login.php');
 ssylka:=('http://www.heroeswm.ru/login.php');
 Data:=TstringList.Create;
 Data.Add('LOGIN_redirect=1');
 Data.Add('login='+Edit1.Text);
 Data.Add('pass='+Edit2.Text);
 StrPage:=idhttp1.Post(ssylka, Data);
 if Pos('logout.php', 'http://www.heroeswm.ru/home.php')<>0 then
  Label3.Caption:='Залогинились'
 else Label3.Caption:='Не залогинились';
 Data.Free;
end;

function TForm1.Pars(T_, ForS, _T: string): string;
var
  a, b: integer;
begin
  Result := '';
  if (T_ = '') or (ForS = '') or (_T = '') then
    Exit;
  a := Pos(T_, ForS);
  if a = 0 then
    Exit
  else
    a := a + Length(T_);
  ForS := Copy(ForS, a, Length(ForS) - a + 1);
  b := Pos(_T, ForS);
  if b > 0 then
    Result := Copy(ForS, 1, b - 1);
end;


end.
KpacaB4uk вне форума Ответить с цитированием
Старый 17.02.2011, 15:42   #2
Mifody
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 215
По умолчанию

Кукис менеджер где?
Помог с вопросом - тыркаем в весы, Вам не сложно, а мне приятно
Mifody вне форума Ответить с цитированием
Старый 17.02.2011, 17:23   #3
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Как обычно проблема в кукисах и IdHTTP. Они очень криво устанавливаются.

Код:
Cookie: name1=value;
Cookie: name2=value;
Cookie: name2=value;
Могу предложить небольшой модуль, который сам получает и отправляет куки.
IdHTTPEx Скачать можно тут http://kdcodes.blogspot.com/p/idhttpex.html

А вот пример авторизации:
Код:
uses
  IdHTTPEx;

procedure TForm1.Button1Click(Sender: TObject);
var
  http: TIdHTTPEx;
  sl: TSTringList;
  login, pass, s: string;
begin
  login := 'login';
  pass := 'password';
  sl := TSTringList.Create;
  Randomize;
  sl.Add('LOGIN_redirect=1&login=' + login + '&lreseted=1&pass=' + pass +
    '&preseted=1&x=' + IntToStr(Random(70)) + '&y=' + IntToStr(Random(10)));
  http := TIdHTTPEx.Create;
  http.HandleRedirects := False;
  try
    http.PostEx('http://www.heroeswm.ru/login.php', sl);
  except
    if http.ResponseCode = 302 then
    begin
      s := http.GetEx('http://www.heroeswm.ru/' + http.Response.Location);
    end
    else
      ShowMessage('Ошибка авторизации');
  end;
  if Pos('href="logout.php', s) <> 0 then
    ShowMessage('Ура! Мы вошли :)')
  else
    ShowMessage('Ошибка авторизации');
  sl.free;
 
end;
kangreon вне форума Ответить с цитированием
Старый 17.02.2011, 18:44   #4
KpacaB4uk
Новичок
Джуниор
 
Регистрация: 17.02.2011
Сообщений: 2
По умолчанию

А вот без куки как можно сделать?
KpacaB4uk вне форума Ответить с цитированием
Старый 17.02.2011, 21:55   #5
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

а ты дамой без ключа попасть можеш когда дверь закрыта?
bulldog5293 вне форума Ответить с цитированием
Старый 18.02.2011, 10:11   #6
Mifody
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 215
По умолчанию

Цитата:
а ты дамой без ключа попасть можеш когда дверь закрыта?
не, ну конечно можно, к примеру, с помощью лома , только потом выйти и снова зайти - не получится нормально , милиция может приехать
Помог с вопросом - тыркаем в весы, Вам не сложно, а мне приятно
Mifody вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторизация на сайте ... sxcine Работа с сетью в Delphi 3 18.08.2010 20:09
Авторизация на сайте doniyor Работа с сетью в Delphi 1 18.04.2010 13:54
Авторизация на сайте Kengie Помощь студентам 2 23.03.2010 21:28
Авторизация на сайте Niklan Общие вопросы Delphi 1 07.11.2009 00:39
Авторизация на сайте MultiBit Работа с сетью в Delphi 6 13.03.2009 18:45