Welchen Sinn hat die bbcode_uid?

Kurzbeschreibung:
Der Artikel beschreibt, warum phpBB Beiträgen mit BBCode ein Feld bbcode_uid einfügt und dessen Inhalt in die BBCode-Tags mit einmischt.

Gilt für phpBB-Version:
phpBB 3.0, phpBB 3.1
Tags:
Allgemeines/Grundlagen, Für Entwickler, Konfiguration und Administration, Modifikationen, QS_2014, Templates und Styles, Tipps und Tricks
Keywords:
b, bbcode, bbcodeuid, bbcode_uid, code, color, html, img, make_bbcode_uid, quote, uid
b bbcode bbcodeuid bbcode_uid code color html img make_bbcode_uid quote uid phpBB 3.x wandelt BBCodes beim Abspeichern in eine Zwischenversion um, welche zusätzlich einen seltsamen Code enthält, den sogenannten bbcode_uid (BBCode unique identifier). Dieser besteht aus 6 Buchstaben und/oder Ziffern.

Warum überhaupt ein Zwischenschritt?

Da seit phpBB 2.x der HTML-Code der BBCodes Template-spezifisch ist (bbcode.html im Template-Verzeichnis), kann die endgültige Umwandlung erst beim Anzeigen des Beitrages vorgenommen werden (der Autor des Beitrages könnte ja ein anderes Template ausgewählt haben als derjenige, der ihn liest). Der Zwischenschritt hat den Sinn, dass trotzdem ein Großteil der Zeitaufwendigen Prüfungen bereits beim Abspeichern des Beitrages (und somit nur einmal) durchgeführt werden müssen.

Prinzip bei phpBB erklärt

Im Wesentlichen basiert dies darauf, dass zwei verschiedene Ersetzungsfunktionen verwendet werden:
  • preg_replace ist eine komplexe Funktion, welche mittels Regulärer Ausdrücke z.B. die Möglichkeit bietet, ein [starttag] und ein [/endtag] einander zuordnen zu können. Dies ist nötig, damit böswillige Benutzer beispielsweise nicht durch einen Beitrag, der nur aus dem Tag [b] besteht, bewirken, dass der komplette Rest der Seite fett dargestellt wird.
  • str_replace hingegen kann lediglich einen festen Text durch einen anderen festen Text ersetzen, ist dafür jedoch um ein Vielfaches schneller als preg_replace.
Beim Abspeichern wird zuerst der Beitragstext mit preg_replace geparst, um zusammengehörige Start-/Endtags zu erkennen. Diese werden durch die gleichen BBCode-Tags mit der angehängten bbcode_uid ersetzt. Beispiel: [x]Hallo[/x] wird zu [x:abc123]Hallo[/x:abc123]. Somit werden die "nicht böswilligen" BBCodes gekennzeichnet, um diese dann beim Anzeigen der Funktion str_replace übergeben zu können, welche performanceschonend alle Vorkommen von [x:abc123] durch <x> sowie [/x:abc123] durch </x> ersetzen kann.
Um zu verhindern, dass jemand diesen Schutz umgeht, indem er direkt [x:abc123] schreibt, wird die bbcode_uid bei jedem neuen/bearbeiteten Beitrag zufällig erstellt und mit in der Datenbank abgespeichert.


  • Ähnliche Artikel
    Relevanz
    Zugriffe
    Zuletzt bearbeitet
  • Warum BBCode?
    Dieser Artikel beschreibt, wieso in den Foren-Softwaren BBCode statt HTML verwendet wird.
    12.8
    12254 Zugriffe
    Zuletzt bearbeitet von AYYILDIZLAR
    23.03.2014 18:11
  • Links im neuen Browser-Fenster
    Links lassen sich durch diese Änderung wieder in einem neuen Browser Fenster öffnen.
    9.0
    33699 Zugriffe
    Zuletzt bearbeitet von AYYILDIZLAR
    16.04.2014 14:32
  • Wie kann ich das phpBB-Login auf meiner Homepage verwenden?
    Der Artikel beschreibt, wie man die Session-Verwaltung von phpBB auf seine Homepage ausweitet und z.B. die Login-Funktion des phpBB nutzt.
    8.5
    61226 Zugriffe
    Zuletzt bearbeitet von Elsensee
    08.05.2014 22:01
  • Hinzufügen von benutzerdefinierten BBCodes in phpBB3
    So könnt ihr benutzerdefinierte BBCodes erstellen
    7.8
    10839 Zugriffe
    Zuletzt bearbeitet von Lehrling
    22.01.2017 09:13
  • Code des Styles finden und ändern
    Dieser Artikel beschreibt, wie du HTML- oder CSS-Code deines Styles finden und ändern kannst.
    7.7
    16066 Zugriffe
    Zuletzt bearbeitet von AYYILDIZLAR
    13.03.2014 02:08