echo $begrueszung;
Nicht unbedingt. Wenn du mit "Reg" nur die Erstregistrierung meinst, hast du zwar keine solchen Sonderzeichen in der DB stehen, sie können aber immer noch beim "alltäglichen" Login eingegeben werden, und dann fragst du (möglicherweise) ungeprüft/unmaskiert die DB ab...
hmm mit "Reg" meine ich wirklich die Erstregistrierung., Klar frage ich die beim Login ob der Benutzname in der DB wsteht oder nichtwenn nicht dann wird er auf eine FehlerSeite geleitet. Wenn der Name richtig ist, dann kommt er auf die Seite wo er hin soll. Oder was meinst du genau?
Ich vermute, dass du bei ebendiesem Abfragen dann sowas machst:
$username = $_POST['username'];
$sql = "SELECT userdaten FROM user WHERE username='$username'";
if (keine Datensätze)
fehler
else
willkommen(ersterdatensatz['vorname'])
Wenn nicht, dann hast du vielleicht doch richtig gemacht :-)
Wenn ja, dann ergibt eine Eingabe wie O'Conner einen Syntaxfehler, und ein
' or 1 or '
ergibt keinen, stattdessen gibt es alle Benutzer zurück, da die Bedingung insgesamt sich zu true auflöst und somit bei _jedem_ Datensatz wahr ist. Und da du möglicherweise von der Richtigkeit deiner Abfrage überzeugt bist, wertest du nur den ersten Datensatz aus und das könnte zufälligerweise auch der Admin sein, weil der sich meist zuerst einträgt...
Das umgehst du, indem du die Benutzereingaben mittels vorgesehener Funktion entschärfst:
$sql = "SELECT userdaten FROM user WHERE username='".mysql_real_escape_string($username)."'";
Was dein immer noch nicht funktionierendes "Beiträge" angeht, weiß ich momentan auch nicht weiter. Daher kann ich nur allgemeinen Rat erteilen:
Hast du mal error_reporting(E_ALL); an den Anfang deines Scripts gesetzt? Das zeigt noch ein paar Informationen zu möglichen Fehlern an.
Geh doch mal schrittweise durch dein Script und lass dir den Inhalt der Variablen anzeigen z.B. mit var_dump($varname); und vergleiche die Ausgabe mit dem von dir erwarteten Wert.
echo "$verabschiedung $name";