Session Array leer??

#0 :: 26.12.2010 - 20:08
  • GameOver
  • User

Guten Abend,

bei einem login registriere ich eine Session, loggt sich ein User ein, wird nur die ID des Users im Session Array gespeichert.

So sieht ein Teil des Login Scriptes aus:

if(($nickname == $result->nickname) && (md5($password) == $result->password))
{
$_SESSION['user'] = array();
$_SESSION['user']['userId'] = $result->id;
header("Location: game/index.php");
}

Weitergeleitet werde ich eben auf: game/index.php

Auf der internen Page steht folgender Code:

if(!isset($_SESSION['user']))
{
    header("Location: http://www.nicolas-pecher.com");
}
else
{
//mysql verbindung
$verbidung = new Mysql($db_server, $db_name, $db_user, $db_pwd);
$verbindung->con;

$sql = "SELECT `nickname`, `email` FROM `users` ".
" WHERE `id` = '".$userId."'";

$query = mysql_query($sql);
$row = mysql_fetch_object($query);
$_SESSION['user']['nickname'] = $row->nickname;
$_SESSION['user']['email'] = $row->email;
}

Zuerst überprüfe ich ob das Session Array 'user' nicht existiert, wenn, wird er mittels header zum login zurückgeleitet, ansonsten werden aus der DB der Nickname und die E-Mail abgefragt, wo die id gleich die userId ist, die ich beim Login im Array abspeichere.

Beim Login speicher ich nur die User Id im array, da die Id das Einzige ist, was sich nicht verändert. Da sich username, email und weitere Daten am laufenden Band ändern können und auch ändern werden, will ich, das jedesmal, sobald der eingeloggt User die Seite aktualisiert auch die aktualisierten Daten im Session Array vorhanden sind.

Beim einloggen, wird der Nickname, die Id und auch die Email mittels:

echo $_SESSION['user']['userId'];
echo $_SESSION['user']['nickname'];
echo $_SESSION['user']['email'];

...erfolgreich ausgegeben. Sobald ich aber dann die Webadresse aktualisiere, gibt er mir plötzlich gar nichts mehr aus? Was passiert da? Gelöscht wird ja die Session nicht, da ich ja sonst wegen folgender if-Bedingung:

if(!isset($_SESSION['user']))
{
header("Location: http://www.nicolas-pecher.com");
}

...zum Login geleitet werden müsste. Aber das Session Array wird i-wie geleert!?

Grüße,
Nico

MC-Web

#1 :: 27.12.2010 - 08:52

Hallo Nico,

lass dir doch mal den Inhalt der Session ausgeben.

var_dump($_SESSION['user'])

Vielleicht wird das Array erst gar nicht gefüllt.

Denn mit 

$_SESSION['user'] = array();

existiert der user Eintrag und die Prüfung

isset($_SESSION['user'])


ergibt true auch wenn das Array leer ist.

Vielleicht gibt es einen Fehler bei der Datenbank Abfrage.

Gruß Ultima

Admin of Ultima-Project.net