Hallo dedlfix,
Du übernimmst den per POST gesendeten Wert direkt? Was wäre, wenn jemand für $_POST['nick']
meinnickname'; DELETE * FROM users;
eingibt? Dann wird das Query zu
SELECT * FROMuser
WHEREnick
='meinnickname'; DELETE * FROM users;
und die ganze Tabelle wird gelöscht (zum Beispiel, da geht noch einiges mehr).Nein, da geht nichts mehr. Schon seit einiger Zeit ist es nicht mehr möglich, mehrere Befehle mit einem mysql_query()-Aufruf abzusetzen.
Ich erinnere mich...
Link des Tages: mysql_escape_string()
Für MySQL nimmt man dafür die Funktion mysql_real_escape_string(). Das von dir vorgeschlagene mysql_escape_string() ist veraltet und soll nicht mehr genommen werden.
Wusst ich noch garnicht. Danke für den Hinweis.
if ($pass_sql==$pass) { //Wenn pass richtig, dann Kekse setzen
setcookie( "nick", $nick);
setcookie( "pass", $pass);
Du speicherst das Passwort direkt, unverschlüsselt als Cookie? Das kann dann jeder lesen!
Link des Tages: md5()
Der "Link des Tages" ist schon verbraucht.
Der is für morgen (bzw schon heute) ;-)
Was willst du mit dem md5() anstellen? Da fehlt doch noch das passende Gegenstück in der Datenbank dazu. Wo ist außerdem der Unterschied, ob man ein Passwort mit einem Passwort oder einen MD5-String mit einem MD5-String vergleicht? Es wäre erst einmal zu klären, wozu Nick und Passwort aufgehoben werden. Dann kann man ein dafür passenderes Konzept vorschlagen.
Auf jeden Fall sollte (eher darf) das Passwort nicht unverschlüsselt per Cookie gespeichert werden. Und man sollte es auch in der Datenbank nur verschlüsselt speichern. (Dann gibt es auch keine Probleme beim Vergleichen)
Und wenn jemand kein Javascript aktiviert hat? Dann wird er weder weitergeleitet noch sieht er die Meldung.
Link des Tages: Meta Refresh
Der "Link des Tages" ist schon verbraucht. Das Ausführen von Meta-Refresh kann man dem Browser auch verbieten. Außerdem wird dadurch der Back-Button-Mechanismus kaputt gemacht. Und warum soll man den Ersatz (http-equiv=HTTP-Äquivalent) nehmen, wenn dank PHP das Original in Form eines "echten" HTTP-Mechanismus vorhanden ist, so solch eine Weiterleitung unbedingt erforderlich ist: header('Location: vollständige URL');
Dann kann er aber keine Meldung anzeigen. Wenn er Meta-Refresh z.B. auf 10 Sekunden setzt und (zumindest auch mit HTML) "Sie sind angemeldet" hinschreibt und daneben einen Link "Weiter...", geht das ohne Probleme.
Viele Grüße aus Freiburg,
Marian
Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) n4:( ss:) de:] js:| ch:? mo:} zu:)
<!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->