JavaScript Uhr


8t88's CMS v2.1.2a
http://www.8t88.de/
Valid XHTML 1.0 TransitionalValid CSS!
FAQ: Übersicht (sticky)
Philosophie

Funktionen

Fehlerbehebung

Plugins

Kosmetisches
FAQ: Das Bildergalerie-Plugin im Überblick
Funktionen
  • Das "gallery" Plugin fungiert als FrontEnd zu einem Bilderverzeichnis, das sich irgendwo auf Ihrem Webserver befinden kann.
  • Der Webserver sollte Schreibrechte auf das Bilderverzeichnis besitzen, da anderenfalls die Bildrotations- und Beschriftungsfunktionen nicht genutzt werden können!
  • Jedes Unterverzeichnis im Bilderverzeichnis (eine Ebene) stellt eine Galerie dar.
  • Die Verzeichnisnamen sind die Namen der Galerien. Rekursion in weitere Unterverzeichnisse wird nicht unterstützt!
  • Jede Galerie kann selektiv mit einem Zugangsschutz versehen werden.
  • Jede Galerie kann alternativ ein Galeriebild zur besseren Unterscheidung der Galerien untereinander erhalten.
  • Jedes einzelne Bild innerhalb einer Galerie kann beschriftet werden.
  • Beschriftungen werden unterhalb des jeweiligen Bildes angezeigt.

Technische Details
  • An "8t88's CMS v2" angemeldete Benutzer haben Zugriff auf alle Funktionen und Galerien der Bildergalerie.
  • Nicht angemeldete Benutzer können nur Bilder der nicht-geschützen Galerien ansehen,
  • oder müssen sich mit Benutzername und Passwort an den geschützen Galerien anmelden.
  • Das "gallery" Plugin legt eine neue Tabelle "galleries" in 8t88's Datenbank an. In diese Tabelle werden Informationen wie Zugangsdaten zu den jeweiligen Galerien, Galeriebilder und SessionIDs abgelegt.
  • Das "gallery" Plugin benötigt zur einwandfreien Funktion das exzellente "Image::ExifTool" Perlmodul, welches Sie z.B. unter Debian sehr einfach mittels root@host:~$ apt-get install libimage-exiftool-perl nachinstallieren können.
  • Damit der Zugangsschutz für "Private Galerien" nicht nutzlos wird sollte sich das Bilderverzeichnis nicht im DocumentRoot befinden.
  • Sollte sich das nicht vermeiden lassen legen Sie eine ".htaccess" Datei im Bilderverzeichnis ab, Inhalt: deny from all
    Damit sperren Sie unerwünschte Zaungäste wirksam aus! (Probieren Sie es aus! ;-))
  • In der "Indexansicht" werden kleinere Versionen ("Thumbnails") Ihrer Bilder angezeigt, um das zu übertragene Datenvolumen gering zu halten. Diese Vorschaubilder können etwas grobkörnig wirken.

Hinweise
  • Galeriebild und Zugriffsschutz einer Galerie schließen sich gegenseitig aus. Geschützte Galerien haben kein Galeriebild!
  • Trotz gleichlautender Option kann das "gallery" Plugin Bilder nicht drehen. Statt dessen schreibt es Informationen zur Bildausrichtung ("Exif") in die Bilddatei.
  • Die Vorschaubilder können derzeit nicht "gedreht" werden.
  • Damit die so "bearbeiteten" Bilder in der Einzelansicht richtig dargestellt werden ist ein geeignetes Anzeigeprogramm nötig.
  • Im FireFox- oder InternetExplorer Webbrowser werden diese Bilder evtl. nicht gedreht angezeigt, so dass diese Funktion dort scheinbar keine Auswirkungen haben kann - die "Exif-Info" der Bilder wird dort schlicht nicht ausgewertet!
  • Das "gallery" Plugin verfügt über keinerlei Mechanismen Bilder zu Galerien hinzuzufügen, zu entfernen, umzubenennen, etc.pp.
  • Sie können hierfür ggf. 8t88's Dateimanager verwenden.
FAQ: Mein neu geschriebenes Plugin funktioniert nicht!
"8t88's CMS v2" Plugin System ist so ausgelegt, dass fehlerhafte Plugins das Gesamtsystem nicht beeinträchtigen.
Genauer: Erzeugt ein Plugin einen Fehler, dann wird es stillschweigend ignoriert!

 

