WordPress für die Entwicklung von Webanwendungen Speichern von Daten

In Bezug auf das Web wird für fast jede Anwendung, die in Ihrem Browser ausgeführt wird, ein Datenspeicher von gespeichert etwas Art. Normalerweise haben diese Datenspeicher die Form einer Datenbank.

Bis vor kurzem waren die meisten Anwendungen auf einer Art SQL-Datenbank aufgebaut, aber mit dem Aufkommen von dokumentenbasierten Datenbanken wie CouchDB haben andere Anwendungen begonnen, auch andere Backends zu verwenden.

Nicht nur das: HTML5 und Browser implementieren Services für lokaler Speicher, wir können tatsächlich anfangen zu speichern etwas Daten auf Kundenseite. Offensichtlich ist dies nicht etwas, das Sie dauerhaft tun möchten, aber es gewährt ein Maß an Flexibilität und Power, das wir in letzter Zeit nicht hatten.

In der klassischen Variante der Webanwendungen ist WordPress eine datenbankgestützte Anwendung, die eine MySQL-Datenbank zum Speichern ihrer Informationen verwendet.

Bei dieser Serie geht es jedoch darum, Anwendungen auf WordPress aufzubauen. Zu diesem Zweck ist es wichtig, nicht nur zu verstehen, wie Informationen gespeichert werden, sondern auch, wie Informationen abgerufen werden.

Bei der Datenserialisierung ist es natürlich auch wichtig zu berücksichtigen, dass Benutzer versuchen, schädliche Daten in die Datenbank einzufügen. Daher liegt es in unserer Verantwortung, die Daten beim Einfügen der Daten in die Datenbank ordnungsgemäß zu bereinigen und sicherzustellen, dass die Daten beim Abrufen aus der Datenbank ordnungsgemäß umgangen werden.

In diesem Artikel werfen wir einen Blick auf die APIs, die WordPress für die Serialisierung von Informationen anbietet, sowie auf die Möglichkeiten zur Datenbereinigung. Anschließend runden wir den Artikel ab, indem wir uns ansehen, wie Sie Informationen sicher aus der Datenbank abrufen können.


Datenspeicher

Offensichtlich ist eines der Hauptunterscheidungsmerkmale zwischen normalen Websites und Webanwendungen ihre Fähigkeit, Daten zu verwalten, auf denen Daten gespeichert sind etwas Art der Datenbank. In der Regel bedeutet dies auch, dass Informationen auf Benutzerbasis gespeichert werden (jedoch nicht immer)..

WordPress bietet eine Vielzahl von APIs, die das Speichern und Abrufen von Daten erleichtern. Und das Schönste an der Speicherung von Daten in der WordPress-Datenbank ist vielleicht, dass Sie, sobald Sie die Funktionsweise einer API verstanden haben, in der Regel eine Vorstellung davon haben, wie der Rest von ihnen funktioniert.

Nachdem wir dies gesagt haben, schauen wir uns an, wie wir Informationen in der WordPress-Datenbank speichern.

Die Datenbank verstehen

Für diejenigen, die noch nicht vertraut sind, besteht WordPress nur aus einer Handvoll Tabellen. Für die Zwecke dieser Diskussion geht es uns in erster Linie darum, die folgenden Tabellen zu kennen:

  • wp_options. Die Optionstabelle ist für das Speichern von Informationen verantwortlich, die sich auf Einstellungen, Einstellungen und alles beziehen, was sich auf Einstellungen bezieht, die für alle Standorte gelten.
  • wp_posts. Diese Tabelle enthält Daten, die sich auf Posts beziehen. Obwohl wir nicht direkt mit dieser Tabelle arbeiten, ist es wichtig zu wissen, dass sie existiert, damit wir mit Post-Meta-Informationen arbeiten können.
  • wp_postmeta. Wie bereits erwähnt, ist diese Tabelle dafür verantwortlich, Metainformationen für einzelne Stellen zu halten. Und da Posts Seiten, Posts und benutzerdefinierte Beitragstypen darstellen können, speichern Sie hier Informationen, die sich auf jeden Ihrer Beitragstypen beziehen. Die Art der gespeicherten Daten ist äußerst flexibel, so dass Sie wirklich sehr viel Einfluss darauf haben können, wie Sie Informationen mit Beiträgen verknüpfen (unabhängig davon, für welchen Typ sie definiert sind)..
  • wp_kommentare. Diese Tabelle sollte selbstverständlich sein, aber hier werden alle Kommentare für beide Beiträge, Seiten und benutzerdefinierte Beitragstypen gespeichert. Mögen wp_posts, Hier werden wir nicht direkt Daten schreiben, aber es ist wichtig zu wissen, dass diese Tabelle existiert und dass es eine Kommentar-Metadatentabelle gibt, auf die wir zugreifen können, wenn Informationen in die Tabelle geschrieben werden.
  • wp_commentmeta. Wie schon erwähnt wp_postmeta, Hier werden Metadaten zu Kommentaren gespeichert. Auch wenn Sie nicht unbedingt generell mit Kommentaren in Webanwendungen arbeiten, haben Sie möglicherweise eine Blogkomponente für Ihre Anwendung. In diesem Fall ist es hilfreich zu wissen, wie Sie Daten aus der Tabelle lesen und in diese schreiben können.

