PHP SITE ID zu SHTML
Benjamin
- php
Hey Folks...
ich bin am ende, ich habe mir offline eine riesige website erstellt (200 Seiten) Navigation ist ueber ein SITE script in PHP:
<?php
if (!isset($site)) { $site = "main"; }
$site = "./".$site.".shtml";
include ($site);
?>
damit werden dann halt die shtml seiten aufgerufen... das problem ist nur das die alle massig SSI enthalten und aus irgend einem grund klappt das nicht.......
wenn ich die seiten direkt aufrufe, klappt es aber wenn sie ueber das script aufgerufen werden nicht...
Weiss jemand rat?
Benny
Moin Benny,
ich bin am ende, ich habe mir offline eine riesige website erstellt (200 Seiten) Navigation ist ueber ein SITE script in PHP:
<?php
if (!isset($site)) { $site = "main"; }
$site = "./".$site.".shtml";
include ($site);
?>
damit werden dann halt die shtml seiten aufgerufen... das problem ist nur das die alle massig SSI enthalten und aus irgend einem grund klappt das nicht.......
Oh, oh, du hast ein Problem am Hals. Stell dir das mal so vor:
Der PHP-Interpreter schaut sich dein Site-Script an, und sucht
erst mal nach include()- bzw. require()-Funktionen. Wenn er
welche findet, schreibt er an dieser Stelle den Inhalt der ent-
sprechenden Seite. Anschließend wird nochmal geparsed und die
PHP-Tags in der/den eingefügten Datei(en) werden ausgeführt.
AFAIK ist es allerdings unmöglich, die Seiten danach nochmal
durch einen SSI-Parser laufen zu lassen; außerdem würde das
nochmal zusätzliche Rechenzeit kosten.
Hoffentlich benutzt du immer die gleichen SSI-Tags - z.B., um
ein Menü oder eine Fußzeile einzufügen. Dann solltest du dir
nämlich Ulli Meybohms HTML Editor Phase5 herunterladen und mit
diesem "Dateiübergreifende Ersetzungen" oder so durchführen.
Dann kannst du auf einen Schlag alle SSI-Includes durch PHP-
Includes ersetzen. Und dann gibt es noch diverse Tools, die
Dateiendung von mehreren Dateien auf einen Schlag zu ändern;
hier weiß ich allerdings nur davon.
Der Link zu Phase5:
http://www.harlequin.de/index.php?wohin=phasex
Bye,
Peter
Moin
Oh, oh, du hast ein Problem am Hals. Stell dir das mal so vor:
Der PHP-Interpreter schaut sich dein Site-Script an, und sucht
erst mal nach include()- bzw. require()-Funktionen. Wenn er
welche findet, schreibt er an dieser Stelle den Inhalt der ent-
sprechenden Seite. Anschließend wird nochmal geparsed und die
PHP-Tags in der/den eingefügten Datei(en) werden ausgeführt.
Jein, bei require funktioniert das so ähnlich, bei include würde ich sagen nicht. include() wird zum Beispiel auch mehrmals ausgeführt, wenn es sich in einer Schleife befindet, d.h. es wird erst ausgeführt wenn der PHP-Code schon interpretiert wird.
[SSI durch PHP ersetzen]
Die beiden einfacheren Lösungen wären:
a) Du benutzt fopen wrapper. Dazu musst du einfach den kompletten URL für die zu includende Datei angeben (mit http:// am Anfang!). Dann baut er eine HTTP-Verbindung zu dem angegebenen Server auf, lässt den tun was auch immer er will mit der Datei (zum Beispiel SSI parsen) und bindet die Rückgarbe ein. Nachteil: Funktioniert nicht unter Windows. Da müsstest du dir selbst was basteln. Unter http://www.php.net/manual/en/function.fsockopen.php sind einige Beispiele bei den User-notes.
b) Du benutzt virtual() ([linkhttp://www.php.net/manual/en/function.virtual.php]):. Macht in etwa dasselbe, spart sich aber die HTTP-Verbindung und lässt den Apache alles regeln. Nachteil: Geht nur mit Apache.
--
Henryk Plötz
Grüße aus Berlin