Wenn Plugins generell funktionieren,
aber Ihr neu geschriebenes Plugin nicht, können Sie die Option "Debug-Modus für Plugins" in den CMS Systemeinstellungen aktivieren. Nun bricht das CMS die Ausführung Ihres Plugins mit einer Fehlermeldung ab, die Ihnen die gezielte Fehlersuche und -behebung ermöglicht.
(Sie sollten diese Option nach Abschluss der Arbeiten wieder deaktivieren!)

 

Wenn Plugins überhaupt nicht funktionieren
  • sollten Sie zunächst überprüfen, ob das Plugin-System in den CMS Systemeinstellungen aktiviert wurde!
  • Rufen Sie anschließend die Plugin-Übersicht auf! Dort sollten jetzt alle installierten Plugins aufgelistet sein!
  • Sind in der Übersicht keine Plugins aufgeführt prüfen Sie den Speicherort für Ihre Plugins. "8t88's CMS v2" erwartet seine Plugins in einem Unterverzeichnis "plugins" im selben Ordner, der auch die "index.pl" (das CMS selbst) enthält!
    (Sie können den Speicherort des Plugin Verzeichnisses im Kopf der "index.pl" ändern!)
  • Tauchen die Plugins noch immer nicht in der Übersicht auf, dann stimmt etwas mit den Plugin-Dateien nicht, oder Ihr Webserver hat keinen Lesezugriff auf das Plugins-Verzeichnis!
Basics: DB-Strukturen im Überblick
TabelleFelderBeschreibung
configoption
value
Name der Option
Wert der Option
flockid
name
user
ID der Dateisperre
ID des gesperrten Beitrags
Name des "Besitzers" der Dateisperre
userid
name
pass
realname
Session-ID der aktuellen Sitzung
Login-Name
Passwort (crypt-verschlüsselt)
Anzeigename
commentsid
reference
name
email
comment
ID des Kommentars
ID des zugehörigen Beitrags
Name des Kommentarschreibers
eMail-Adresse des Kommentarschreibers
Der abgegebene Kommentar
storyid
name
time
content
category
sticky
ID des Beitrags
Login- bzw Anzeigename des Verfassers
Erstellungszeitpunkt des Beitrags (UNIX Timestamp)
Inhalt des Beitrags
Die gewählte Kategorie
Beitrag ist "sticky" (1/0)
gbookid
name
time
content
comment
email
url
ip
ID des Gästebucheintrags
Name des Gästebuchschreibers
Zeitpunkt des Gästebucheintrags (UNIX Timestamp)
Inhalt des Gästebucheintrags
Antwort des Gästebuchbesitzers
eMail-Adresse des Gästebuchschreibers
Homepage des Gästebuchschreibers
IP-Adresse des Gästebuchschreibers
Basics: Systemfunktionen im Überblick
NameParameterBeschreibung und Rückgabewerte
embed_MakronameGeneriert aktive Inhalte, z.B. aus Plugins.
Gibt im Fehlerfall "undef" zurück!
use_pluginPlugintyp
Pluginname
String (optional)
Wendet ein anzugebenes Plugin an. Dieses kann entweder ein Makro sein, oder den optional übergebenen Text manipulieren.
Gibt im Fehlerfall "undef" zurück!
latest5-Gibt eine Liste mit den Überschriften der fünf neuesten, im CMS gespeicherten Beiträge zurück.
gbookreserviertCMS-eigene Gästebuchfunktion
commentreserviertCMS-eigene Kommentarverarbeitung
read_contentreserviertCMS-eigene Beitragsdarstellung
find_contentreserviertCMS-eigene Suchfunktion
processBeitragstyp
(oder "undef")
String
"8t88's CMS v2" Blog Code System
Verarbeitet den übergebenen String, der entweder ein Artikel (undef) oder ein Gästebucheintrag (gbook) bzw. ein Kommentar (comment) sein kann.
storyreserviertCMS-eigene Beitragsbearbeitung
filelockStory ID
Aktion
Verwaltung der Dateisperren von Beiträgen nach ID.
Aktion kann "0" sein (lockcheck), "1" (check) oder größer als Eins (override)!

 

Liefert "1" zurück, wenn der Beitrag innerhalb der Sperrzeit von einem anderen Benutzer bearbeitet wird. (check)
Liefert "undef" zurück wenn keine Sperre vorliegt oder eine Datei neu gesperrt wird. (override)
Liefert den Linktext zur Beitragsbearbeitung in der Betriebsart (lockcheck) zurück.
sendmailreserviertCMS-eigene Funktion zur Mailerzeugung
filemanagerreserviertCMS-eigener Datei- und Linkmanager
adminreserviertCMS-eigene Systemverwaltung
changepwreserviertCMS-eigene Funktion zur Passwortänderung
check_loginreserviertCMS-eigene Funktion zur Überprüfung der Gültigkeit einer Anmeldung
is_adminLogin-NameGibt "1" zurück, wenn der angemeldete Benutzer Admin-Rechte hat
realnameLogin-NameGibt den Anzeigenamen für "Login-Name" zurück
make_salt-Generiert die Portion "Zufall", die für die crypt-Funktion bei der Passwort-Änderung benötigt wird
del_cookie-Löscht den Cookie auf dem Benutzerrechner. Die Sitzung wird damit terminiert!
set_cookie-Erzeugt einen neuen Cookie auf dem Benutzerrechner mit einer Haltbarkeit von $config{'expires'} Minuten
statusMeldung
Farbwert
Gibt eine Meldung in der CMS Statuszeile (oberer Bildrand) mit übergebener Hintergrundfarbe aus. Wird kein Farbwert übergeben ist der Hintergrund minzgrün! (Status "ok")
create_dbreserviertCMS-eigene Funktion zur Erstellung einer Datenbank nach der Installation
db_querySQL-Befehl
Bind-Vars (optional)
Liefert eine Liste (Strings) mit Ergebnissen aus der Datenbankoperation zurück.
read_categoriesreserviertCMS-eigene Funktion, die die Beiträge der einzelnen Kategorien auszählt und nach Vorgabe sortiert.
date2stampSekunde
Minute
Stunde
Tag
Monat
Jahr
Liefert den Unix Timestamp zum übergebenen Datum zurück. Ist "undef", wenn das übergebene Datum ungültig ist!
pretty_dateTag
Monat
Jahr
Formatiert das übergebene Datum nach TT.MM.JJJJ
pretty_timeStunde
Minute
Formatiert die Zeit nach HH:MM
stamp2dateUNIX TimestampUmkehrfunktion zu date2stamp, liefert eine Liste mit Sekunde, Minute, Stunde, Tag, Monat, Jahr zurück
default_cssreserviertCMS-interne Funktion
default_jsreserviertCMS-interne Funktion
default_contentreserviertCMS-interne Funktion: Seite, die angezeigt wird, wenn noch keine Beiträge eingestellt wurden!
default_templatereserviertCMS-interne Funktion
Basics: Systemvariablen im Überblick
NameDatenBeschreibung
$dbStringEnthält die SQLite Datenbank-Definition (bestehend aus Datenbank-Treiber und Dateiname)
$_[0]StringEnthält den aktuellen Plugin-Typ (macro, override, articles, global, responses)
$_[1]StringEnthält den Namen der Funktion bzw. des Makros (macro, override) bzw. den Namen des Plugins (articles, global, responses)
$_[2]StringEnthält die mit dem Plugin zu manipulierenden Daten (nur articles, global, responses)
$_[3]StringEnthält die ID des gerade aktuellen Beitrags/Artikels/etc. (nur articles, responses)
$pathStringEnthält den kompletten Pfad im Server-Dateisystem zur "index.pl"
$versionStringEnthält die Version der "index.pl"
$plugindirStringEnthält das aktuell verwendete Plugin-Verzeichnis
$adminBooleanIst "1" wenn der aktuell angemeldete Benutzer Administratorrechte hat
$userStringEnthält den Anmeldenamen des angemeldeten Benutzers
$catStringEnthält den Namen der aktuell angezeigten Kategorie
$outStringEnthält die Rohfassung der anzuzeigenden Seite
$sessionIntegerEnthält den Anmeldezeitpunkt (Beginn der CMS Sitzung) des Benutzers als "UNIX Timestamp"
@categoriesListeEnthält eine (sortierte) Liste der verwendeten Kategoriennamen
@tablesListeEnthält eine Liste der in der Datenbank vorhandenen Tabellennamen
%categoriesHashEnthält eine (unsortierte) Liste mit den Kategoriennamen als Schlüssel und die Anzahl der Beiträge als Wert
=> {Name}IntegerEnthält die Anzahl der Beiträge in der Kategorie {Name}
%configHashEnthält die gesamte Konfiguration des "8t88's CMS v2" als (Schlüssel/Wert) Paare
=> 8t88.cssStringEnthält das globale Stylesheet für "8t88's CMS v2"
=> 8t88.jsStringEnthält das globale JavaScript für "8t88's CMS v2"
=> autosortBooleanSteuert, ob die Kategorien in der Übersicht automatisch oder manuell sortiert werden
=> breakIntegerSteuert die Darstellung des eingebauten Gästebuchs: Bei mehr als n Einträgen "blättern"
=> cat_countBooleanSteuert die Anzeige der Beitragszahl global in der Kategorienübersicht
=> cat_defaultStringEnthält den Namen der als Standard festgelegten Kategorie (Startseite)
=> cat_orderStringEnthält die vom Benutzer sortierte Kategorienliste (in Form von kommaseparierten Kategoriennamen)
=> charsetStringEnthält den Ausgabezeichensatz des "8t88's CMS v2" Skripts
=> commentsIntegerSteuert die Verfügbarkeit des Kommentarsystems für Beiträge
=> expiresIntegerSteuert die maximale Gültigkeitsdauer einer "8t88's CMS v2" Sitzung (Minuten)
=> filelockIntegerSteuert die maximale Gültigkeitsdauer einer Dateisperre (Minuten)
=> formmailStringEnthält die Zieladresse für eMail-Benachrichtigungen
=> highlightBooleanSteuert die Highlight-Funktion zur Hervorhebung von Suchbegriffen in Suchergebnissen
=> languageStringEnthält das Kürzel für die Anzeigesprache (Standard: de)
=> metaStringEnthält die META-Zeilen für die Ausgabe im HTML-Kopfbereich
=> notifyBooleanSteuert, ob ein Gästebucheintrag oder Kommentar eine eMail-Benachrichtigung auslöst
=> pluginsBooleanSteuert, ob das Plugin-System aktiv oder inaktiv ist. Wenn inaktiv, werden Plugins ignoriert.
=> sendmailStringEnthält den Pfad zur Sendmail Executable
=> showipBooleanSteuert, ob bei Gästebucheinträgen die IP-Adresse des Absenders angezeigt wird
=> templateStringEnthält das Grundgerüst (Template) für die Ausgabe der Seite
=> titleStringEnthält die Überschrift unserer Webseite
%userHashEnthält die Loginnamen mit den zugeordneten Anzeigenamen als (Schlüssel/Werte) Paare
=> {Name}StringEnthält den Anzeigenamen des Benutzers {Name}
FAQ: Was passiert, wenn der Beitrag gelöscht wird, den ich gerade bearbeite?
Vorweg:
Wenn jemand einen Beitrag löschen will, den jemand anderer gerade bearbeitet, erhält er zunächst eine Warnmeldung vom CMS. Wenn diese Warnmeldung ignoriert und der zugehörige Beitrag bedenkenlos gelöscht wird, hat man ein ernstes Problem mit den angelegten Benutzern - diese sollten sich schließlich absprechen und zusammen arbeiten! 
Es ist nicht Aufgabe des CMS Probleme in der Absprache der Benutzer untereinander zu lösen oder diese zu bevormunden. Daher hindert das CMS auch keinen Benutzer daran, einen gegenwärtig durch einen anderen Benutzer in Bearbeitung befindlichen Artikel zu bearbeiten!

 

Ablauf:
Wenn ein anderer Benutzer den Beitrag löschen will an dem ich gerade selbst schreibe, muss er zunächst die Warnmeldung des CMS bestätigen, wodurch die Dateisperre aufgehoben und durch eine neue ersetzt wird. Der Beitrag "gehört" nun dem zweiten Benutzer.
Jetzt kann der Beitrag gelöscht werden. Dabei wird nicht nur die neu erstellte Dateisperre aus der Datenbank gelöscht, sondern auch der Beitrag selbst und alle (evtl. vorhandenen) verbundenen Kommentare.
Wenn ich nun meinen Beitrag speichere wird der zuvor vom anderen Benutzer gelöschte Beitrag wiederhergestellt - natürlich in meiner Fassung! Sind zum ursprünglichen Artikel Kommentare hinterlassen worden, sind diese unwiederbringlich verloren. Natürlich wäre es möglich - eine regelmäßige Datensicherung vorausgesetzt - zu einer früheren Version der Datenbank zurückzukehren, Datenverluste können aber nie völlig ausgeschlossen werden!

 

Fazit:
Wenn ein anderer Benutzer des CMS den Beitrag löscht, an dem ich gerade schreibe, merke ich davon selbst beim Speichern nichts. Schließlich wird der Beitrag in meiner Version wieder in die Datenbank geschrieben. Vermutlich würde ich mich aber wundern wohin die Kommentare verschwunden sind, die vielleicht vorher zu diesem Beitrag abgegeben und gespeichert wurden.
Wie kann ich das Aussehen der Kategorienelemente manipulieren?
Kategorienelemente können auf vier unterschiedliche Arten dargestellt werden:
  • Als einfaches Listenelement mit Beitragszahl
  • Als einfaches Listenelement ohne Beitragszahl
  • Als eingerücktes Listenelement mit Beitragszahl
  • Als eingerücktes Listenelement ohne Beitragszahl

Einfaches Listenelement mit Beitragszahl
  1. Schalten Sie die Anzeige der Beitragszahl in den CMS-Systemeinstellungen ein, oder
  2. hängen Sie dem Namen Ihrer Kategorie einen Unterstrich an, z.B. News_

Einfaches Listenelement ohne Beitragszahl
  • Schalten Sie die Anzeige der Beitragszahl in den CMS-Systemeinstellungen aus.

Eingerücktes Listenelement mit Beitragszahl
  • 1. Schalten Sie die Anzeige der Beitragszahl in den CMS-Systemeinstellungen ein, oder
    2.
    hängen Sie dem Namen Ihrer Kategorie einen Unterstrich an, z.B. FAQ_
  • Stellen Sie zusätzlich vor den Namen Ihrer Kategorie einen Unterstrich, z.B. _FAQ_

Eingerücktes Listenelement ohne Beitragszahl
  • Schalten Sie die Anzeige der Beitragszahl in den CMS-Systemeinstellungen aus.
  • Stellen Sie zusätzlich vor den Namen Ihrer Kategorie einen Unterstrich, z.B. _Download

Die zusätzlichen Unterstriche vor und hinter dem Kategorienamen werden vom CMS ausgefiltert.
FAQ: Die farbliche Hervorhebung der Suchfunktion funktioniert nicht!
  • Wenn Sie von einer älteren Version des "8t88's CMS" aktualisiert haben fehlt Ihnen wahrscheinlich ein Abschnitt in Ihrem Stylesheet. Stellen Sie bitte sicher, dass der Abschnitt ".find" vorhanden ist! (-> "CMS verwalten" -> "Stylesheet bearbeiten")
  • Ändern Sie die gewählten Farben ggf. so, dass sie sinnvoll zur Farbgebung Ihrer Webseite passen.

Beispiel:
.find {
     background-color: yellow;
     font-weight: bold;
     color: black;
}

  • Bei Verwendung der <!--NOPROCESS--> Option in Beiträgen wird der gefundene Suchbegriff nicht farblich hervorgehoben!
FAQ: Das "8t88's CMS" beschwert sich über ein fehlendes DBI Modul!
Nicht bei allen Webhostern sind alle für "8t88's CMS v2" benötigten Module vorinstalliert. Ausgehend von einem Standard-Debian-System schafft die Ausführung des nachfolgenden Befehls als "root" Abhilfe.

 

user@host:~$ apt-get install libapache-dbi-perl libdbd-sqlite3-perl

 

Bei nicht auf Debian basierenden Distributionen verwenden Sie bitte die distributionsspezifischen Werkzeuge um die fehlenden Pakete nachzuinstallieren.
FAQ: Warum hast Du "8t88's CMS" geschrieben?
Seit je her habe ich eine Vorliebe für handgeschriebenen Code, da dieser nach meinem Empfinden besser durchdacht und kompakter ist als "generierter" Code der gängigen Webseiten-Zusammendängel-Programme wie z.B. fügen Sie Ihren Kandidaten hier ein.

 

Hier mein Pflichtenheft:
  • Ich möchte, dass meine Webseiten standardkonform sind und auf allen gängigen Browsern vetretbar dargestellt werden.
  • Ich möchte, dass meine Webseiten von (theoretisch) jedem an das Internet angeschlossenen PC bearbeitet werden können.
  • Ich möchte die volle Kontrolle über meinen Code haben, genau wissen, was er tut.
  • Ich möchte ein einfach zu wartendes System haben.
  • Ich bin zu faul selbst jede einzelne HTML-Seite von Hand zu schreiben.
  • Ich möchte mir - abgesehen vom Webserver - nicht noch SQL-Server etc. als potentielle Fehlerquelle oder gar Sicherheitslücke an den Hals holen.

Das sind K.O.-Kriterien für die meisten derzeit am Markt befindlichen (für Endanwender gedachten) Lösungen...

 

Ich experimentierte mit holaCMS (PHP), ein Projekt das zwischenzeitlich von seinem Autor leider aufgegeben wurde, und schrieb die erste Fassung von "8t88's CMS". Diese kann im Download-Bereich in der letzten Version 0.5b heruntergeladen werden.

 

Mit "8t88's CMS v0.x" stieß ich schnell an Grenzen, auch störte mich der Umstand, dass die einzelnen Skriptdateien (die das CMS bilden) wie bei jedem anderen CMS an verschiedenen Orten in unterschiedlichen Verzeichnissen herumlagen, so dass ich die Entwicklung einstellte und mich weiter umsah.

 

Blosxom kam mir gerade recht. Allerdings stieß ich auch hier sehr schnell auf Grenzen - Blosxom ist eben weniger ein Homepage- als ein Blog-System. Das zugrunde liegende System ist ebenso genial wie primitiv: Man bloggt indem man einfache Textdateien in einen definierten Verzeichnisbaum ablegt.

 

Ein vielversprechender Kandidat war das MoinMoin Wiki System. Doch gleich nach der testweisen Installation kam ich zum Schluss, dass es sich um ein geniales System handelt, welches sich aber für meine Zwecke nur bedingt eignet.

 

Ich stolperte über SQLite, fand das zugrunde liegende Konzept äußerst vielversprechend, nahm Anleihen aus allen Systemen, die ich bis dahin selbst getestet und geschrieben hatte, und das Resultat war "8t88's CMS v2.x" - genau das Homepage-Weblog-Wiki-Tool, das ich haben wollte.
Ich kann nicht dafür garantieren, dass irgend jemand außer mir damit etwas anfangen kann, stelle es aber liebend gerne der Allgemeinheit im Rahmen der GPL zur Verfügung.
FAQ: Wie kann ich den "/cgi-bin/index.pl" Teil der URL verschwinden lassen?
Wenn Sie den /cgi-bin/index.pl Teil der URL Ihres 8t88's CMS zum Seitenaufruf Ihrer Webseiten nicht mit eingeben wollen haben Sie mit Apache2 mindestens zwei Möglichkeiten:

 

1. Möglichkeit: URL-Weiterleitung per Redirect
Erweitern Sie die Konfigurationsdatei Ihres Servers um eine RedirectMatch Direktive:

 

RedirectMatch ^/$ /cgi-bin/index.pl

 

Vorstehende Direktive bewirkt, dass ein Besucher, der z.B. http://www.8t88.de/ in die Adresszeile seines Browsers eingegeben hat, automatisch auf http://www.8t88.de/cgi-bin/index.pl umgeleitet wird. Übergebene Parameter werden weiter gereicht.
Nachteil: Der /cgi-bin/index.pl Teil der URL bleibt in der Browser-Adresszeile sichtbar!

 

2. Möglichkeit: URL-Weiterleitung per mod_rewrite
Wenn mod_rewrite noch nicht aktiv sein sollte holen Sie das mit user@host:~$ a2enmod rewrite nach.
Anschließend erweitern Sie die Konfigurationsdatei Ihres Servers um die entsprechenden Rewrite Direktiven:

 

RewriteEngine On
RewriteBase /
RewriteRule ^$ /cgi-bin/index.pl?$1 [L,NC,QSA]
ScriptAlias /cgi-bin "/pfad/zu/cgi-bin"
AddHandler cgi-script .cgi .pl

 

Vorstehender Code bewirkt, dass beim Aufruf von z.B. http://www.8t88.de/ für den Besucher unsichtbar auf http://www.8t88.de/cgi-bin/index.pl zugegriffen wird. Auch übergebene Parameter werden weitergereicht. Die Zeilen 4 und 5 sorgen unter Anderem für den Schutz Ihres /cgi-bin Verzeichnisses und dafür, dass die "index.pl" des CMS als CGI Skript erkannt wird.
FAQ: Der FormMailer funktioniert nicht!
Wenn der FormMailer nicht funktioniert kommen mehrere Fehlerquellen in Betracht:
  • Es muss eine gültige, von "name@domain.com" abweichende eMail-Adresse eingestellt sein!
  • Der eingestellte Pfad zu sendmail (Standard: "/usr/lib/sendmail") muss korrekt sein.
    Das setzt natürlich ein funktionierendes, zu sendmail kompatibles, Mailsystem voraus!
  • Der FormMailer setzt "sendmail" voraus. UNIX-artige Betriebssysteme sind i.d.R. sendmail-kompatibel, daher sind hier keine ernsthaften Probleme zu erwarten.
  • Auf Windows-basierten Servern sind möglicherweise Änderungen am CMS nötig, um den eMail-Versand zu ermöglichen. Mangels Windows-Server kann ich das nicht gegenchecken, wahrscheinlich gibt es aber Workarounds für sendmail.
FAQ: Wie funktioniert das Kontaktformular? (FormMailer)
Der FormMailer weicht in seiner Auslegung von den übrigen Makros ab. Es ist so zu verwenden, dass der HTML-Quelltext für dieses Formular in einen Beitrag eingebettet wird. Damit beim Absenden dieses Formulars auch eine eMail an die in den CMS Systemeinstellungen hinterlegte eMail-Adresse versendet wird, muss noch ein INPUT-Feld mit dem Namen "formmail" und einem beliebigen Wert > 0 eingebaut werden, z.B.:

 

<input type="hidden" name="formmail" value="1">

 

Um zu verhindern dass leere Formulare abgeschickt werden können Sie dem FormMailer mitteilen, welche Eingabefelder geprüft werden sollen. Wenn z.B. Ihr Kontaktformular drei Pflichtfelder "name", "email" und "nachricht" haben soll, fügen Sie Ihrem Formular einfach folgenden Code hinzu:

 

<input type="hidden" name="required" value="name,email,nachricht">
FAQ: Was ist mit der Checkbox im Gästebuch passiert?
Die Checkbox "Ich bin ein Mensch!" sollte Gästebuch-Spammern das Leben schwer machen, indem zusätzlich zum Gästebucheintrag noch eine Aufgabe zu erledigen war, nämlich eine Checkbox anzuhaken.
In der Annahme das wäre für die Gästebuch-Spammer eine ernsthafte Hürde wurde ich eines Besseren belehrt, also musste ich mir etwas Neues einfallen lassen:

 

8t88's CMS v2 arbeitet ab der Version 2.0.2 mit einem Mechanismus, der einen neuen Gästebucheintrag nur speichert, wenn das Gästebuchformular manuell durch Druck auf die Schaltfläche "Eintragen" abgeschickt wurde.
Die Checkbox "Ich bin ein Mensch!" wird daher nicht mehr benötigt!
FAQ: Was hast Du gegen eine Datenbank?
Betrachtet man die meisten CMS-gestützten Homepages/Webseiten/etc., so stellt man fest, dass die Inhalte meist statisch sind, alle Jubeljahre mal eine Aktualisierung stattfindet, und die Datenbank eigentlich gar nicht benötigt wird. Auch bei häufigen Aktualisierungen wird die Datenbank in der Regel nicht benötigt, da der Inhalt an sich trotzdem statisch ist!

 

Betrachtet man dagegen "große" Webseiten kommerzieller Anbieter erkennt man sofort, dass die Inhalte nicht statisch sind. Hier ist die Anbindung an eine (oder mehrere) Datenbank(en) für das Funktionieren der Webseite essenziell wichtig!

 

Wir stellen also fest, dass eine externe Datenbank für eine Webseite erst ab einem gewissen Umfang Sinn macht, bis dahin stellt sie nur eine mögliche Fehlerquelle dar! Hast Du Dich nie geärgert daß eine Webseite nicht zu benutzen war weil ein "Datenbankfehler" aufgetreten ist?

 

"8t88's CMS v2" verbindet die Vorteile einer externen Datenbank mit der Geschwindigkeit von lokal gespeicherten Inhalten. Ermöglicht wird das durch den Einsatz von SQLite.