Offensichtlich ist dies nur ein Überblick über einige der Datenbanktabellen, die WordPress unterstützen. Wenn Sie mit den restlichen Informationen vertraut sein möchten, sollten Sie nur die Datenbankbeschreibung überprüfen.

Nichtsdestotrotz sollte dies gut genug sein, um Standard beim Lesen und Schreiben von Informationen in die Datenbank zu erhalten.

Daten in die Datenbank schreiben

An diesem Punkt haben wir genügend Informationen über die Datenbankschicht, um einen Überblick über die APIs zu erhalten, die in der WordPress-Anwendungsschicht verfügbar sind und die es uns ermöglichen, von uns selbst und / oder durch Benutzereingaben bereitgestellte Informationen zu übernehmen.

Die Optionentabelle

Nun ist das Schreiben von Informationen in jede der obigen Tabellen sehr einfach.

  1. Es ist eine Frage des Verständnisses der verfügbaren APIs
  2. Es ist wichtig zu wissen, wie die Daten zu säubern sind

Zunächst werden die Funktionen beschrieben, die zum Lesen, Schreiben und Aktualisieren von Informationen in den WordPress-Optionstabellen verfügbar sind.

Hinzufügen und Aktualisieren von Optionen

WordPress bietet zwei Spezifikations-API-Funktionen zum Schreiben von Daten in die Datenbank. Eine kommt in Form von Informationen hinzu, eine in Aktualisierung von Informationen.

Um der WordPress-Optionstabelle Informationen hinzuzufügen, verwenden Sie die folgende API-Funktion.

add_option akzeptiert drei Parameter:

  1. Ein Schlüssel oder eine eindeutige Kennung für die Informationen
  2. Der Wert der zu speichernden Daten

Wenn wir zum Beispiel Informationen wie meinen Namen speichern wollten, würden wir so etwas tun:

add_option ('mein name', 'tom mcfarlin');

Wenn wir dagegen etwas mitnehmen wollten $ _POST Sammlung, dann können wir so etwas tun:

if (isset ($ _POST ['value']) &&! empty ($ _POST ['value']) add_option ('mein-wert', $ _POST ['value']);

Die Aktualisierungsoptionen sind sehr unterschiedlich. Es folgt demselben Schema und kann tatsächlich verwendet werden an Ort und Stelle von add_option Wenn die Option noch nicht vorhanden ist, wird sie erstellt.

Um den Punkt näher zu erläutern, werde ich nicht viel mehr Informationen über diese spezielle Funktion geben. Im Wesentlichen, update_option werden:

  • Fügen Sie die Option hinzu, wenn sie noch nicht vorhanden ist
  • Wenn vorhanden, den vorhandenen Wert überschreiben tut existieren

Nicht schlecht, richtig?

Ein Wort zum Thema Mod

Für diejenigen von Ihnen, die mit WordPress-Themes gearbeitet haben - insbesondere wenn Sie den Theme-Customizer verwenden - sind Sie wahrscheinlich mit dem vertraut set_theme_mod Funktion.

Diese spezielle API-Funktion ist nicht unbedingt für die Erstellung von Webanwendungen mit WordPress relevant. Um jedoch vollständig zu sein, wollte ich in der Lage sein, alle APIs so anzuzeigen sind verantwortlich für das Schreiben von Daten in die Datenbank.

Anmerkung speziell aus dem Codex:

Erstellt oder aktualisiert eine Änderungseinstellung für das aktuelle Design. Neben get_theme_mod () bietet diese Funktion Designentwicklern manchmal eine einfachere Alternative zur Einstellungs-API, wenn grundlegende themenspezifische Einstellungen vorgenommen werden müssen.

Dies ist eindeutig auf die Arbeit mit Themen zurückzuführen.

Die Post-Meta- und Kommentar-Metatabellen

Ehrlich gesagt unterscheidet sich die Arbeit mit Post-Meta nicht wesentlich von der Arbeit mit Optionen. Sie können sogar die API-Funktionen für die Serialisierung von Post-Metadaten und die Kommentar-Metadaten fast identisch mit der Speicherung von Optionen in betrachten wp_options Datenbank.

Kurz gesagt, die API-Funktionen enthalten drei Informationen:

  1. Die Element-ID
  2. Der Datenschlüssel
  3. Der Datenwert

Im Falle des Speicherns von Post-Informationen würde die Element-ID also der Post-ID entsprechen. Bei den Kommentaren würde die Element-ID der Kommentar-ID entsprechen.

Ebenso wie beim Speichern von Daten in der Optionstabelle ist es wichtig zu beachten, dass das Hinzufügen einer Option die Option in die Datenbank einführt. Durch das Aktualisieren der Option wird die Option erstellt, falls sie noch nicht vorhanden ist, und die Option wird dann überschrieben vorhandener Wert in der Datenbank.

Beispiel für das Speichern von Informationen in der Post-Metatabelle:

add_post_meta (get_the_ID (), 'my-post-information', 'Dies ist mein Lieblingsbeitrag.');

Das Aktualisieren von Informationen in der Kommentar-Metatabelle würde beispielsweise so aussehen:

update_post_meta (get_the_ID (), 'my-post-information', 'Dies ist mein Lieblingsbeitrag.');

Alternativ müssen Sie möglicherweise das Globale verwenden $ post Variable, wenn die Methode nicht innerhalb von The Loop aufgerufen wird. Zum Beispiel:

global $ post; add_post_meta ($ post-> ID, 'my-post-information', 'Dies ist mein Lieblingsbeitrag.');

Und um Daten in die Kommentar-Metatabellen zu schreiben, folgen Sie dem genau dasselbe Format, außer Sie verwenden add_comment_meta und update_comment_meta.

Nun, da wir uns mit dem Speichern von Informationen in der Optionstabelle, der Post-Metatabelle und der Kommentar-Metatabelle befasst haben, können wir sicherstellen, dass keine gefährlichen Informationen in der Datenbank gespeichert werden?

Einfach: Datenbereinigung.


Daten desinfizieren

Wenn es darum geht Sparen Daten in die Datenbank, eines der wichtigsten Dinge, die Entwickler Muss do ist die Bereinigung aller Informationen, die vom Benutzer kommen und in die Datenbank gelangen.

Das Bereinigen von Daten ist nun von den Daten abhängig, die Sie speichern müssen. Es gibt zum Beispiel sehr selten Fälle, in denen Markup, SQL oder andere Arten von Quellcode in der Datenbank gespeichert werden sollen.

Um dies zu verhindern, möchten Sie wahrscheinlich die PHP-Funktionen wie verwenden strip_tags und Stripslahes um die Informationen aufzuräumen.

Zum Beispiel:

if (isset ($ _POST ['value']) &&! empty ($ _POST ['value']) $ clean_value = strip_tags (striplashes ($ _POST ['value'])); add_option ('my-value', $ clean_value);

Natürlich zu sein absolut klar, dies ist nur ein Beispiel dafür, wie man Informationen desinfiziert. Ihre Implementierung kann je nach Art der von Ihnen erstellten Anwendung variieren. Der Punkt, an dem diese Informationen weitergegeben werden, zeigt einen von viele Ideen zum Bereinigen von Informationen zum Speichern in der WordPress-Datenbank.

Andererseits sind dies nicht die einzigen Möglichkeiten, um Werte zu sanieren. Vergessen Sie nicht, die Möglichkeiten von WordPress nach dem Auspacken zu verfolgen:

  1. sanitize_email
  2. sanitize_file_name
  3. sanitize_html_class
  4. sanitize_key
  5. sanitize_meta
  6. sanitize_mime_type
  7. sanitize_option
  8. sanitize_sql_orderby
  9. sanitize_text_field
  10. sanitize_title
  11. sanitize_title_for_query
  12. sanitize_title_with_dashes
  13. sanitize_user

Vergessen Sie an dieser Stelle keine Hilfsprogramme wie reguläre Ausdrücke. Sie sind unglaublich leistungsfähig, da nur bestimmte Zeichenfolgen und bestimmte Muster aus einer Sammlung von Daten abgeglichen werden, die zum Speichern der Daten extrahiert werden können.


Das ist nur die Hälfte davon

Zugegeben, wir haben nur darüber gesprochen, wie Informationen in der WordPress-Datenbank gespeichert werden.

Wir müssen erst noch herausfinden, wie man Informationen abruft, ganz zu schweigen davon, wie die Informationen überprüft werden, die aus der Datenbank kommen.

Im nächsten Artikel werden wir einen Blick darauf werfen, wie die Kehrseite dieses Artikels aussehen wird - insbesondere werden wir uns ansehen, wie man Informationen erhält von entgehen Sie der Datenbank alle potenziellen Zeichen, die möglicherweise problematisch sind, wenn Sie sie für den Browser anzeigen, und wie damit umzugehen ist.