Hallo..
Ich hoffe mal sehr, dass du dein Login Script nochmal überdenkst. Als erstes kannst du sowas hier nicht machen:
$username = $_POST['username'];
$passwort = $_POST['passwort'];
$server = $_POST['s'];
Du unterziehst die Userdaten keiner Kontrolle. Ein User könnte dir hier alles Mögliche unterjubeln.
Das kann so nicht bleiben, wenn du die Usereingaben nicht überprüfst (mysql_real_escape_string)
$abfrage = "SELECT password FROM usrdata WHERE Usrname LIKE '$username'";
$ergebnis = mysql_query($abfrage);
Hier hast du eine IF Bedingung. Was würde denn passieren, wenn das Ergebnis NULL ist, also wenn es kein Passwort gibt, weil der Username den man eingeben hat, nicht existiert?
Ganz einfach: Diese Bedingung wäre FALSE, also wird der Code in der Bedingung nicht ausgeführt.
if($row = mysql_fetch_object($ergebnis)) {
$passwort_sql = $row->password;
}
Da das Ergebnis der Bedingung ja NULL war ist die Variable $passwort_sql also leer. Bei der Anmeldung gibt jetzt der böse User auch kein Passwort ein. Damit wäre die Bedingung "$passwort == $passwort_sql" schonmal erfüllt. Und die Bedingung "$username == $username" ist sowieso IMMER TRUE.
// Benutzername und Passwort werden überprüft
if ($username == $username && $passwort == $passwort_sql) {
$_SESSION['angemeldet'] = true;
Auf den Rest gehe ich mal nicht weiter ein.
Was heisst das jetzt alles im Klartext?
Ich könnte mich bei deinem Script mit jedem Benutzernamen einloggen. Egal, ob er existiert oder nicht. Du speicherst den Benutzernamen danach in einer Sessionvariable ab. Wenn du anhand derer auch Benutzerrechte verteilst, hätte ich Adminrechte, wenn ich mich mit dem Benutzernamen des Admins anmelde und bei der Anmeldung das Passwortfeld leer lasse.
Überprüfe jede Eingabe, die ein User machen kann. Stelle sicher, dass dir niemand irgendwelche Werte in Variablen unterjubeln kann, die du da nicht haben willst.
Gruß