Mathias Brodala: Datei einfügen aus Ausgabepuffer, damit PHP Code funktionier

Beitrag lesen

Hallo Homer.

Der PHP Code wird aber nicht ausgeführt, weis jemand warum nicht?

Wird der Quellcode deines PHP-Scriptes ausgegeben? Wenn nicht, dann wurde das Script interpretiert, dein Interpreter funktioniert dann also.

Schauen wir uns also schrittweise einmal dein Script an:

// Wenn eine Seite über die Suchfunktion aufgerufen wird
    if(isset($_GET['rslt'])) {
        ob_start();
        $kw = htmlentities($_GET['kw'],ENT_QUOTES);
        $datei = $_GET['rslt'];

  
Ist der Wert von $\_GET['rslt'] wirklich eine existente und lesbare Datei?  
  

>         ~~~php

// Inhalt der Datei wird eingelesen und das Suchwort markiert  

>         $HandleDatei = fopen ($datei, "r");

Du legst hiermit ein Dateihandle an, ohne zu überprüfen, ob die Datei überhaupt erfolgreich gelesen werden konnte. Überprüfe also den Rückgabewert der fopen-Funktion auf FALSE.

~~~php

[...]

$ersetzungen = '<span class="error">\1</span>'; // 1 Backreferenz auf das gefundene Keyword

  
Merkwürdige Klassifizierung eines Schlüsselwortes ...  
  

>         ~~~php

$ChgDatei = preg_replace($suchmuster, $ersetzungen, $CntDatei);  

>         echo $ChgDatei; // !!! PHP Code aus den Zeilen wird nicht ausgeführt  
  
Sicher? Ich schätze viel eher, dass ein Leerstring infolge von oben genanntem FALSE ausgegeben wird. Nutze für solcherlei Kontrollausgaben besser print_r oder var_dump.  
  

>         [code lang=php]$DateiEcho = ob_get_contents();  
>         ob_end_clean();  
>         echo $DateiEcho;

Die letzten drei Schritte kannst du zu ob_flush zusammenfassen.

Einen schönen Mittwoch noch.

Gruß, Mathias

--
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
debian/rules