Ankündigung

Einklappen
Keine Ankündigung bisher.

Output buffering

Einklappen

Neue Werbung 2019

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

  • Output buffering

    Guten Abend Community,

    mir hängt die ganze Zeit eine Frage im Kopf und wollte Sie hiermit einfach mal der Community stellen und hoffe somit auf eine Antwort.

    Frage

    Wenn ich ein Webseitenprojekt auf statischer Basis habe, nutze ich meistens für Elemente (z.b Login-Box) PHP_INCLUDE. So hab ich die Login-Form sowie die Verarbeitung in einer eigenen Datei.

    Problem dabei ist immer, dass wenn der Login erfolgreich ist und ich den Nutzer zu einem geschützten Bereich weiterleiten möchte, ich den Header (mit Header("Location /safe.php"); ) verändere.

    Ohne Output-buffering (Einstellung in der php.ini) würde ich immer "Header already sent..." bekommen, was natürlich auch logisch ist.. da die Loginbox erst mitten in der Seite eingebunden wird.

    Gibt es da eventuell einen WorkArround oder ist das die übliche vorgehensweise?

    Würde mich über eine Antwort freuen.

    Grüße,
    Philipp
    PHP-Code:
    if(!$user->writesCleanCode()) { die(); } 


  • #2
    Üblich ist es, sich an das EVA-Prinzip zu halten: EVA-Prinzip (Standardverfahren) - PHP.de Wiki.
    http://hallophp.de

    Kommentar


    • #3
      Ja, dass ist mir bewusst.

      Aber was machst du wenn du eine index.php hast und in der index.php eine Login-Box auslagerst.
      Dann bekommst du, auch wenn man sich an das EVA-Prinzip hält, eine Fehlermeldung "Header already sent...".

      grüße

      // Edit:

      okay, wenn man auch in der ausgelagerten Login-Box jeden Content in $content schreibt und in der Index ganz am Ende das ausgibt kein Fehler

      thx
      PHP-Code:
      if(!$user->writesCleanCode()) { die(); } 

      Kommentar


      • #4
        Es ist eben u.a. aus diesem Grund unüblich geworden eine Ausgabe (wie früher) zu starten, bevor alle Eingabeparameter verarbeitet sind. Schau dir mal MVC an oder Templating im Allgemeinen.
        "Mein Name ist Lohse, ich kaufe hier ein."

        Kommentar


        • #5
          Oder um es anders zu sagen
          Üblich ist es, sich an das EVA-Prinzip zu halten: EVA-Prinzip (Standardverfahren) - PHP.de Wiki.
          Wenn Dir das klar ist, was ist dann die Frage? Wenn Du Deine Software modular aufbaust, musst Du eben dafür sorgen, dass jeder Bestandteil einen Arbeitsteil und einen Ausgabeteil besitzt, die unabhängig voneinander funktionieren.
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar

          Lädt...
          X