Sven: include problem

Beitrag lesen

Hallo,

ich habe ein sehr großes problem. Ich bin gerade dabei für meine Website ein Forum zu programmieren in PHP. Anmelden/Login und Logout funktioniert soweit gut. Mir ist aufgefallen, dass wenn man sich einlogt, dass das Usermenu nicht sofort angezeigt wird. Das gleiche bei Logout (Login wird nicht angezeigt). Erst wenn man auf ein Link geklickt hat oder aktualisiert hat.

Der Aufbau meiner Website ist ziemlich kompliziert. Das ganze Design besteht aus 12 Tabellen. Später ist mir aufgefallen, dass ich viele Texte ausgeben muss wie Z.b. Username nicht vorhanden, Passwort ist falsch usw. Dann habe ich mir eine Design.php gebastelt die enthält 2 Variablen. $d1 und $d2. Jetzt wenn ich Text ausgeben will brauche ich einfach nur echo $d1."Username nicht vorhanden!".$d2.

Das ganze funktionierte super. Da ich jetzt über 20 PHP Dateien habe, habe ich mir noch eine menu.php gebastelt. Die enthält 3 Variablen. $topmenu, $rightmenu (wo das login ist / usermenu ist) und $leftmenu. Habe die Datei in der Design.php eingebunden etc. Jetzt wenn ich das Menü ändern will brauche ich nur 1 Datei ändern, fertig!

Funktioniert ebenfalls super. Klasse aufbau eigendlich später wenn man was ändern will 1 Datei ändern :). Zu mein problem:

Bei dem Login (Login.php) prüfe ich natürlich als erstes ob der Account aktiviert wurde, ob er in der Datenbank vorhanden ist etc.
Wenn alle angaben richtig sind und so setze ich Cookies. Und gebe dann aus: Echo $d1."Login erfolgreich usw.".$d2. WICHTIG: In der menu.php prüfe ich ob die Cookies gesetzt worden sind!!! Jeder der jetzt aufmerksam gelesen hat weist auch jetzt warum das Usermenu nicht angezeigt wird. Weil ich die design.php ganz oben include und später erst Cookies setze. Also wurde schon geprüft ob Cookies gesetzt worden sind.

Jetzt zu meine fragen:

1. Kann man die design.php irgendwie aktualisieren? ->
2. Wenn nicht, kennt jemand eine gute Lösung?

3. Ich weis zwar eine Lösung in dem ich die ganzen Tabellen, Menü etc. in der login.php neu ausgeben, aber das ist nicht wirklkich eine gute Lösung.

Ich hoffe das 1 oder 2 beantwortet werden.

MFG
Sven!