AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MYSQL Login Script

Ein Thema von 1carter1 · begonnen am 27. Dez 2009 · letzter Beitrag vom 28. Dez 2009
Antwort Antwort
Seite 1 von 2  1 2      
1carter1

Registriert seit: 22. Nov 2009
30 Beiträge
 
#1

MYSQL Login Script

  Alt 27. Dez 2009, 11:46
Datenbank: Mysql • Version: 5.x • Zugriff über: C-Api
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;
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

Re: MYSQL Login Script

  Alt 27. Dez 2009, 11:49
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
Frederic Kerber
  Mit Zitat antworten Zitat
1carter1

Registriert seit: 22. Nov 2009
30 Beiträge
 
#3

Re: MYSQL Login Script

  Alt 27. Dez 2009, 12:02
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
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#4

Re: MYSQL Login Script

  Alt 27. Dez 2009, 12:05
Hai 1carter1,

einen Fehler sehe ich schon einmal:

  query := 'SELECT username,password FROM user WHERE username = '+username.Text+ 'AND password = '+password.text; Hier wird AND password direkt an den username gehängt. Ich mache solche Konstruktionen immer über die Delphi-Referenz durchsuchenFormat Funktion. Das ist leichter zu lesen finde ich.
 query := Format('SELECT username,password FROM user WHERE username = %s AND password = %s',[username.Text, password.text]); Wenn Du den String der SQL-Anweisung jetzt noch als const deklarierst ist der eigentliche Sourcecode noch einfach zu lesen.
Delphi-Quellcode:
const
  UserQuery : string = 'SELECT username,password FROM user WHERE username = %s AND password = %s
begin
.
.
  query := FORMAT(UserQuery[username.Text, password.text]);
.
.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#5

Re: MYSQL Login Script

  Alt 27. Dez 2009, 12:18
Siehe dazu auch: http://xkcd.com/327/

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:
nix'; DROP TABLE user; --
eingeben und Deine Datenbank ist am allerwertesten.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: MYSQL Login Script

  Alt 27. Dez 2009, 12:43
Zitat von Phoenix:
Wir lernen daraus: NIEMALS einen SQL-String selber zusammenbauen. Für so etwas gibt es Parameter.
Wenn man die Werte davor überprüft, dann kann man sie auch getrost manuell zusammen setzen (escapen etc.). Das hier im vorliegenden Fall jedoch nicht so.
Aber du hast Recht, mit Parametern ist es schöner.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#7

Re: MYSQL Login Script

  Alt 27. Dez 2009, 12:48
Ist die Verwendung von Parametern bei seiner LIB denn möglich?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von anse
anse

Registriert seit: 30. Okt 2006
Ort: Neuenkirchen
194 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: MYSQL Login Script

  Alt 27. Dez 2009, 23:47
Zitat von Phoenix:
... nur
Code:
nix'; DROP TABLE user; --
eingeben und Deine Datenbank ist am allerwertesten.
Das stimmt nicht, auch wenn es gelegentlich so dargestellt wird - so ein SQL quittiert mysql_real_query() mit einem SQL Fehler, denn man kann nicht so einfach ein SQL Batch als Query abschicken. Wichtig ist einzig das korrekte Escapen von Benutzer-Eingaben.
Ansgar Becker
https://www.heidisql.com
Wenn du loslässt, hast du zwei Hände frei.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#9

Re: MYSQL Login Script

  Alt 28. Dez 2009, 00:28
@1carter1:
Hast Du die Datei libmysql.dll in Deinem Windows/System32 oder in Deinem Programmverzeichnis liegen ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
1carter1

Registriert seit: 22. Nov 2009
30 Beiträge
 
#10

Re: MYSQL Login Script

  Alt 28. Dez 2009, 11:00
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz