Habe mich mal daran gewagt. Sollte eigentlich so passen, hoffe ich habe nichts übersehen.
Das was ich gefundne habe habe ich dir verbessert und hingeschrieben was ich gemacht habe.
PHP Code:
<?php
//include durch require_once ersetzt damit wenn die Datei nicht vorhanden ist auch der Rest nicht funktioniert und nicht nur ein "Warning" ausgegeben wird.
//Alternativ kannst du auch um statt dem Error einen Warning zu bekommen include_once verwenden.
require_once("top.php");
$form = "
<form action='login.php' method='POST'>
<table cellspacing='10'>
<tr>
<td>E-mail</td>
<td><input type='text' name='email'></td>
</tr>
<tr>
<td>Passwort</td>
<td><input type='password' name='passwort'></td>
</tr>
<tr>
<td></td>
<td><input type='submit' name='loginAbsenden' value='Anmelden'></td>
</tr>
</table>
</form>
";
//include ersetz durch require_once
require_once('connect.php');
if(isset($_POST['loginAbsenden']))
{
// Die Variablen $email und $passwort verschiebe ich hierhin damit du erst Abfragst ob dieses Event über stattgefunden hat.
//Sonst würde er dir dort einen null Wert eintragen da dort noch nichts enthalten sein kann.
$email = $_POST['email'];
$passwort = $_POST['passwort'];
//Statt $email != "" verwende ich an dieser Stelle !empty
if(!empty($email) && !empty($passwort))
{
$email = mysql_real_escape_string($email);
$passwort = md5($passwort);
$abfrage = mysql_query("SELECT * FROM spieler WHERE email='$email'");
if(mysql_num_rows($abfrage) > 0)
{
$db = mysql_fetch_assoc($abfrage);
if($db['passwort'] == $passwort)
{
//Die oberen Variablen waren eigentlich überflüssig weßhalb ich dir das direkt in die $_SESSION schreiben.
$_SESSION['id'] = $db['id'];
$_SESSION['name'] = $db['name'];
//$_SESSION['passwort'] = $db['passwort']; // Das Passwort sollte man nicht an die $_SESSION übergeben.
$_SESSION['email'] = $db['email'];
$_SESSION['level'] = $db['level'];
$_SESSION['exp'] = $db['exp']; // überflüssiges ; entfernt
$db = null;
echo "Sie haben sich erfolgreich Angemeldet! <b>$name</b>";
}
else
{
echo "Sie haben ein falsches Passwort eingegeben";
}
}
else
{
echo "Der Benutzer ist nicht vorhanden!";
}
}
else
{
echo "Bitte füllen sie alle Felder aus!";
}
}
//Ich hoffe, dass es richtig war bzw ich es alles richtig erfasst habe. Du hattest soweit ich es gesehen habe
// einen else{} zu viel. Ich habe dir die $_SESSION-Abfrage jetzt in das else{} der "isset($_POST['loginAbsenden'])" gesteckt.
// Also er fragt ab ob du den Button gedrückt hast. Wenn nicht wird überprüft ob $_SESSION['email] vorhanden und NICHT leer ist.
// Anschließend wird falls dem so ist dir der Logout bzw. Abemelden Button ausgegeben.
// Sollte dieser jedoch nicht gesetzt oder leer sein wird dir die Form ausgeben um dich einzuloggen.
// Wenn du nachher deine $_SESSIOn auflöst beim Logout setz alle $_SESSION['xy'] = ''; also leer machen.
// Anschließend zerstörst du die $_SESSION mit ich glaube es heißt session_destroy();
else
{
if(isset($_SESSION['email']) && !empty($_SESSION['email']))
{
echo "<a href='logout.php'>Abmelden</a>";
}
else {
echo $form;
}
}
// Wieder require_once
require_once("bottom.php");
// Da du an dieser Stelle kein HTML mehr ausgibst brauchst du auch kein PHP-Endtag setzen.
Bei Fragen oder Problemen adde mich einfach in Skype, schreib' es hier in den Thread oder meld' dich privat mir egal