include und header

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • include und header

    Hallo!

    Meine Seite besteht aus einer mehrzeiligen und -spaltigen Tabelle. Sozusagen in die mittlere Zelle werden die jeweiligen php dateien includet. z.B im Menu Impressum -> index.php?menu=impressum -> impressum.php wird includet.

    So, nun habe ich mich an einen login mit sessions gewagt. Session-Variablen werden erfolgreich erstellt, der Zugriff zur Datenbank klappt usw.

    Wenn man also erfolgreich eingeloggt ist wird dem user das "admin menü" angezeigt. Dort kann er z.b. News schreiben. Somit wird also die datei editnews.php includet in die "mittlere" Zelle der Tabellenstruktur.

    Mein Problem ist nun, wie ich die seite editnews.php schützen kann. Viele leiten hier bei nicht-eingeloggten usern einfach per header weiter, was bei mir, und nun kommen wir zum eigentlichen Problem, nicht funktioniert.

    Liegt das nun daran, das vor dem header schon etwas gesendet wurde? Also die Tabelle, das menü etc?
    Welche möglichkeiten habe ich um dieses zu umgehen?

    danke.
    gruß colo

  • #2
    Re: include und header

    Original geschrieben von colo
    Liegt das nun daran, das vor dem header schon etwas gesendet wurde? Also die Tabelle, das menü etc?
    ich denk mal schon, du solltest ja auch eine entsprechende fehlermeldung bekommen


    Welche möglichkeiten habe ich um dieses zu umgehen?
    indem du direkt nach session_start(), bevor du auch nur ein zeichen an den browser sendest, prüfst, ob der benutzer die seite sehen darf
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      hm ok danke, ich werd's mal versuchen!
      gruß colo

      Kommentar


      • #4
        Re: include und header

        Viele leiten hier bei nicht-eingeloggten usern einfach per header weiter, was bei mir, und nun kommen wir zum eigentlichen Problem, nicht funktioniert.
        warum? wieso? fehlermeldung?
        Liegt das nun daran, das vor dem header schon etwas gesendet wurde? Also die Tabelle, das menü etc?
        wenn die fehlermeldung 'header already sent ...' lautet, ja *g
        Welche möglichkeiten habe ich um dieses zu umgehen?
        - leite weiter, bevor du ausgaben machst ...
        - zeige bei nicht-eingeloggt-sein eine fehlerseite

        eventuell kannst du auch (so mache ich es zb.) die jeweilige seite den kopf und den fuß includieren lassen, dann tritt das header problem nicht auf ...
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Was genau meinst du mit kopf und fuß includieren lassen?
          gruß colo

          Kommentar


          • #6
            Was genau meinst du mit kopf und fuß includieren lassen?
            du: (vermute ich)
            PHP-Code:
            echo 'ganz viel kopf, mit tabellen und so';
            include 
            'content.php';
            echo 
            'ganz viel fuss, mit tabellen und so'
            ich:
            PHP-Code:
            include 'alle_grundlagen_ohne_ausgabe_zu_erzeugen.php';

            // hier habe ich alle grundlagen, db, base, session, ...
            // ohne vorher eine ausgabe gesendet zu haben
            // kann also
            header('Location: ...');
            // problemlos verwenden ...

            include 'kopfbereich.php';
            echo 
            'ganz viel seiteninhalt';
            include 
            'fussbereich.php'
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              dankeschön für deine Hilfe

              Muss ich wohl alles bisschen umstrukturieren aber es wird schon hinhauen

              edit: Nun funktionierts
              Zuletzt geändert von colo; 09.09.2004, 10:43.
              gruß colo

              Kommentar


              • #8
                Du kannst auch einfach in der ersten Zeile Deines Scripts ein ob_start() ausführen ... im Fehlerfalle:
                PHP-Code:
                <?php
                ob_start
                ();

                // Ausgabe ... Ausgabe ... Ausgabe ...

                if ( $fehler ) {
                    
                ob_end_clean();
                    
                header("Location: http://www.blah.de/wurst.php");
                    die();
                }
                ?>
                carpe noctem

                [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                Kommentar

                Lädt...
                X