Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] headers already sent by (https://www.delphipraxis.net/149593-%5Bphp%5D-headers-already-sent.html)

Luckie 24. Mär 2010 21:26


[PHP] headers already sent by
 
Ich habe ein kleines Koordinationspronblem.

Code:
function getURLParams(){
    $params = $_GET['dir'];
    if (!isset ($params))
        $params = "./";
    if (!file_exists($params)){
       header("HTTP/1.0 404 Not Found");
       die();
    }
    return $params;
}

?>

<html>
    <body>
       



            <?php
            $dir = getURLParams();
Logisch, was passiert. Wenn das Verzeichnis nicht existiert, soll ein 404 gesendet werden. Allerdings ist zu dem Zeitpunkt der eigentliche Header ja schon verschickt worden.

Wie kann man das am geschicktesten lösen?

Die Muhkuh 24. Mär 2010 21:52

Re: [PHP] headers already sent by
 
Code:
function getURLParams(){
    $params = $_GET['dir'];
    if (!isset ($params))
        $params = "./";
    if (!file_exists($params)){
       header("HTTP/1.0 404 Not Found");
       die();
    }
    return $params;
}

 $dir = getURLParams();

?>

<html>
    <body>
       



            <?php
           // Was mit $dir anstellen
Edith: Das wäre eine Möglichkeit. Geschickt wäre natürlich ein Template-System.

Luckie 24. Mär 2010 21:58

Re: [PHP] headers already sent by
 
Oh, ich wusste nicht, dass die Stelle schon vorher abgearbeitet wird. Danke, so funktioniert es.

generic 24. Mär 2010 22:44

Re: [PHP] headers already sent by
 
Das Problem tritt dann auf, sobald du die erste Ausgabe machst.
Da reicht sogar schon ein Leerzeichen oder Zeilenumbruch.
Umgehen kann man das durch keine Ausgaben vorher machen oder alternativ kann auch das Outputcaching angeschaltet werden.

ob_* Funktionen

s.h.a.r.k 24. Mär 2010 22:54

Re: [PHP] headers already sent by
 
Besser ists aber, wie MuhKuh erwähnt hat, mit Templates zu arbeiten. Ich nutze zurzeit das Yii-Framework und das zeigt das hervorragend. Kann bei Bedarf gerne Code liefern, wenn dies gewünscht :) Hab diese Technik mal für ein kleines Projekt abgekupfert und Layout vom Content getrennt. Content liegt bei mit teilweise auch in HTML vor und wird dann in eine Variable geladen, dann ins Template eingesetzt.

// edit
Hätte ich ein wenig mehr darüber nachgedacht, so hätte ich bemerkt, dass das genau die Technik ist, die generic hier anmerkt :wall:

Luckie 24. Mär 2010 22:57

Re: [PHP] headers already sent by
 
Ich glaube, es hat sich erledigt. Ich werde wohl doch bei meinen Apache DirectoryListings bleiben. Außerdem wäre mir ein Templatesystem zu viel Overhead, denke ich.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz