XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Serveradministration und serverseitige Scripte (http://xhtmlforum.de/forumdisplay.php?f=80)
-   -   Problem mit Cookie für Gästebuch (http://xhtmlforum.de/showthread.php?t=49610)

Knarzer77 30.12.2007 15:36

Problem mit Cookie für Gästebuch
 
Hallo,

ich verwende folgendes Script für ein Gästebuch (die Cookies machen es notwendig, ansonsten kommt der Fehler "Cannot send session cache limiter - headers already sent"):

$template_datei = './gaestebuch/scripts/gb-template.php'; // Hier den Pfad zur Template-Datei eintragen (relativ zu diesem Script!)
$scriptverzeichnis = './gaestebuch/scripts/'; // Hier den Pfad zum Script-Verzeichnis eintragen (relativ zu diesem Script!)

// HTML-Grundgerüst holen (ist hier ein Template)
$html = implode('', file($template_datei));

// Gästebuch ausgeben
ob_start(); // echo-Ausgaben zum Browser abfangen und im Puffer speichern

// Slash am Ende sicherstellen
$scriptverzeichnis = preg_replace('~^(.*)/?~', '\\1/', $scriptverzeichnis);
include $scriptverzeichnis.'gb.script.inc'; // gibt per echo ein <div> mit dem eigentlichen GB-Inhalt aus

$html = str_replace('{gb-output}', ob_get_contents(), $html); // schreibt den GB-Inhalt ins Template

ob_clean(); // Pufferinhalt löschen (ist vorher in $html übertragen worden)

// HTML-Grundgerüst fertigstellen
echo $html;
ob_end_flush(); // Puffer ausgeben und leeren (hier sendet PHP zum ersten Mal tatsächlich Daten an den Browser

?>




In der Template-Datei werden wiederum php-Dateien includiert. Und hier ist das Problem: Mit dem Script werden diese includes nicht "aufgelöst", sondern 1:1 in die HTML-Ausgabe übernommen (also steht dann da "include ...." ).

Kann ich das Script so anpassen, dass die dynamischen includes aufgelöst werden, bevor sie ausgegeben werden?


Viele Grüße
Jan

kampfgnom 30.12.2007 16:38

Versuchs
1. Hier im Forum mit den [PHP]-Tags
2. mal im Code mit <?php ?> in den includierten dateien!

Knarzer77 30.12.2007 16:52

Hi,

Zitat:

Zitat von kampfgnom (Beitrag 364547)
Versuchs mal im Code mit <?php ?> in den includierten dateien!

Hat leider nix geändert.

Jan

Timo 30.12.2007 17:44

Du sollst uns den Kompletten Code pasten!

kampfgnom 30.12.2007 17:46

Stimmt zwar nicht. Aber das hätt ich jetzt geschrieben :lol:

Timo 30.12.2007 17:54

Zitat:

Zitat von kampfgnom (Beitrag 364552)
Stimmt zwar nicht. Aber das hätt ich jetzt geschrieben :lol:

Habs gleich danach gemerkt und editiert :P

Knarzer77 30.12.2007 20:42

Hi,

ich hab ne Lösung gefunden. Wen es interessiert:

<?php
ob_start(); // echo-Ausgaben zum Browser abfangen und im Puffer speichern

$template_datei = './gaestebuch/scripts/gb-template.php'; // Hier den Pfad zur Template-Datei eintragen (relativ zu diesem Script!)
$scriptverzeichnis = './gaestebuch/scripts/'; // Hier den Pfad zum Script-Verzeichnis eintragen (relativ zu diesem Script!)


// die Haupt-HTML-Datei laden (mit "{gb-output}")
include $template_datei;
$html1 = ob_get_contents();
ob_clean();

// Slash am Ende sicherstellen
$scriptverzeichnis = preg_replace('~^(.*)/?~', '\\1/', $scriptverzeichnis);
include $scriptverzeichnis.'gb.script.inc'; // gibt per echo ein <div> mit dem eigentlichen GB-Inhalt aus
$html2 = ob_get_contents();
ob_clean();

$html1 = str_replace('{gb-output}', $html2, $html1); // schreibt den GB-Inhalt ins Template


// HTML-Grundgerüst fertigstellen
echo $html1;
ob_end_flush(); // Puffer ausgeben und leeren (hier sendet PHP zum ersten Mal tatsächlich Daten an den Browser
?>

kampfgnom 30.12.2007 20:48

könntest du bitte die [php] tags des Forums nutzen?
Damit wäre allen geholfen!!

DANKE!

btw: wieso überprüfst du ob du den Slash am ende hast. Du schreibst doch eh das Verzeichniss selbst. Da musst du das doch nicht überprüfen. Schon gar nicht bei nem Gästebuch^^

inta 30.12.2007 20:49

Ich bin mir sicher, die BB-Codes findest du auch noch.

Zur Erklärung, file() liest den Inhalt der Datei in ein Array, die Datei wird allerdings nicht geparst. Beim include wird die Datei geparst und somit auch die entsprechenden PHP-Schnipsel darin interpretiert.


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:42 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023