![]() |
idHTTPServer : Einloggen
Hi !
Mein Server funtkioniert soweit schon ganz gut ! Doch wie kann kann ich realisieren, dass sich Benutzer nur mit gültigem Passwort + Nutzername einloggen können ? Ich habe diesen Code :
Delphi-Quellcode:
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo); Var Stream: TFilestream; TheString : String; begin if ARequestInfo.Document = '/' then begin try if ARequestinfo.Username = 'Assun' then begin inc(i); Caption := ('Bereits' + IntToStr(i) + 'Aufrufe'); AResponseInfo.ContentType := 'text/html'; Stream := TfileStream.Create('Admin/test.htm', fmOpenRead or fmShareDenyWrite ); AResponseInfo.ContentStream := Stream; setlength(TheString, stream.size); stream.Read(TheString[1], stream.size); end except Exit; end; end else if ARequestInfo.Document = '/test.jpg' then begin try AResponseInfo.ContentType := 'image/jpeg'; Stream := TfileStream.Create('Admin/test.jpg', fmOpenRead or fmShareDenyWrite ); AResponseInfo.ContentStream := Stream; except Exit; end; end; Gruß Assun |
Re: idHTTPServer : Login Identifizierung, wie realisieren ?
habe nun etwas code. doch ich weiss nicht wie ich den Namen übergeben soll.
Weiss da jemand was ? |
Re: idHTTPServer : Login Identifizierung, wie realisieren ?
Dann zeig doch mal deinen Code.
Was meinst du mit übergeben ? Von der HTML-Seite zu deinem Programm ? Stichwort: Submit gruss |
Re: idHTTPServer : Login Identifizierung, wie realisieren ?
Der Code steht oben.
Reicht es einfach die Felder abzusenden ?? Wie muss ich die Felder dann benennen ? |
Re: idHTTPServer : Login Identifizierung, wie realisieren ?
du musst
Delphi-Quellcode:
setzen. Damit bringt der Client (InternetExplorer etc.) einen Passwortdialog hoch wie man es von htaccess gewöhnt ist. Und auf diese Art und weiße kommt dann auch das Passwort zum Server.
AResponseInfo.AuthRealm
|
Re: idHTTPServer : Login Identifizierung, wie realisieren ?
Du kannst es auch ganz normal wie ein Formular senden, die ergebnisse stehen dann in
Delphi-Quellcode:
gruss
ARequestInfo.params
|
Re: idHTTPServer : Login Identifizierung, wie realisieren ?
Delphi-Quellcode:
geht nicht. da bringr er mir "inkompatible Typen, String und TStrings"
If ARequestInfo.params := 'Assun' then.........
nur wie soll ich da TStrings einbauen ? Und wie kann ich realisieren, dass nach 2 werten gefragt wird ? also so in etwa
Delphi-Quellcode:
?
if ARequestInfo.params := 'Assun' and 'meinpasswort' then....
:confused: |
Re: idHTTPServer : Login Identifizierung, wie realisieren ?
params ist vom Typ TStrings also
Delphi-Quellcode:
Die Anzahl der Parameter bekommst du mit
ARequestInfo.params[0]
ARequestInfo.params[1] ...
Delphi-Quellcode:
ARequestInfo.paramcount-1
|
Re: idHTTPServer : Login Identifizierung, wie realisieren ?
ok, dank Mr.Knogges Hilfe (THX !!!) geht das einloggen nun !!
mit diesem Code :
Delphi-Quellcode:
und
function Parse(char, s: string; count: integer): string;
var i: Integer; t: string; begin if s[length(s)] <> char then s := s + char; for i := 1 to count do begin t := copy(S, 0, pos(char, s) - 1); s := copy(s, pos(char, s) + 1, length(s)); end; result := t; end;
Delphi-Quellcode:
Meine Bitte : geht bitte alle mal auf
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo); Var Stream: TFilestream; TheString : String; i, Anzahl : Integer; begin if ARequestInfo.Document = '/' then begin try begin AResponseInfo.ContentType := 'text/html'; Stream := TfileStream.Create('Admin/login.htm', fmOpenRead or fmShareDenyWrite ); AResponseInfo.ContentStream := Stream; setlength(TheString, stream.size); stream.Read(TheString[1], stream.size); Anzahl := ARequestInfo.Params.Count; for i := 1 to Anzahl do if (parse('=', ARequestInfo.params[0], 1) = 'submit') and (parse('=', ARequestInfo.params[0], 2) = '1') then if (parse('=', ARequestInfo.params[1], 1) = 'username') and (parse('=', ARequestInfo.params[1], 2) = 'Assun') then if (parse('=', ARequestInfo.params[2], 1) = 'password') and (parse('=', ARequestInfo.params[2], 2) = 'test') then begin AResponseInfo.ContentType := 'text/html'; Stream := TfileStream.Create('Admin/test.htm', fmOpenRead or fmShareDenyWrite ); AResponseInfo.ContentStream := Stream; setlength(TheString, stream.size); stream.Read(TheString[1], stream.size); userok := true; end; end except Exit; end; end; end; end. ![]() Um euch normal einzuloggen : Name = Assun Passw = test Und noch ne Frage : wie kann ich erreichen, dass das passw nicht mehr im Browser oben inner Adresszeile angezeigt wird ? Vielen Dank für eure Mühe ! Gruß Assun Edit // Und wie immer bitte Rückmeldung geben. also "Geht das einloggen?", "habt ihr ne Sicherheitslücke gefunden?" oder "wisst ihr wie ich das umgehen kann dass man inner Adresszeile den Namen + passw sieht?" ;-) |
Re: idHTTPServer : Login Identifizierung, wie realisieren ?
Hat jemand geschafft auf test.htm zuzugreifen ohne sich einzuloggen ?
Oder hat jemand ne Idee wie man es umgehen kann dass das passw in der Adresszeile angezeigt wird ? ![]() |
Re: idHTTPServer : Login Identifizierung, wie realisieren ?
hallo
ersetze
Code:
durch
method="get"
Code:
und das Passwort wird in der Adresszeile nicht mehr angezeigt.
method="post"
Grüsse Luki |
Re: idHTTPServer : Login Identifizierung, wie realisieren ?
Perfekt :thumb: funktioniert einwandfrei !
Hat es jemand geschafft das Login zu durchbrechen und anderst auf test.htm zu kommen ? |
Re: idHTTPServer : Login Identifizierung, wie realisieren ?
Wenn du es dir ein wenig einfacher machen möchtest, dann setz mal ParseParams auf True und du kannst auf die Werte wie folgt zugreifen:
Delphi-Quellcode:
Ausserdem gibt es noch eine richtige HTTP Authentifizierung...
if ((ARequestInfo.Params.Values['user'] = 'admin') and (ARequestInfo.Params.Values['pass'] = 'test')) then
begin // Blubb usw... end;
Delphi-Quellcode:
if ((ARequestInfo.AuthUsername <> 'admin') or (ARequestInfo.AuthPassword <> 'pass')) then
begin AResponseInfo.ContentText := 'Bitte Admin-Benutzernamen und Kennwort eingeben...'; AResponseInfo.AuthRealm := 'Admin Bereich'; exit; end; Edit: Blödsinn beseitigt -g- Edit2: Du brauchst übrigens auch nicht immer einen Stream sondern kannst einfach ContentText setzen, das hat den gleichen Effekt ;> Edit3: Nochmal Blödsinn beseitigt -.- |
Re: idHTTPServer : Problem mit HTML Datei !
Habe ein kleines Problem mit der HTML Datei !
Die neue HTML File : Zitat:
Zitat:
Beim absenden geschieht einfach nichts mehr :-( Was ist daran falsch ? |
Re: idHTTPServer : Problem mit HTML Datei !
Du musst die Form erst NACH der Tabelle schließen und nicht davor ;>
|
Re: idHTTPServer : Problem mit HTML Datei !
:oops: THX ^^ jetzt gehts wida
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz