![]() |
Datenbank: Mysql • Version: 5.x • Zugriff über: C-Api
MYSQL Login Script
Hi,
Ich versuche ein Loginscript zu realisieren, es gibt 2 input felder, eins heißt username das andere Password und dann noch einen Login button, nun hab ich in der datenbank die spalten username und password, diese möchte ich mit der eingabe vergleichen und wenns ne übereinstimmung gibt will ich erstmal nur ne showmessage anzeigen lassen, dass die daten korrekt sind, ich komm leider nicht wirklich weiter, hier ist mal mein ansatz:
Delphi-Quellcode:
Con := mysql_init(nil);
if Assigned(Con) then try if Assigned(mysql_real_connect(Con, host, user, pass, db, 3306, nil, 0)) then begin query := 'SELECT username,password FROM user WHERE username = '+username.Text+ 'AND password = '+password.text; mysql_real_query(Con,PChar(query), Length(query)); if Assigned(Res) then begin Res := mysql_store_result(Con); if (mysql_num_rows(Res) =1) then showmessage('Daten Korrekt'); if (mysql_num_rows(Res) <>1) then showmessage('Daten Falsch'); end; end finally mysql_close(Con); end; |
Re: MYSQL Login Script
Hi!
Klappt dein Code gar nicht (Fehlermeldungen?) oder bekommst du nur nicht, was du haben willst? Vllt. ist password ein Problem, weil es ein Schlüsselwort ist? Grüße, Frederic |
Re: MYSQL Login Script
das wäre ne idee, ich teste es mal eben aus und edite dann
//Edit nein geht auch nicht, wenn ich den namen änder, delphi spuckt ne exception aus, in der aber nicht wirklich was steht, sondern einfach nur adress violation libmysql.dll usw |
Re: MYSQL Login Script
Hai 1carter1,
einen Fehler sehe ich schon einmal:
Delphi-Quellcode:
Hier wird AND password direkt an den username gehängt. Ich mache solche Konstruktionen immer über die
query := 'SELECT username,password FROM user WHERE username = '+username.Text+ 'AND password = '+password.text;
![]()
Delphi-Quellcode:
Wenn Du den String der SQL-Anweisung jetzt noch als const deklarierst ist der eigentliche Sourcecode noch einfach zu lesen.
query := Format('SELECT username,password FROM user WHERE username = %s AND password = %s',[username.Text, password.text]);
Delphi-Quellcode:
const
UserQuery : string = 'SELECT username,password FROM user WHERE username = %s AND password = %s' begin . . query := FORMAT(UserQuery[username.Text, password.text]); . . |
Re: MYSQL Login Script
Siehe dazu auch:
![]() Wir lernen daraus: NIEMALS einen SQL-String selber zusammenbauen. Für so etwas gibt es Parameter. Bei Deinem Code muss man als Benutzernamen nur
Code:
eingeben und Deine Datenbank ist am allerwertesten.
nix'; DROP TABLE user; --
|
Re: MYSQL Login Script
Zitat:
Aber du hast Recht, mit Parametern ist es schöner. |
Re: MYSQL Login Script
Ist die Verwendung von Parametern bei seiner LIB denn möglich?
|
Re: MYSQL Login Script
Zitat:
|
Re: MYSQL Login Script
@1carter1:
Hast Du die Datei libmysql.dll in Deinem Windows/System32 oder in Deinem Programmverzeichnis liegen ? |
Re: MYSQL Login Script
es ist total irrelevant wo die datei liegt, entweder im sys32 oder im programmordner, habs auch schon lange hinbekommen, der query muss so aussehen:
query := 'SELECT username,password FROM user WHERE username = "'+username.Text+ '" AND password = "'+password.text+'"'; mfg carTer |
Re: MYSQL Login Script
Zitat:
Delphi-Quellcode:
(Falls die aktuelle mysql.pas genutzt wird.)
query := 'SELECT NULL FROM user WHERE username = ' + QuoteString(username.Text) +
' AND password = ' + QuoteString(password.text); |
Re: MYSQL Login Script
Anderer Vorschlag:
Delphi-Quellcode:
Den Vergleich kannst Du dann einfach über die Rückmeldung machen.
Query.SQL.Text := 'SELECT username,password FROM user WHERE ' +
'username = :username AND ' + 'password = :password'; Query.ParamByName('username').AsString := Username.Text; Query.ParamByName('password').AsString := Password.Text; Query.Active := True;
Delphi-Quellcode:
If Query.RecordCount <> 1
then... else... PS: Wo führst Du den SQL-Befeh eigentlich aus? (Letzte Zeile im obigen Bsp.) |
Re: MYSQL Login Script
@blawen: Geht gar nicht, weil die C-API keine Parameter kennt. Dies geht nur mit dem DB-Zugriff über eine der vielen Delphi-Klassen. Die C-API ist eine Funktionssammlung, die keine Klassen benutzt.
|
Re: MYSQL Login Script
Delphi-Quellcode:
hier wird der befehl ausgeführt.
mysql_real_query(Con,PChar(query), Length(query));
|
Re: MYSQL Login Script
Zitat:
Zitat:
|
Re: MYSQL Login Script
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 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