Hallo Florian,
ich habe einen Login in PHP geschrieben, der die Userdaten und Passwörter aus einer MySQL-Datenbank herausliest.
$row=mysql_fetch_object(mysql_query("SELECT * FROM
user
WHEREnick
='".$nick."'"));
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 * FROM user
WHERE nick
='meinnickname'; DELETE * FROM users;
und die ganze Tabelle wird gelöscht (zum Beispiel, da geht noch einiges mehr).
Link des Tages: mysql_escape_string()
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()
//und Ausgabe der html-datei
echo <<<AUSGABE
<html>
Und wo ist die Doctype Definition?
<script type="text/javascript">
document.location="chat.php";
alert ('Anmeldung erfolgreich! \nDu wirst weitergeleitet.');
Und wenn jemand kein Javascript aktiviert hat? Dann wird er weder weitergeleitet noch sieht er die Meldung.
Link des Tages: Meta Refresh
(wahrscheinlich wird das alert nie funktionieren, weil nix mehr gemacht wird, wenn du schon die Seite gewechselt hast.
<html>
Und wo... Ich wiederhole mich.
alert ('Passwort oder Nick falsch.\nBitte gebe die Daten erneut ein.');
document.location="index.php";
Und wenn... Ich wiederhole mich.
Hier hingegen wird, wenn Javascript aktiviert ist, das alert auch angezeigt.
Wo liegt mein Fehler?
Lass dir mal das erzeugte Query ausgeben, dann siehst du, wenn irgendwas nicht stimmt.
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]-->