Tja, das sieht ansonsten an der Stelle korrekt aus. Das mit der $_SESSION ist so eigentlich richtig.
Nimm mal den header() aus home2.php raus und setze oben ein print_r($_SESSION); rein, um zu gucken, was in der Session steht.
Insgesamt immer hilfreich beim Debuggen:
error_reporting(E_ALL | E_STRICT);
…zu Beginn einer Datei, um PHP kleinlich alle Fehler und Unschönheiten anzeigen zu lassen. Ansonsten per echo und print_r die Variablen zu sinnvollen Zeitpunkten ausgeben lassen.
Nebenbei: Striktes error reporting würde etwa darauf hinweisen, dass das hier…
[color=„red“]Edit: Quark, würde es nur dann, wenn user nicht gesetzt wäre. Egal, es sollte jedenfalls besser so geschrieben werden.
Ich sehe gerade, dass session_start() einen Rückgabewert hat.
Wird das hier ausgegeben?
[php]<?php
if (!session_start()) {
echo ‚Session konnte nicht gestartet werden.‘;
}[/php]
Falls ja, ist es wohl eine Servereinstellung. Ist mir in der Form noch nicht begegnet. (Frag im Zweifel einfach mal auf phpforum.de oder php.de nach – oder warte natürlich hier weitere Antworten ab --, wenn dich das nicht weiterbringt. Oder wirf einen Blick in die Doku. Ohne testen zu können, habe ich keine Ideen mehr.)