AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Login Webservice Delphi

Ein Thema von RomeoAnfänger · begonnen am 8. Jul 2020 · letzter Beitrag vom 16. Jul 2020
Antwort Antwort
Seite 1 von 2  1 2   
RomeoAnfänger

Registriert seit: 29. Mai 2020
23 Beiträge
 
#1

Login Webservice Delphi

  Alt 8. Jul 2020, 07:51
Hallo,
ich habe den Login Code Webservice für eine Mobil App implementiert und beim Ausführen ,reagiert den Code überhaupt nicht .Ich benutze NexusDB Datenbank Server und von der App die eingegeben Benutzername und Passwort sollen mit den Benutzernamen und Passwörtern von NexusDB vergleichen und wenn die Daten identisch sind ,dann bekommt der Appsuser eine Nachricht (Erfolgreich eingeloggt ) und dann öffnet sich eine neue Seite .Ich weiß nicht ,was ich falsch gemacht habe ? Könnte ihr mir helfen ? Wer das Problem löst ,krieg von mir eine volle Bierkiste.
Danke für ihre Hilfe .

var
Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);

begin
try
nxQuery1.SQL.Text:='select * from Mitarbeiter where Benutzername=: p1 and Passwort=: p2';
nxQuery1.Params.ParamByName('p1').Value := edit1.Text;
nxQuery1.Params.ParamByName('p2').Value := edit2.Text;
nxQuery1.ExecSQL;

nxQuery1.Open;
if (Edit1.Text = nxQuery1.FieldByName('Benutzername').AsString) and
(Edit2.Text = nxTable1.FieldByName('Passwort').AsString)
then
begin
GroupBox1.Visible:= false;
//SaveTimeClient.Show;//Funktioniert auch nicht .Deshalb habe ich es auskommentiert. Hier wir das Hauptmenu //geöffnet ,wenn der User richtig eingellogt wird ,d.h der User hat zugrifft auf den Server auch .
//Webservices_Login_Server.Hide;// Hier wird die Seite Login versteckt oder nicht angezeigt.

end;
except
else showmessage ('Ungültiger Benutzername oder Passwort !');

end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.119 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Login Webservice Delphi

  Alt 8. Jul 2020, 08:07
Wo wird der Code denn ausgeführt, auf dem Server oder in der App? Wie dem auch sei, ich verstehe das Doppelmoppel eh nicht und würde das eher so machen:
Delphi-Quellcode:
nxQuery1.SQL.Text:='select * from Mitarbeiter where Benutzername=: p1 and Passwort=: p2';
nxQuery1.Params.ParamByName('p1').AsString := edit1.Text;
nxQuery1.Params.ParamByName('p2').AsString := edit2.Text;
nxQuery1.Open;
// Eof -> Kein entsprechender Datensatz gefunden, Anmeldung ungültig
if nxQuery1.Eof then
  Showmessage ('Ungültiger Benutzername oder Passwort !')
else
  GroupBox1.Visible:= false;
nxQuery1.Close;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
RomeoAnfänger

Registriert seit: 29. Mai 2020
23 Beiträge
 
#3

AW: Login Webservice Delphi

  Alt 8. Jul 2020, 11:30
Wo wird der Code denn ausgeführt, auf dem Server oder in der App? Wie dem auch sei, ich verstehe das Doppelmoppel eh nicht und würde das eher so machen:
Delphi-Quellcode:
nxQuery1.SQL.Text:='select * from Mitarbeiter where Benutzername=: p1 and Passwort=: p2';
nxQuery1.Params.ParamByName('p1').AsString := edit1.Text;
nxQuery1.Params.ParamByName('p2').AsString := edit2.Text;
nxQuery1.Open;
// Eof -> Kein entsprechender Datensatz gefunden, Anmeldung ungültig
if nxQuery1.Eof then
  Showmessage ('Ungültiger Benutzername oder Passwort !')
else
  GroupBox1.Visible:= false;
nxQuery1.Close;
Der Code wird auf dem Server ausgeführt .Okay Danke für deine Korrektur.Ich werde den Code ändern und gucken ,ob es klappt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.119 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Login Webservice Delphi

  Alt 8. Jul 2020, 11:41
Oh, ich sehe gerade: zwischen dem Doppelpunkt und dem eigentlichen Bezeichner des Parameters im SQL-String darf kein Leerzeichen stehen. Es muss also heißen
nxQuery1.SQL.Text:='select * from Mitarbeiter where Benutzername=:p1 and Passwort=:p2';
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
RomeoAnfänger

Registriert seit: 29. Mai 2020
23 Beiträge
 
#5

AW: Login Webservice Delphi

  Alt 8. Jul 2020, 12:28
Wo wird der Code denn ausgeführt, auf dem Server oder in der App? Wie dem auch sei, ich verstehe das Doppelmoppel eh nicht und würde das eher so machen:
Delphi-Quellcode:
nxQuery1.SQL.Text:='select * from Mitarbeiter where Benutzername=: p1 and Passwort=: p2';
nxQuery1.Params.ParamByName('p1').AsString := edit1.Text;
nxQuery1.Params.ParamByName('p2').AsString := edit2.Text;
nxQuery1.Open;
// Eof -> Kein entsprechender Datensatz gefunden, Anmeldung ungültig
if nxQuery1.Eof then
  Showmessage ('Ungültiger Benutzername oder Passwort !')
else
  GroupBox1.Visible:= false;
nxQuery1.Close;
Dein Code ist richtig ,aber mein Login webservice wird nicht ausgefürt . Ich vermute,das Problem kommt wahrscheinlich von ''MyServiceImpl'' :

function TMyService.Zeitstempel(const Value: TDateTime): Boolean; stdcall;
begin
{ TODO : Methode Zeitstempel implementieren }
Result := true;
ShowMessage('Zeit:'+ FormatDateTime('dd.mm.yyyy',Value));

end;
//Die Funktion Login wird von dieser unten angenommen .
function TMyService.Login(const Benutzername , Passwort: String): String; stdcall;

begin
Result := true;
ShowMessage('Zeit:');
end;
______________________
Die Funktion Zeitstempel ist läuft immer ,wenn ich den Knopf 'Start' drücken und meine Funktion Login nicht .Ich habe leider keine Ahnung ,wie ich den Code in dieser Funktion schreiben kann .
  Mit Zitat antworten Zitat
RomeoAnfänger

Registriert seit: 29. Mai 2020
23 Beiträge
 
#6

AW: Login Webservice Delphi

  Alt 8. Jul 2020, 12:31
Oh, ich sehe gerade: zwischen dem Doppelpunkt und dem eigentlichen Bezeichner des Parameters im SQL-String darf kein Leerzeichen stehen. Es muss also heißen
nxQuery1.SQL.Text:='select * from Mitarbeiter where Benutzername=:p1 and Passwort=:p2';
Ach so . ich korrigiere den Fehler sofort und gebe dir dann auch Bescheid


ich habe mir noch einmal alles angeschaut und ich definitiv sicher,dass das Problem wahrscheinlich von
''MyServiceImpl'' kommt :

function TMyService.Zeitstempel(const Value: TDateTime): Boolean; stdcall;
begin
{ TODO : Methode Zeitstempel implementieren }
Result := true;
ShowMessage('Zeit:'+ FormatDateTime('dd.mm.yyyy',Value));

end;
//Die Funktion Login wird von dieser unten angenommen .
function TMyService.Login(const Benutzername , Passwort: String): String; stdcall;

begin
Result := true;
ShowMessage('Zeit:');
end;
______________________
Die Funktion Zeitstempel ist läuft immer ,wenn ich den Knopf 'Start' drücken und meine Funktion Login nicht .Ich habe leider keine Ahnung ,wie ich den Code in dieser Funktion schreiben kann .

Geändert von RomeoAnfänger ( 8. Jul 2020 um 20:17 Uhr)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
1.183 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Login Webservice Delphi

  Alt 8. Jul 2020, 22:05
Ich glaube auch, dass das ExecSQL fehl am Platz war/ist. Ich denke das wäre für SQL Statements zu nutzen die nichts zurückliefern wie Insert, Delete und Update.

Für Statements wie Select die eine Ergebnismenge zurückliefern ist das Open das richtige.
  Mit Zitat antworten Zitat
RomeoAnfänger

Registriert seit: 29. Mai 2020
23 Beiträge
 
#8

AW: Login Webservice Delphi

  Alt 9. Jul 2020, 22:26
Ich glaube auch, dass das ExecSQL fehl am Platz war/ist. Ich denke das wäre für SQL Statements zu nutzen die nichts zurückliefern wie Insert, Delete und Update.

Für Statements wie Select die eine Ergebnismenge zurückliefern ist das Open das richtige.

ich habe auch ExecSQL hingefügt und es sieht so aus jetzt.
begin

nxQuery1.SQL.Text:='select * from Mitarbeiter where Benutzername=:p1 and Passwort=:p2';
nxQuery1.Params.ParamByName('p1').Value := edit1.Text;
nxQuery1.Params.ParamByName('p2').Value := edit2.Text;
nxQuery1.Open;
nxQuery1.ExecSQL;
if nxQuery1.Eof then
Showmessage ('Ungültiger Benutzername oder Passwort !')
else
GroupBox1.Visible:= false;
nxQuery1.Close;

end;

end.

Aber wie gesagt , das Problem kommt von meinem 'MyServiceImpl'.Da habe ich keinen Code für das Web service und weiß nicht genau wiw ich es für die Funktion-Login implementieren kann .
Vielleicht kann mir Jemanden da helfen :
//Die Funktion Authentifizierung wird von dieser unten angenommen .
function TMyService.Authentifizierung(const Benutzername , Passwort: String): String; stdcall;

begin

// schauen ,ob der Benutzer schon eingeloggt ist

ShowMessage('');
end;
  Mit Zitat antworten Zitat
ConstantGardener

Registriert seit: 24. Jan 2006
Ort: Halberstadt
352 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Login Webservice Delphi

  Alt 9. Jul 2020, 22:58
...das ExecSQL ist überflüssig! Das open öffnet die Tabelle und man kann dann mit den Daten arbeiten.

Davon mal ab verstehe ich nicht so wirklich was du da machst. Wenn das Programm auf dem Server läuft und du ShowMessage benutzt wird das auch auf dem Server ausgegeben, nicht auf dem Client.
Andreas Schachtner
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
280 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Login Webservice Delphi

  Alt 10. Jul 2020, 14:41
Ich habe den Eindruck du machst auf den Server ein normales Delphi Programm mit GUI Elementen. Das kann und wird so nie funktionieren. Mach eine WebBroker Anwendung die du dann per IIS nutzt. Für so was Simples würde ich eine CGI-Exe erstellen, die dann viel einfacher zu administrieren ist als eine ISAPI-DLL. Wenn du kein IIS auf dem Server hast, kanst du auch eine WebBroker Webserveranwendung erstellen. Diese enthält dann die nötigen Webserverfunktionen, für die normalerweise IIS zuständig ist, allerdings nur sehr "primitiv".

Allfällige Fehler und Antworten musst du dann als HTML-Code retour geben. Du darfst da keine Formen und Dialoge nutzen, da das so zu einer "hängenden" Webabfrage führt, die dann irgendwann mit eine Timeout retour kommt. Schliesslich sitzt niemand am Server und beantwortet die Dialoge. Exception werden auch als Webantworten mit Statuscode 500 an den Browser/dein Client zurückgeschickt.

Das geht mit dem Delphi WebBroker Framework super einfach und ist für deine Aufgabe die einfachste und beste Lösung. Lies dir da mal die Doku dazu durch, wenn du Delphi Webbroker noch nie genutzt hast.

Geändert von Rolf Frei (10. Jul 2020 um 15:10 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf