Einzelnen Beitrag anzeigen

RmX

Registriert seit: 24. Mai 2010
2 Beiträge
 
#1

idhttp Login mit Cookies

  Alt 24. Jul 2010, 13:24
Hey,

ich bin nun seit einer Woche daran die idhttp's zu verstehen. Jedoch hab ich ein Problem: Es geht nicht

Ich muss zugeben, der Code ist aus mehreren Schnipseln zusammenkopiert, und teils ergänzt.
Falls in dem Code iwas zuviel ist oder nicht so richtig reinpasst, dann schreibt das bitte, weil auf dem Indy gebiet bin ich noch neu...

Erstmal der Quelltext der seite:
Code:
<form action="login.php?do=login" method="post" onsubmit="md5hash(vb_login_password, vb_login_md5password, vb_login_md5password_utf, 0)">

</li>
            <li style="float:left;">
         <script type="text/javascript" src="clientscript/vbulletin_md5.js?v=403"></script>
         
            <fieldset id="logindetails" class="logindetails">
               <input type="text" class="textbox default-value" style="-moz-opacity:0.6; -khtml-opacity: 0.6; opacity: 0.6;" name="vb_login_username" id="navbar_username" size="10" accesskey="u" tabindex="101" value="Benutzername" onfocus="if (this.value == 'Benutzername'){this.value=''; this.style.color='black';}" onblur="if (this.value == '') {this.value='Benutzername'; this.style.color='#828282';}"/>
               <input type="password" class="textbox default-value" style="-moz-opacity:0.6; -khtml-opacity: 0.6; opacity: 0.6;" tabindex="102" name="vb_login_password" id="navbar_password" size="10" onfocus="this.style.color='black';" />
               <input type="submit" class="loginbutton" tabindex="104" value="Anmelden" title="Gib zur Anmeldung deinen Benutzernamen und dein Kennwort in die dafür vorgesehenen Textfelder ein oder klicke auf die 'Registrieren'-Schaltfläche, um ein neues Benutzerkonto anzulegen." accesskey="s" />
            </fieldset>            

            <input type="hidden" name="s" value="" />

            <input type="hidden" name="securitytoken" value="guest" />
            <input type="hidden" name="do" value="login" />
            <input type="hidden" name="vb_login_md5password" />
            <input type="hidden" name="vb_login_md5password_utf" />   

</li>

<li style="float:left;"><label for="cb_cookieuser_navbar"><input type="checkbox" name="cookieuser" value="1" id="cb_cookieuser_navbar" class="cb_cookieuser_navbar" accesskey="c" tabindex="103" checked="checked" /> <acronym style="border-bottom: 1px dotted #000000; cursor: help;" title="Du bleibst angemeldet, bis du dich selbst abmeldest.">Angemeldet bleiben?</acronym></label> </li>

 </form>
Nun zu meinem Delphi-Schnipsel-Code...der Teil nach dem // Seite wechseln etc. ist noch anders geschrieben, da nichteinmal der login funktioniert...

Delphi-Quellcode:
VAR IdHTTP:TIdHTTP; Params:TIdMultiPartFormDataStream;
    IdSSLIOHandlerSocketOpenSSL:TIdSSLIOHandlerSocketOpenSSL;
    IdCookieManager:TIdCookieManager; GetList:TStringList;
    ts: TStringList;
BEGIN
  IdHTTP1 := TIdHTTP.Create(NIL);
  GetList := TStringList.Create;
  IdCookieManager1 := TIdCookieManager.Create(NIL);
  //IdSSLIOHandlerSocketOpenSSL := TIdSSLIOHandlerSocketOpenSSL.Create(NIL);
  Params := TIdMultiPartFormDataStream.Create;
  ts := TStringList.Create;
  TRY
    //IdSSLIOHandlerSocketOpenSSL.SSLOptions.Method := sslvSSLv23;
    //IdSSLIOHandlerSocketOpenSSL.SSLOptions.Mode := sslmUnassigned;
    IdHTTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL;
    IdHTTP1.CookieManager := IdCookieManager; // Cookies man kann ja nie wissen
    IdHTTP1.AllowCookies := TRUE;
    IdHttp1.Request.UserAgent:='Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C)';
    IdHttp1.HandleRedirects := true;

    ts.Add('vb_login_username='+edit1.text);
    ts.Add('vb_login_password='+edit2.Text);

    memo12.Text := IdHTTP1.Post('http://www.meineseite.org/login.php', ts);
// memo12.Text := idhttp1.Get(idhttp1.URL.Path);
    ts.Free;

    // Login auswerten ob login geklappt hat z.b. von RS
    IF NOT (Pos('The Account has been found, but the password is incorrect.',memo12.Text) = 0)
      THEN BEGIN
        ShowMessage('The Account has been found, but the password is incorrect.');
        Exit;
      END;


    // wenn man noch eine Unterseite ansteuern möchte
    FreeAndNil(Params); // die Postparameterliste löschen
    Params := TIdMultiPartFormDataStream.Create;

    // Seite wechseln etc.

    Params.AddFormField('subject', UTF8Encode(edit6.Text));
    Params.AddFormField('message', UTF8Encode(memo1.Text));
    GetList.Text := IdHTTP1.Post('http://www.meineseite.org/newthread.php?do=newthread&f=16', Params);

  FINALLY // Freigeben
    FreeAndNil(Params);
    IdSSLIOHandlerSocketOpenSSL.Free;
    IdCookieManager.Free;
    GetList.Free;
    IdHTTP.Free;
  END;

Ich hoff echt, ihr könnt mir helfen und bitte nicht nur Links posten...Ich versteh vom idhttp noch nicht so viel, bzw will es versuchen zu verstehen...

Vielen Dank!!

Geändert von RmX (24. Jul 2010 um 13:34 Uhr)