• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Merkwürdiges Session-Problem

Status
Für weitere Antworten geschlossen.

Icy

Neues Mitglied
Hallo,

habe ein kleines Login-System geschrieben. Das funktioniert soweit auch gut; man kann sich problemlos einloggen.
Leider habe ich ein Problem mit einer Session-Variable.
Also beim Login an sich definiere ich die Variablen:

PHP:
$_SESSION['loggedin'] = "1";
$_SESSION['user'] = $row['Nick'];

In $row['Nick'] steckt der Username aus der Datenbank. Das klappt auch gut.

Auf der Hauptseite habe ich den Code:

PHP:
<?php
if (isset($_SESSION['loggedin']) and $_SESSION['loggedin'] == "1") {
  echo "<b>Hallo ".$_SESSION['user']."</b>! <a href=\"index.php?site=logout\">Logout</a>";
} else {
  echo "Hallo Gast! (<a href=\"index.php?site=login\">Login</a> | <a href=\"index.php?site=register\">Registrieren</a>)";
}
?>

Jenachdem, ob man eingeloggt ist, soll man eben mit Nicknamen oder als Gast begrüßt werden. Das funktioniert ein paar Minuten.
Ca. 3 Minuten nach dem Login wird allerdings angezeigt: "Hallo Array", und ich habe keine Ahnung wieso :/

Hoffe ihr findet den Fehler :)

MfG Icy

Edit: Übrigens könnt ihr euch selbst mal registrieren und einloggen: Test-Forum
 
wird wohlirgendwo überschrieben...

ich würde es aber so machen,

$row = mysql_fetch_assoc(mysql_query("SELECT * FROM `user`"));
$_SESSION['user'] = $row;

spart im laufe des scripts meist sehr viel Rechenarbeit ;)

und dann einfach echo $_SESSION['user']['nick'] oder wenn du faul bist

$user =& $_SESSION['user'];

echo $user['nick'];

sorry wegen fehlender php tags bin gerade n bisschen faul ^^

Ps: Schau dir mal den Code deiner "userliste" an ;)
 
das ist eine grauenhafte idee, stell dir vor, ud hast 10.000 user mit je 50 eigenschaften (durchaus realistisch)

dann lädst du mal eben 10.000 * 50 eigenschaften um an den nick zu gelangen, der arbeitsspeicher streikt, die datenbank brauch ewigkeiten.

Code:
query,
SELECT firstname,lastname FROM users WHERE user = %s and pw = %s

$user würde ich auch nie mit der session referenzieren, sondern mit der DB.
in der session würde ich lediglich id,user, md5(user + pw) speichern, anhand von diesen daten kann ich bei jedem request die daten auf gültigkeit prüfen, um performant zu sein, muss md5(user + pw) ein zusätzliches userfeld sein.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben