header wird ignoriert (ich meine kein 'cannot modify ....')

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

  • header wird ignoriert (ich meine kein 'cannot modify ....')

    ich hab ein kleines CMS gebaut. ich verwende das front controller pattern, über das meine seiten angezeigt werden.
    die einzelnen module werden über den front controller angezeigt (menu, titelleiste etc.).
    mein main content wird ebenfalls durch ein sog. mod_content aufgerufen. der main content ist in einzelnen dateien abgespeichert, die entsprechend texte besitzen.

    diese "content"-dateien sollen natürlich nicht direkt aufgerufen werden können. deswegen sichere ich sie mit folgendem code ab (sind die allerersten zeilen der content dateien, cannot modify header bla sache kann nicht eintreten):

    PHP-Code:
    <?php
    if (!defined('MOD_CONTENT_CALL')){
        
    header("HTTP/1.x 404 Not Found");
    }
    ?>
    wenn ich die content-seite direkt im browser aufrufe, wird komischerweise kein entsprechender response (404) gesendet. die header anweisung wird auf jeden fall erreicht (hab ich schon getestet).
    die header anweisung wird also ignoriert und der restliche code wird geladen

    muss ich vielleicht etwas an der php5.ini ändern oder konfiguration im apache, dass header ausgewertet und zum client gesendet werden?

    ich verwende php5 als modul auf apache 2.

    vielen dank.

  • #2
    Sicher dass der header ankommt?

    PHP-Code:
    <?php
    if (!defined('MOD_CONTENT_CALL')){
        
    #header("HTTP/1.x 404 Not Found");
        
    die("Header wird gesendet!");
    }
    ?>

    Kommentar


    • #3
      Versuchs mit exit oder die() nach dem header().
      Übrigens bringt es niemandem etwas, 404 für eine vorhandene Resource zu liefern. 403 oder einfach die() wäre ausreichend.

      Kommentar


      • #4
        ja, genau das ist ja das eigenartige... wie gesagt die bedingung wird positiv ausgewertet und die header zeile wird durchlaufen. die() führt dementsprechend zu einer meldung im browser.

        ich sende ein 404, weil es keinen was angeht, dass da überhaupt eine resource existiert

        wie gesagt, vielleicht eine konfigurationsproblem (php5.ini)?

        Kommentar


        • #5
          Ich meinte, du sollst mal den Header setzen und anschließend das Script terminieren. Das könnte den Webserver veranlassen, den Header auch tatsächlich zu senden. Zum Debuggen kannst du auch erstmal einen anderen Header (z.B. redirect) senden.
          Aber wie hast du eigentlich festgestellt, dass der Header nicht gesendet wird? Gesnifft?

          Kommentar


          • #6
            ich hab mir gerade mozilla live-headers (darauf hätte ich auch früher kommen können runtergeladen und erkannt, dass doch ein 404 Response gesendet wird.

            mich hat anscheinend sehr irritiert, dass nach header() trotzdem das php script weiter ausgewertet wurde (->textouput). bei früher installierten php/apache hatte php automatisch nach header(...) abgebrochen und apache dazu veranlasst, eine entsprechende 404 Response html-content zu senden: 'Requested site not found bla blubb'.
            ein exit war meiner erinnerung nach nie nötig.

            ich werde einfach das skript wie empfohlen terminieren und über apache mal veranlassen bei fehlercode Responses eine standard seite zurück zu senden, damit die clients keinen sniffer brauchen sondern gleich im browser sehen, was sache ist

            vielen dank nochmal!

            Kommentar


            • #7
              ein exit war eigentlich schon immer nötig. auch wenn es unter gewissen umständen nicht erforderlich war. aber das script soll ja ggf. auch portierbar sein.

              der header()-befehl selbst bricht die ausführung des scriptes nicht ab. wäre irgendwie dumm, wenn ich zwei oder mehrere header senden möchte.

              Kommentar

              Lädt...
              X