![]() |
am Webserver (PHP) anmelden
hallo,
möchte mich zur authentifizierung am webserver anmelden. was ist hier falsch? wie könnte eine request (fehlercode) für ein memo aussehen?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var params: TStringList; url: string; begin url:='http://www.test.de/index.php?action=login'; params := TStringList.Create; with params do begin Add('email='+'test@test.de'); Add('password='+'test'); end; idHTTP1.Post(url, params); params.free; end; |
AW: am Webserver (PHP) anmelden
Also als erstes: https.
Als zweites kein with. Dann
Delphi-Quellcode:
Wo der Fehler liegt kann ich dir trotzdem nicht sagen. Vielleicht akzeptiert dein Server das einfach nicht ohne HTTPs was ich nicht schlecht fände.
Add('email=test@test.de');
Add('password=test'); Abgesehen davon haben Logindaten nichts in einer ausführbaren Datei zu suchen. |
AW: am Webserver (PHP) anmelden
hallo,
https kommt später (SSL) Port 443 zum testen erstmal über port 80 So geht es auch nicht?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var params: TStringList; url: string; begin url:='http://www.test.de/index.php?action=login'; params := TStringList.Create; try params.Add('email=test@test.com'); params.Add('password=test'); idHTTP1.Post(url, params); finally params.free; end; end; |
AW: am Webserver (PHP) anmelden
Bist Du sicher, dass das Format so stimmt? Möglicherweise erwartet der Server ja auch ein JSON-Objekt im Payload. Hast Du es mal ohne Delphi z.B. Mit Postman versucht? Oder ist der Login gar dokumentiert?
|
AW: am Webserver (PHP) anmelden
PHP so sieht der Code aus...
Code:
if (isset($_SESSION['userSession'])!="") {
header("Location: home.php"); exit;
Code:
if (isset($_POST['btn-login'])) {
Code:
if (password_verify($password, $row['password']) && $count==1) {
$_SESSION['userSession'] = $row['user_id']; header("Location: home.php"); [ |
AW: am Webserver (PHP) anmelden
Code:
Wenn ich die Zeile richtig verstehe, dann wird nur eingeloggt, wenn das tatsächlich über eine Komponente (vermutlich Button) mit der id btn-login geht.
if (isset($_POST['btn-login'])) {
Das wird meiner Meinung nach sehr hacky und unsicher. Du musst btn-login also auch noch mitschicken. SSL sollte, selbst zum Testen, oberste Priorität haben. Du schickst schließlich heikle Daten übers WWW. |
AW: am Webserver (PHP) anmelden
Nunja, zumindest btn-login fehlt ja in Deinem Post-Request.
|
AW: am Webserver (PHP) anmelden
zum testen gehe ich doch über das Netzwerk ip, der port 80 ist doch im router nicht freigegeben!
habt aber natürlich recht! alles gut! wie sende ich ein btn-login über params? |
AW: am Webserver (PHP) anmelden
So wie die anderen Parameter auch, wie das aussehen soll kannst Du ja im PHP-Source nachlesen, der scheint Dir ja vorzuliegen.
|
AW: am Webserver (PHP) anmelden
Zitat:
|
AW: am Webserver (PHP) anmelden
Liste der Anhänge anzeigen (Anzahl: 1)
Fehlermeldung
HTTP/1.1 302 Moved Temporaily. :roll: |
AW: am Webserver (PHP) anmelden
Liste der Anhänge anzeigen (Anzahl: 1)
jetzt geht es! Danke :-)
|
Dieses Thema wurde am "16. Dec 2018, 22:39 Uhr" von "Luckie" aus dem Forum "Programmieren allgemein" in das Forum "Netzwerke" verschoben.
|
AW: am Webserver (PHP) anmelden
hallo, habe doch noch ein problem :-) wie fange ich die request Ok 200 ab?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject); var params: TStringList; url: string; begin url:='http://192.168.0.85/index.php?action=login'; params := TStringList.Create; try params.Add('btn-login=btn-login'); params.Add('email='+ Edit1.Text); params.Add('password='+ Edit2.Text); idHTTP1.Post(url, params); except on E: EIdHTTPProtocolException do if (idhttp1.ResponseCode = 200) then Showmessage('Test'); else Showmessage('Fehler'); params.free; end; end; |
AW: am Webserver (PHP) anmelden
Das HTTP Objekt hat eine Property dafür. Kleiner Tipp: Integer.
|
AW: am Webserver (PHP) anmelden
ok,
wieso wird immer der code 200 zurückgegeben? auch wenn die logindaten falsch sind?
Delphi-Quellcode:
var params: TStringList; url: string; code: integer; begin url:='http://192.168.0.39/index.php?action=login'; params := TStringList.Create; try params.Add('btn-login=btn-login'); params.Add('email='+ Edit1.Text); params.Add('password='+ Edit2.Text); idHTTP1.Post(url, params); finally code := idhttp1.ResponseCode; ShowMessage(IntToStr(code)); params.free; |
AW: am Webserver (PHP) anmelden
Das musst du den Programmierer des Webservers fragen.
|
AW: am Webserver (PHP) anmelden
Zitat:
Du solltest am besten mal den Wikipediaartikel zu http codes lesen.^ Ich würde es ganz anders machen. Ich würde eine php-Datei auf dem Server anlegen die einzig dafür da ist von deinem Programm angesprochen zu werden. Der übergibst du per POST Name und Password. Das Password am besten direkt schon gehasht so wie es auch in der Datenbank gehast ist. Dann prüfst du in der PHP-Datei, ob ein solcher Nutzer vorhanden ist und wenn ja, ob das Passwort stimmt. Wenn eins von beiden nicht zutrifft, ist die Verarbeitung beendet und du könntest mit echo irgendwas zurückgeben was du in deinem Programm auswertest. Ansonsten loggst du den Nutzer ein und kannst auch da irgendwas echo'n, damit dein Programm weiß was los ist. Eine direkte Verbindung zur Datenbank wäre natürlich am besten. Aber egal wie du es machst, es ist nicht sicher. |
AW: am Webserver (PHP) anmelden
Die meisten Webdienste geben bei einem formularbasierten Login den Code 200 zurück und trompeten den Login-Fehler lediglich über HTML heraus. Früher war das mal verpönt, heute aber Usus wegen der Spambots.
|
AW: am Webserver (PHP) anmelden
Könnte ich was an die idHTTP Komponente schicken?
Habt Ihr ein Beispiel für mich?
Code:
if (password_verify($password, $row['password']) && $count==1) { $_SESSION['userSession'] = $row['user_id']; header("Location: home.php"); ?????????????????????????????????? |
AW: am Webserver (PHP) anmelden
Guck mal wie ich das oben machen würde. So kannst du das PHP-Script "antworten" lassen.
|
AW: am Webserver (PHP) anmelden
Was meinst Du damit " Schaue oben" ? Bin schon total verwirrt:-)
Wie muss das Script aussehen bzw. der header (' '); oder ein flush(); ?????? |
AW: am Webserver (PHP) anmelden
Nix davon.
Eher so Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:36 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-2025 by Thomas Breitkreuz