Guten Morgen,
ich habe ein Problem bei meinem Login Script, was ich mir einfach nicht erklären kann.
Ich hoffe, dass ihr mir evtl. Tipps geben könnt.
Ersteinmal möchte ich kurz das Problem erläutern:
Auf meiner Seite login.php logge ich mich als ein User (z.B. "webmaster") ein.
Danach wird angezeigt: Du bist eingeloggt als Webmaster...
Rufe ich nun eine andere Seite auf, wird merkwürdige Weise angezeigt, du bist eingeloggt als irgendein_anderer_user (das steht auch in $_SESSION)...
Obwohl ich mich nie als dieser User angemeldet habe, geschweige denn dieses Passwort eingegeben habe, sondern als User "webmaster".
Nun zum Skript:
Alle meine Seiten, initialisiere ich zu Beginn die Session mit:
session_start();
Auf meiner Seite login.php logge ich mich als ein User (z.B. "webmaster") ein...
Bei erfolgreicher Passwortüberprüfung, schreibe ich den Usernamen in die Session:
(Da die Passwortprüfung funktioniert, poste ich erstmal nur den Teil, wie ich den usernamen in die Session schreibe...)
//LOGIN ERFOLGREICH nach erfolgreicher PW-Prüfung
$_SESSION["username"] = $txt_username;
echo '<div style="font-weight:bold;">Der Login war erfolgreich</div>';
Anschließend habe ich tesweise die beiden Arrays $_COOKIE sowie $_SESSION ausgelesen:
print_r ($_COOKIE);
print_r ($_SESSION);
In denen steht nun bspw.
Array ( [PHPSESSID] => 5808abfb4dc331aa3894592bc88268e0 )
Array ( [username] => webmaster )
Nun überprüfe ich auf jeder Seite den Login und gebe entweder eine Nachricht "Du bist eingeloggt als xxx" bzw. ein Loginformular aus:
An dieser Stelle wird dann nach dem Aufrufen einer beliebigen Seite, wie bereits oben geschrieben, auf einmal angezeigt, dass ein anderer User, als der, mit dem der Login durchgeführt wurde, angemeldet ist.
if(!isset($_SESSION["username"]))
{
echo //Hier erscheint das Login Formular
}
else
{
// Verbindung zum Datenbankserver
db_connect();
$login_user_tmp = $_SESSION["username"];
$sql = mysql_query("SELECT firstname, surname, username FROM tbl_users WHERE username='$login_user_tmp' LIMIT 1");
$login_user = mysql_fetch_array($sql);
if ($login_user){
echo '<div style="text-align:center">Du bist eingeloggt:<br><b>'.
$login_user['firstname'] .' '. $login_user['surname'] .'</b><br>('.$login_user['username'].')';
echo '<br><br><a href="/logout.php">Logout</a></div>';
} else {
echo 'Username kann nicht angezeigt werden.';
}
db_close();
}
In den Arrays steht nun z.B.
Array ( [PHPSESSID] => 5808abfb4dc331aa3894592bc88268e0 ) //diese ist aber noch gleich der PHPSESSID nach dem Login
Array ( [username] => irgendein_anderer_user)
Zum Schluss noch den Teil der logout.php
if(!isset($_SESSION["username"]))
{
echo "Logout nicht möglich, da du nicht eingeloggt bist.";
}
else{
if(session_destroy()){
unset($_SESSION["username"]);
unset($_COOKIE); //Nur testweise eingefügt, da ich dachte, die SESSION wurde nicht zerstört...
session_unset(); //ebenfalls nur testweise eingefügt
echo "Du wurdest erfolgreich abgemeldet.";
}
else
{
echo 'Es ist ein Fehler beim Logout aufgetreten.<br>Schließe bitte aus Sicherheitsgründen dein Browserfenster.';
}
}
Ich hoffe, ich habe es vernünftig erklären können, sodass ihr es verstanden habt...
Falls nicht, teilt es mir bitte mit, damit ich es besser versuchen kann.
Vielen Dank für eure Hilfe
Erri