Session / Include Problem

zomed

Grünschnabel
Hallo Leute,

folgene Ausgangssituation:
Ich hab schon mehrere "Webseiten" mit Sessions gemacht,
aber noch keine mit includes. Sprich, ich habe eine main.php.
In dieser main.php hab ich von oben nach unten eine

- header.php
- ne variable menü datei... die ich je nach menüpunkt öffne und ne
- footer.php

Wenn ich nun aber "session_start()" in die main.php schreiben,
dann könnte man noch die variable menü datei bzw alle anderen auch
noch einsehen. Wie mache ich das, wenn jetzt ein User

htt*://www.meinserver.de/header.php eingibt, das er auch auf die datei

htt*://www.meinserver.de/main.php?site=loginumgeleitet wird.

Ich frage das aus dem Grund, weil ich dann nämlich die schöne Fehlermeldung
"Cannot modify header information - headers already sent by" bekomme. :)
Und die mag ich nicht. :mad:

Ich weiss, es gibt viiieeele unzählige Threads usw. darüber. Aber ich hab sowieso
nirgends gefunden, wenn ich meine Seite über includes aufbaue...

Wäre lieb wenn mir einer helfen könnte.

Gruß zomed

PS: Danke für irgendwelche Mühen schon mal! ;-)
 
Hm, ist jetzt vielleicht umständlich gemacht, aber so würde ich es machen:

In der main.php die Variable ok setzen:
PHP:
$ok = 1;
Und in der Header, oder in einer anderen Datei, die includet wird, dann abfragen, ob $ok gesetzt ist, und wenn nicht, wird zurück auf die "loginumgeleitet" geschaltet per [phpf]header[/phpf]:
PHP:
if (!isset($ok)) { # wenn $ok nicht gesetzt ist, was der Fall ist, wenn man nur header.php aufruft, wird man auf die main.php umgeleitet
  header ("Location: main.php?site=loginumgeleitet");
}
else { # wenn $ok gesetzt ist, Inhalt ausspucken
  $foo = 'bar';
};

MfG
 
Die Idee war super und hat schon mal geklappt. THX!

Da ich das Login so aufgebaut hab, das direkt
das Menü mit den Knöpfchen oben, darunter
dicht gefolgt von meinem Login und darunter
dann direkt mein footer ist. Wenn ich jetzt
htt*://www.meinserver.de/main.php?site=gbook
aufrufe, dann ist "$ok = 1". Und somit überprüft
der ja wieder nicht ob ein User eingeloggt ist.
Da die Prüfung ja schon in der main.php stattfindet,
kann ich die nicht nochmal in der gbook.php
aufrufen, da der sonst wieder meine Lieblingsfehlermeldung
of the day bringt.

Gruß zomed

PS: Ich hoffe ich schreibe nicht zuuuu sehr in rätseln. :rolleyes:

EDIT: Ich habs jetzt mit nem OB_START(); und nem OB_END_FLUSH(); geregelt!
 
Zuletzt bearbeitet:
Hi!

Ich versuchs nochmal. Weil ich komm wirklich net mehr weiter.
Meine "main.php" baut sich wie folgt auf:

PHP:
session_start();
include("admin/include/checkuser.php");
include("admin/include/dbconnect.php");
include("admin/include/sites.php");

if(file_exists($site))
{
}
else
{
     $site="notfound.php";
}

     include("header.php");
     include("$site");
     include("footer.php");

In meiner "sites.php" steht lediglich, wenn "$site" leer ist, setze es auf "login".
Dann öffnet sich in meiner "main.php" als "$site" halt die loginpage. Geht ja auch
alles. Nur wenn ich die "login.php", "gbook.php" usw. von Hand aus aufrufe hab
ich ja vollen Zugriff drauf. Und wenn ich meine Überprüfung in jede Datei machen
würde, dann kommt ja mein "Lieblingsfehler". :) Wie kann ich es also machen,
das wenn jemand die Seite von Hand aus aufrufen würde, auf "main.php?site=login"
umgeleitet wird

Vielen Dank.
LG Sebastian
 
Zurück