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!!