Technische Dokumentation

Dieser Abschnitt beschreibt Architektur, Projektdateien, Inhaltsauflösung, Sicherheitsmechanismen und lokale Bibliotheken.


Klein und schnell

Das komplette Installationspaket ist als ZIP nur rund 123 KB gross und benötigt entpackt lediglich etwa 336 KB Speicherplatz. Damit bleibt SB30 aussergewöhnlich kompakt.

SB30 braucht weder Datenbank noch grosses Framework und auch keinen Build-Prozess. Seiteninhalte werden direkt aus einfachen Dateien gelesen. Die kurzen Ausführungswege und die lokal eingebundenen Bibliotheken sorgen deshalb für schnelle Seitenaufrufe mit wenig technischem Ballast.

Die tatsächliche Ladezeit hängt zusätzlich vom Webserver, der Verbindung und der Grösse der verwendeten Bilder ab.


Architektur und Dateien

  • index.php: Request, Menü, Layout und Editor-Einbindung
  • settings.php: Konfiguration
  • styles.css: responsives Layout
  • app.js: Navigation, Editor und Bildbetrachter
  • upload-image.php: geschützter JSON-Upload
  • includes/site.php: Pfade und Inhalte
  • includes/admin.php: Anmeldung, CSRF und Speichern
  • includes/gallery.php: Bildskalierung und Galerieausgabe
  • seiten/: Inhaltsbaum; bilder/: Uploads; assets/vendor/: lokale Bibliotheken

Inhaltsauflösung

Geladen wird die erste vorhandene Datei in der Reihenfolge index.php, index.html, inhalt.html, inhalt.php. Nur HTML-Dateien sind visuell bearbeitbar. Gewählte Pfade werden normalisiert, mit realpath() geprüft und müssen innerhalb von seiten/ liegen; .. wird abgelehnt.


Sicherheit und Speichern

Anmeldung und Bearbeitungsmodus liegen in der PHP-Session. Zustandsändernde Formulare nutzen CSRF-Tokens. Speichern ist nur authentifiziert, im Bearbeitungsmodus und auf Seiten ohne Unterordner möglich. Der HTML-Cleaner ist kein vollständiger Sanitizer; Bearbeitung darf nur vertrauenswürdigen Personen offenstehen.


Upload

Der Upload akzeptiert nur POST im aktiven Bearbeitungsmodus und prüft MIME-Typen mit Fileinfo. Eine eigene Dateigrössenlimite gibt es nicht; PHP- und Webserver-Limits gelten.


Galerie

Galerien erzeugen mit GD proportionale Varianten, überspringen vorhandene Dateien und sortieren natürlich nach Dateinamen.


Lokale Bibliotheken

Alle Bibliotheken liegen lokal unter assets/vendor/. Verwendet werden jQuery 3.7.1, Trumbowyg 2.31.0 und jquery-resizable-dom 0.35.0.

Trumbowyg wird durch die Erweiterungen Resizimg, Table, Font Family, Font Size, Colors, Special Chars, Emoji und Cleanpaste ergänzt. Die Upload-Funktion ist oben als eigener technischer Bereich beschrieben.