25. April 2024

intro
news
leute
events
archiv
forum
links
kontakt
internals

293287. Besucher
seit Mai 2001
7. Besucher
heute

layout/hosting by
ygoe.de

 

PHP-Umstellung

Ein Bericht über die technischen Hintergründe dieser Homepage

Für gewöhnlich werden Homepages aus mehreren HTML-Dateien zusammengesetzt, hier und da ein paar Grafiken eingebunden und dann noch alles schön durch Links miteinander verbunden. Ein solches Konstrukt von Seitenbeschreibungs-Dateien ist eben auch die einfachste Art, Informationen im Internet darzustellen. Aber gerade bei größeren Projekten fangen die Probleme recht schnell an: Alle Seiten sollen das gleiche Layout haben, die selben Links aufweisen und alles soll trotzdem noch einfach zu verwalten sein.

Jetzt könnte man ja einfach anfangen, das beste Design an einer Seite zu entwickeln und danach auf alle anderen zu übertragen. Nur wehe, es ändert sich mal ein Dateiname oder es kommt eine neue Seite dazu. Dann fängt nämlich das Gerenne durch alle 173 Dateien an, um überall die selben Änderungen durchzuführen. Einen Moment mal nicht ganz aufgepasst kann daraus ziemlich schnell ein Riesen-Durcheinander werden. Um das zu vermeiden, habe ich irgendwann (noch vor der Entstehung dieses Projekts) damit angefangen, eine zentrale JavaScript-Datei einzuführen, die eine gemeinsame Code-Basis aller zum Projekt gehörenden Dateien darstellt. Sie ist dafür verantwortlich, dass das Seiten-Framework, also die Überschrift, das Logo, die immer wiederkehrenden Links und die abschließende Copyright-Zeile am Ende der Seite, überall einheitlich in die Seite eingefügt werden. Außerdem sollen mit ihrer Hilfe Links auf externe Seiten oder das Anzeigen spezieller Anzeige-Bereiche (hier der Infoboxen) vereinfacht werden; statt jedes Mal die komplette Beschreibung des Objekts anzugeben – und die davor jedes Mal in einer anderen Datei nachzusehen – benötigt man nur einen JavaScript-Befehl, und den Rest erledigt das Programm.

Der Haken an der Sache ist nur folgender: Die komplette Programm-Ausführung muss vom Browser, also dem Programm, das der Besucher zum Anzeigen der Seiten einsetzt, ausgeführt werden. Und welches Programm das sein wird, kann der Programmierer auf der anderen Seite der Homepage nicht vorhersehen. Dann braucht nur jemand daherzukommen, dessen Browser eben kein JavaScript versteht oder die Befehle etwas anders interpretiert, und schon sieht er im schlimmsten Fall gar nichts mehr. Außerdem beschränkt sich das Programm auf den Computer des Besuchers. Hier getätigte Eingaben bleiben also höchstens auf diesem einen PC erhalten, wenn überhaupt. Interaktive Homepage-Dienste wie z.B. unser Newsboard sind deshalb nur durch externe Provider realisierbar.

Um die Eingaben jetzt auf dem Server zu speichern, muss auch das Programm auf dem Server ausgeführt werden. Denn nur da können Daten abgelegt werden, die anschließend allen weiteren Besuchern zur Verfügung stehen. Die einzige Möglichkeit besteht also in der Verwendung von Programmen, die direkt auf dem Webserver interpretiert werden. Eine dieser Programmiersprachen ist PHP. Diese ermöglicht einen dynamischen Seitenaufbau unter Verwendung von Datum/Zeit-Informationen, gespeicherten Dateien oder Einträgen einer Datenbank. Die Ausgabe ist eben die HTML-Seite, die der Browser des Besuchers zu Gesicht bekommt. Der Vorteil an dieser Methode ist der, dass die Seite bereits vollständig geliefert wird und seitens des Browsers so gut wie keine Arbeit mehr zu erledigen ist, natürlich bis auf die korrekte Anzeige der HTML-Daten. Auch in PHP gibt es analog zu JavaScript die Möglichkeit, ein zentrales Script einzubinden und wiederkehrende Aufgaben wie z.B. ein Seiten-Framework zusammenzufassen. Die Umstellung der alten Dateien von einer JavaScript-Unterstützung ins PHP-Format erfordert also keine großen Änderungen der internen Struktur der Homepage, es dauert eben nur seine Zeit, bis in allen Dateien die entsprechenden Verweise und Angaben ausgetauscht sind. Weitere Vorteile, die sich daraus ergeben, sind z.B. die Möglichkeit, datenbank-gestützte Systeme direkt in die eigenen Projektseiten zu integrieren. Deshalb ist jetzt auch unser Newsboard auf dem selben Server untergebracht, wie alle anderen Inhalte. Desweiteren habe ich jetzt die Möglichkeit, einen eigenen Counter oder andere Programme (siehe z.B. den Geburtstags-Kalender) selbst zu erstellen und damit exakt meinen Bedürfnissen und dem allgemeinen Seiten-Design anzupassen.

Bei der Gelegenheit habe ich gleich noch die Datei-Struktur des Projekts übersichtlicher gestaltet. Vorher waren alle HTML-Dateien im Hauptverzeichnis und praktisch alle Bilder im images/ Unterverzeichnis. Diese enormen Dateimengen haben immer zu erheblichen Wartezeiten beim FTP-Upload geführt, wobei ich meistens doch nur eine einzige oder wenige Dateien austauschen wollte. Nur da jede Seite den relativen Pfad zu anderen Seiten oder auch den Bildern kennen muss, und es später durchaus vorkommen kann, dass die Verzeichnis-Struktur geändert wird und Dateien in andere Verzeichnisse wandern, musste eine Methode her, die selbstständig den richtigen Pfad findet. Diese besteht in der BASE HREF-Angabe im Kopf der HTML-Dateien, die jetzt wiederum mit PHP-Variablen auf das Hauptverzeichnis der Homepage verweist. Alle Angaben von anderen Dateien oder Bildern werden jetzt relativ zum Hauptverzeichnis angegeben, wodurch es gleichgültig ist, wo die Datei sich eigentlich befindet.

Nur schade, dass manche Suchmaschinen oder Homepages von all diesen Änderungen nichts mitbekommen, weshalb in letzter Zeit verstärkt 404- und 500-Fehler aufgetreten sind, die in der Regel daraus resultieren, dass die angeforderte Datei mittlerweile nicht mehr vorhanden ist. D.h. sie ist eigentlich schon noch vorhanden, heißt jetzt nur etwas anders und ist u.U. in einem anderen Verzeichnis. Um jetzt die verunsicherten Besucher, die das ja auch nicht wissen können, nicht ganz hängen zu lassen, habe ich ein individuelles ErrorDocument eingesetzt, das jeden Fehler individuell behandeln und bei bekannten Dateien die neue Adresse verraten soll. Allerdings funktioniert dieses Verfahren auf dem Server meines Providers noch nicht immer zuverlässig, weshalb in manchen Fällen nur eine Meldung "Interner Serverfehler" angezeigt wird. Um die Abdeckung dieser Fälle werde ich mich aber auch noch kümmern.

Auf dem neuesten Stand der Technik wird dieses Projekt meiner privaten Homepage und allen weiteren Internet-Präsenzen, die die technischen Voraussetzungen dafür mitbringen, als Vorbild dienen, nicht zuletzt, weil es browserunabhängig die wichtigsten Funktionen bereits auf dem Server zusammensetzt und mit PHP wie bereits mit der Vorgängertechnologie JavaScript den Browser sowie vielleicht auch den Besucher erkennt und entsprechend individuelle und speziell optimierte Daten liefern kann.