hi,
dies wäre möglich, allerdings benutze ich lieber die IF Anweisung:
SELECT * FROM tabelle WHERE username = '$username' AND pw = '$pw';Weil man username = '$username' schreibt, wird auch zwischen Groß- und Kleinschreibung unterschieden, was ich nicht so schön finde, denn oft weiß ich nicht, ob ich jetzt den Namen Groß- oder Kleingeschrieben habe.
ob zwischen groß- und kleinschreibung unterschieden wird, hängt vom spaltentyp ab (und natürlich auch vom DB-system).
mysql unterscheidet bei seinen texttypen bei solchen vergleichen aber per default _nicht_ nach groß- und kleinschreibung.
Benutzt man LIKE würde ein weiteres Problem auftreten:
SELECT * FROM tabelle WHERE username LIKE '%' AND pw ='geheim';Als Username wurde ein % angegeben, und somit wird nur noch das PW überprüft => wenn jmd. das PW benutzt wird mal als dieser eingelogt.
von so einem unfug redet ja auch niemand :-)
Desweiteren ist diese Abfrage anfälliger gegenüber SQL Injection:
SELECT * FROM tabelle WHERE username LIKE 'andavos';' AND pw ='geheim';Also Username wurde: andavos'; angegeben. Und da dieser Eintrag in der DB vorhanden ist, werde ich als andavos (oder als Admin) eingelogt.
das passiert nur, wenn der programmierer - du - geschlampt hat.
diese _art_ der anfrage ist kein bisschen anfälliger als jede andere auch.
das sonderzeichen ' nicht zu entschärfen, _bevor_ es in die query eingesetzt wird, ist aber ein riesengroßer fehler des programmierers.
Auch wenn man sich gegen SQL Injection etc. schützt, so finde ich diese Variante einfach sicherer und auch komfortabler.
ich nicht.
P.S. Die meisten Anfänger wissen nicht was eine SQL Injection ist, und falls der Schutzt (magic_quotes) auf Off steht, kann man so ganz leicht den Login umgehen.
magic_quotes _ist_ nicht "der schutz" vor SQL injections.
gruß,
wahsaga
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }