PHP

Was ist das eigentlich?

PHP ist eine Serverseitig interpretierte Scriptsprache, die in HTML-Dokumente eingebettet wird um Dynamische Websites zu erstellen. Desweiteren gibt es inzwischen auch schon das PHP-GTK-Projekt, welches versucht PHP als Clientseitige Programmiersprache zu etablieren

Wie sieht PHP aus?

Das beliebte Hello World beispiel:

<?php echo 'Hello World';?>

Sagt natürlich noch nicht viel aus. Meiner meinung nach wird PHP erst so richtig interressant mit Datenbankanbindung bzw XML-Verarbeitung. Das würde hier aber den Rahmen sprengen.

Was kann man so damit machen?

Als ich Ende ‘2000 an der Team-synergY Homepage gewerkelt hab wurde mir klar, dass ich ohne Serverseitiges Scripting ein paar Ideen nicht Implementieren konnte wie ich wollte. Kurzerhand hab ich die komplette Seite in PHP geschrieben. Anfang 2001 fragte mich “Schoki” von planetdod.de ob ich nicht für die Site ein Redaktionssystem (“Content Management System”) entwickeln könnte. Da ich inzwischen schon etwas Erfahrung gesammelt hab, nahm ich das Angebot an. Ursprünglich wollte ich das Team-synergY-Projekt einfach umstricken und an die Bedürfnisse von planetdod.de anpassen. Ich merkte aber bald, dass die Scripte nicht flexibel genug ausgelegt waren und begann das Ganze von grund auf neu aufzurollen. Entstanden ist ein CMS mit Rechteverwaltung für Newsposting, Webinterface zur Verwaltung der Sektionen und anderer kleiner Features. Dieses System hat sich unter der Last von ca 2000 Usern/Tag bewährt. Naja, und eine etwas weiter entwickelete Version dessen ist hier nun im Einsatz.

update: hier läuft jetzt das content-management system typo3 weil ich es leid war das rad neu zu erfinden. ich werde mein altes cms jedoch nich im stich lassen und es wieder einsetzen wenn es denn nötig wird. denn so ein paar kleine dinge passen mir beim typo3 noch ned so ganz

update 17.3.2005: typo3 hab ich hier auf meiner seite erstmal abgeschafft, ist fuer meine zwecke zu “fett”

mein höchsteigenes cms

jo wie bereits erwähnt hab ich mal ein content management system geschrieben. darauf möcht ich hier mal etwas näher eingehen

strukturierung:

kaum vorhanden *g* – prinzipiell läuft alles erstmal über einen gemeinsamen nenner:

der http-get variable “sec” – da steht drin welche “section” für die aktuelle anfrage zuständig ist. sections sind unterverzeichnisse, welche üblicherweise php oder xml dateien enthalten. wenn eine xml datei behandelt wird sind andere parameter überflüssig. eine php datei (default.php) jedoch beinhaltet eine klasse, deren namen mit dem der sektion übereinstimmt. eine instanz dieser klasse wird generiert, und deren methode show() aufgerufen, welche nun an der macht ist. alles weitere kann der progger der sektion frei handhaben. er kann also auch weitere parameter erwarten und sie nach gutdünken auswerten. quasi ein plugin-system.

in der aktuellen version verdaut das cms als input für content:

  • php scripte, die in irgend einer form xml generieren
  • xml files an sich

um den output zu generieren muss natürlich noch zum ausgabeformat gerendert werden. für das web also xhtml. die entsprechenden xsl templates finden sich in include/xsl/xhtml10/. global templates quasi. von der struktur her kann es nun auch ein verzeichnis pdf14 geben, welches die templates für pdf 1.4 generierung beinhaltet. damit nun eine sektion eigene xml-tags verwenden kann, ist es nötig ihr auch raum für xsl-dateien zu bieten. zu diesem zwecke kann in einem section-verzeichnis xsl/xhtml10/ verzeichnis geschaffen werden, worin eine default.xsl dafür sorgt dass auch der content gerendert werden kann.

zur benutzerverwaltung habe ich damals das forum apboard von Alexander Mieland missbraucht. das bot sich einfach an, da mod’s im forum auch newsposter waren und admins auch admins des cms. später war es eher ein hindernis, aber was soll’s.

weiterhin ist auch ein logging-mechanismus implementiert, der benutzer auf schritt und tritt verfolgt. angemeldete nutzer im forum wurden identifiziert, logfileeinträge mit ihnen assoziiert. nicht registrierte nutzer bekamen auch einen cookie, session geloggt und bei späterer wiederkehr mit dem alten “besucher” assoziiert. ein netter mechanismus um herauszubekommen was die nutzer auf meiner seite speziell angeschaut haben. alle externen links wurden über einen redirector geschickt, dessen url als parameter auch im logfile landete.

naja das zum überblick – hier die sourcen: cms.tar.gz