echo $begrüßung;
$mail = $_POST['mail'];
$passwort = $_POST['passwort'];
Dieses Umkopieren sieht man in vielen Scripten, und überall ist es unnötig.
$sql = "SELECT * FROM
users
WHEREEMailAdresse
LIKE CONVERT(_utf8 '$mail' USING latin1) COLLATE latin1_general_ci ANDpw1
LIKE CONVERT(_utf8 '$passwort' USING latin1) COLLATE latin1_general_ci";
Wozu betreibst du diesen Konvertierungsaufwand? MySQL macht das von allein, wenn die Kodierung der Felder nicht mit der der Verbindung übereinstimmt. Kümmere dich lieber, dass du diese Verbindungskodierung klar definierst: SET NAMES ... Und wenn du schon mit UTF-8 arbeitest, sorge für UTF-8-Unterstützung auf ganzer Linie, sonst ist es unnötig, weil du den Vorteil bei einer Konvertierung auf LatinX/ISO-8859-X wieder verlierst.
Was soll der Vergleich mit LIKE? Hast du dir mal überlegt, was passiert, wenn jemand LIKE-Jokerzeichen wie % in das E-Mail- und/oder Passwort-Feld eingibt?
Und auch du sorgst nicht dafür, dass eingegebene Sonderzeichen korrekt behandelt werden, wenn sie in das SQL-Statement eingefügt werden. Beachte bitte das Kapitel Database Security, dort besonders SQL Injection, und wende dann mysql_real_escape_string() auf die einzufügenden Nutzereingaben an. Beachte ebenfalls das Kapitel Magic Quotes. Dieses Feature gibt vor, einen Schutz gegen SQL-Injection zu bieten, ist aber nicht richtig auf MySQL zugeschnitten.
if($row) {
//Hier muss etwas geincludet werden, oder eine automatische
//Weiterleitung gemacht werden (Siehe Frage unten)
} else {
die(include "falscherlogin.htm");
}
Was muss in den if Teil der if($row) ?
Vermutlich das, was passieren soll, wenn der Login erfolgreich war. Automatisch weiterleiten an irgendein anderes Script ist sinnlos, da du dieses ebenfalls schützen musst. Sonst könnte man es ja gleich direkt aufrufen. Vermutlich möchtest du eine Session eröffnen und in dieser den Login-Status festhalten.
echo "$verabschiedung $name";