XaraX: Ich hätte zwei Fragen

Beitrag lesen

Hallo Christoph,

klassisch würde man dies mit HTML über ein Frameset oder einen iframe lösen.

Nö. Es ist doch eh schon PHP, also macht man das wahrscheinlich weit besser auch mit "include" oder eventuell sogar "require" und stopft dann eben das Gästebuch-PHP-Script so rein, daß es einen per CSS definierten Seitenbereich füllt.

Ich hoffe nur Deine Ironie zu verkennen, denn es gäbe nur noch eval($_GET['eingabe']); was verherendere Auswirkungen haben könne!
Bei einem Szenario, daß das einzubindende, externe Gästebuch auch in PHP geschrieben ist, und bei einem Restart dessen Server schlichtweg PHP-Unterstützung ausfällt, bekommt man u. U. ausführbaren Code serviert. Dieser wird wegen include() (gleichbedeutend require()) ausgeführt.
 Desweiteren ist man auch der Willkühr ausgeliefert, wenn dem Webmaster des Gästebuchs einfällt mal kurz PHP-Code auszugeben wegen einem bspw. fehlenden USER-AGENT, oder ausschließliche Zugriffe von einer IP-Adresse. Also sind externe Quellen immer nur mit einem Lesevorgang zu beschaffen, nicht mit einem Lese- und Parsevorgang!

Aber auch gesetzt dem Falle include() wäre sicher, dann ist es um einiges schwieriger sein HTML valide zu halten. Man bräuchte einen Ausgabepuffer, da include() eine Direktausgabe der eingebundenen Sourcen bewirkt, um den Quelltext zu formatieren (da ja eigene HTML-Elemente zusehen sein sollen). Das halte ich zwar auch für machbar und gleichfall abwegig.

Wenn das externe Gästebuch kein Frameset ist, oder "bösartigen" JavaScriptcode enthält, dann kann man bei der Laufzeitkonfiguration allow_url_fopen=On PHPs den Inhalt wie eine Datei auslesen. Devalidierende HTML-Elemente der Dokumente (<html>, <head>, <body>, aber auch <script>) kann man bspw. mit str_replace() vor der Ausgabe entfernen.

Kann man, aber wenn es denn ein Frameset wäre, wäre das wahrscheinlich überflüssig. Und auch sonst erscheint mir das irgendwie "um die Ecke gedacht".

Na so um die Ecke meine ich es nicht zu wissen. Nicht wenige Gästebücher haben auch Bannereinblendungen realisiert durch ein javascriptgestützt selbstnachladendes Frameset; eine Filterung des zu servierenden extenen Gästebuch wäre fast schon unumgänglich. Daher halte ich es für sinnvoller das eigentlichen Dokuments in eine Variable einzulesen, unwichtiges wegzuschneiden (str_replace()) und die Variable im eigenen (natürlich) validem HTML auszugeben. Somit hat man weitreichendere Möglichkeiten der Formatierung durch CSS.

Ich will Dir nicht zu einem Frameset raten; gerade weil ein Gästebuch ein ganz nettes Projekt ist, um sich mit PHP vertraut zu machen
Genau darum sollte es am ehesten gehen, meine ich.

Okay. Einigen wir uns darauf ;)

Gruß aus Berlin!
eddi