echo $begrüßung;
$db_user=@mysql_connect("localhost","username","passwort") or die ("Verbindung zu Mysql gescheitert!");
Willst du gar nicht wissen, warum die Verbindung gescheitert ist? Oder willst du nur nicht die genaue Fehlermeldung dem Besucher mitteilen, weil der
a) damit sowieso nichts anfangen kann und
b) keine Systeminterna erfahren soll, die er im Zweifelsfall gegen dein System verwenden kann?
Wenn du die beiden Fragen mit "doch" und mit "ja" beantwortest, vermisse ich eine Log-Möglichkeit. Außerdem sieht das Sterbenlassen eines Scripts alles andere als schön aus.
@mysql_select_db("datenbank",$db_user) or die ("Datenbankzugriff gescheitert!");//Verbindung zur Tabelle User
s.o.
$row=mysql_fetch_object(mysql_query("SELECT * FROM
user
WHEREnick
='".$nick."'"));
Du prüfst nicht, ob mysql_query() einen für mysql_fetch_object() geeigneten Rückgabewert zurückgibt. Im Fehlerfall gibt mysql_query() false zurück. Dies ist aber kein gültiger Parameter für mysql_fetch_object(). Dass du den Fehlermeldungstext von MySQL unbeachtest lässt, hab ich ja oben schon gesagt.
Das Verschachteln der Befehle ist also mindestens ungünstig. Wie es besser geht zeigt das Beispiel im Kapitel MySQL im PHP-Handbuch.
$pass_sql=$row->pass;
Du prüfst nicht, ob $row überhaupt das enthält, was du erwartest und greifst dann munter darauf zu.
alert ('Passwort oder Nick falsch.\nBitte gebe die Daten erneut ein.');
(Der Imperativ von geben lautet in der zweiten Person gib.)
Wo liegt mein Fehler?
Das hat dir bestimmt das MySQL gesagt, du hast es aber ignoriert: mysql_error()
echo "$verabschiedung $name";