質問

Delphiは初めてです。また、プログラミングの世界にもほとんど新しいものです。

IDHTTPモジュールを使用して、いくつかの簡単なポストソフトウェアになりました。

しかし、それを実行するとき、それは正しく動作しません。

この簡単なプログラムは、私のアカウントステータスをチェックします。

アカウントログインに正常にログインすると、「top.location =」を含むソースコードを返します。

ソースでは、ログインが失敗した場合、それは「top.location =」が含まれていません。

内部account.txtが1つ目をフォローし、3番目のアカウントがAlivedアカウントでした

ただし、最初のアカウントのみを確認できます。最初のアカウントの後、他のアカウントが確認できない

何が悪いのか分かりません

PH896011 PK1089

FSADFASDF DDDDDSS

PH896011 PK1089

以下はDelphiのソースです

誰かが私を助けてくれたら、とても感謝しました!

ユニットユニット1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    IdHTTP1: TIdHTTP;
    Memo1: TMemo;
    IdCookieManager1: TIdCookieManager;
    lstAcct: TListBox;
    result: TLabel;
    Edit1: TEdit;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    //procedure FormCreate(Sender: TObject);
    //procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    AccList: TStringList;
    IdCookie: TIdCookieManager;
    CookieList: TList;
    StartCnt: Integer;
    InputCnt: Integer;
    WordList: TStringList;
    WordNoList: TStringList;
    WordCntList: TStringList;
    StartTime: TDateTime;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var

  i: Integer;
  //temp: String;
  lsttemp: TStringList;
  sl : tstringlist;
  //userId,userPass: string;
begin
  InputCnt:= 0;
  WordList := TStringList.Create;
  CookieList := TList.create;
  IdCookie := TIdCookieManager.Create(self);


  if FileExists(ExtractFilePath(Application.ExeName) + 'account.txt') then
    WordList.LoadFromFile(ExtractFilePath(Application.ExeName) + 'account.txt');

  WordNoList:= TStringList.Create;
  WordCntList := TStringList.Create;
  lsttemp := TStringList.create;
  sl :=Tstringlist.Create;
try
  try
    for i := 0  to  WordList.Count -1 do
    begin
      ExtractStrings([' '], [' '], pchar(WordList[i]), lsttemp);
      WordNoList.add(lsttemp[0]);
      //ShowMessage(lsttemp[0]);
      WordCntList.add(lsttemp[1]);
      //ShowMessage(lsttemp[1]);

      sl.Add('ID='+ lsttemp[0]);
      sl.add('PWD=' + lsttemp[1]);
      sl.add('SECCHK=0');
      IdHTTP1.HandleRedirects := True;
      IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
      memo1.Text:=idhttp1.Post('http://user.buddybuddy.co.kr/Login/Login.asp',sl);

      if pos('top.location =',Memo1.Text)> 0 then

       begin
        application.ProcessMessages;
       ShowMessage('Alive Acc!');
        //result.Caption := 'alive acc'  ;
        sleep(1000);
        Edit1.Text := 'alive acc';
        lsttemp.Clear;
        Memo1.Text := '';
        //memo1.Text := IdHTTP1.Get('https://user.buddybuddy.co.kr/Login/Logout.asp');
        Sleep(1000);
       end;


      if pos('top.location =', memo1.Text) <> 1 then

      begin
      application.ProcessMessages;
      ShowMessage('bad');
      Edit1.Text := 'bad';
      //edit1.Text := 'bad';
      lsttemp.Clear;
      memo1.Text := '';
      sleep(1000) ;
      end;
      Edit1.Text := '';
    end;

  finally
    lsttemp.free;
  end;
  StartCnt := lstAcct.items.Count;
  StartTime := Now;

finally
  sl.Free;
end;
end;



end.
役に立ちましたか?

解決

直前:

sl.Add('ID='+ lsttemp[0]);

行う:

sl.Clear;

最初の実行では、「SL」は2つの投稿パラメーターを保持しますが、2回目の実行でクリアしない限り、パラメーターを追加し続けて、接続しようとしているHTTPサーバーを混乱させます!

それはあなたの唯一の問題ではないかもしれませんが、それは確かに問題の1つです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top