WordPress per lo sviluppo di app Web salvataggio dei dati

Quando si tratta di web, quasi tutte le applicazioni eseguite nel browser sono supportate da un archivio dati di alcuni genere. Di solito, questi archivi di dati sono sotto forma di un tipo di database.

Fino a poco tempo fa, la maggior parte delle applicazioni si basava su alcuni tipi di database SQL, ma con l'aumento di database basati su documenti come CouchDB, altre applicazioni hanno iniziato a utilizzare anche altri backend.

Non solo, con HTML5 e browser che implementano servizi per memoria locale, siamo effettivamente in grado di iniziare a memorizzare alcuni dati sul lato client. Ovviamente, questo non è qualcosa che vorresti fare in modo permanente, ma garantisce un livello di flessibilità e potenza che non abbiamo avuto di recente.

Ad ogni modo, nel classico filone delle applicazioni web, WordPress è un'applicazione supportata da database che utilizza un database MySQL per archiviare le sue informazioni.

Ma questa serie riguarda la creazione di applicazioni su WordPress. A tal fine, è importante capire non solo come salvare le informazioni, ma anche come recuperare le informazioni.

Naturalmente, quando si lavora con la serializzazione dei dati, è anche importante considerare che gli utenti possono provare ad inserire dati dannosi nel database. Pertanto, è nostra responsabilità disinfettare correttamente i dati quando inseriamo i dati nel database, oltre a garantire che stiamo eseguendo correttamente l'escape dei dati mentre li recuperiamo dal database.

In questo articolo, daremo un'occhiata alle API che WordPress offre per la serializzazione delle informazioni e alle funzionalità disponibili per la sanificazione dei dati. Quindi completeremo l'articolo dando un'occhiata a come recuperare in modo sicuro le informazioni dal database.


Archivio dati

Ovviamente, uno dei principali elementi di differenziazione tra i normali siti Web e le applicazioni Web è la loro capacità di gestire i dati archiviati alcuni tipo di database. In genere, ciò significa anche che le informazioni vengono archiviate in base all'utente (ma non sempre).

Ad ogni modo, WordPress offre una varietà di API che semplificano la memorizzazione e il recupero dei dati. E forse la cosa più bella del salvataggio dei dati nel database di WordPress è che una volta capito come funziona una API, di solito hai un'intuizione su come funzionano gli altri.

Detto questo, cominciamo a vedere come salviamo le informazioni nel database di WordPress.

Capire il database

Per quelli di voi che non sono già familiari, WordPress consiste solo in una manciata di tabelle. Ai fini di questa discussione, ci preoccupiamo principalmente di conoscere le seguenti tabelle:

  • wp_options. La tabella delle opzioni è responsabile della memorizzazione di parti di informazioni correlate alle preferenze, alla configurazione, a tutto ciò che è correlato alle impostazioni applicabili a livello di sito.
  • wp_posts. Questa tabella memorizza i dati relativi ai post. Anche se non lavoreremo direttamente con questa tabella, è importante capire che esiste, quindi possiamo lavorare con le informazioni post-meta.
  • wp_postmeta. Come accennato in precedenza, questa tabella è responsabile della memorizzazione delle meta informazioni relative ai singoli post. E poiché i post possono rappresentare pagine, post e tipi di post personalizzati, questo è il luogo in cui memorizzi le informazioni relative a ciascuno dei tuoi tipi di post. È estremamente flessibile nel tipo di dati memorizzati, quindi puoi davvero avere un sacco di potere in termini di come si collegano le informazioni ai post (indipendentemente dal tipo che sono definiti come).
  • wp_comments. Questa tabella dovrebbe essere ovvia, ma qui sono archiviati tutti i commenti per post, pagine e tipi di post personalizzati. Piace wp_posts, non è questo il punto in cui scriveremo i dati direttamente, ma è importante capire che questa tabella esiste e che esiste una tabella dei meta data di commento a cui è possibile accedere quando si scrivono le informazioni nella tabella.
  • wp_commentmeta. Come accennato, come wp_postmeta, questo è dove vengono mantenuti i meta dati sui commenti. E concesso, anche se non necessariamente lavorerai con commenti nelle applicazioni web su tutta la linea, potresti finire per avere un componente del blog nella tua applicazione. E in tal caso, aiuta a sapere come leggere i dati e scrivere i dati sulla tabella.

Ovviamente, questo è solo un sondaggio di alto livello di alcune delle tabelle del database che alimentano WordPress. Se si desidera avere familiarità con il resto delle informazioni, se solo per la propria edificazione, assicurarsi di esaminare la descrizione del database.

Ciò nonostante, dovrebbe essere sufficiente per ottenere standard nella lettura e nella scrittura di informazioni nel database.

Scrittura dei dati nel database

A questo punto, disponiamo di informazioni sufficienti sul livello del database per iniziare a eseguire un sondaggio delle API disponibili nel livello dell'applicazione WordPress che ci consentono di raccogliere le informazioni fornite da noi stessi e / o dall'utente.

La tabella delle opzioni

Ora, scrivere le informazioni su ciascuna delle tabelle precedenti è davvero facile.

  1. Si tratta di comprendere le API disponibili
  2. È importante sapere come disinfettare i dati

Per prima cosa, daremo un'occhiata alle funzioni disponibili per leggere, scrivere e aggiornare le informazioni nelle tabelle delle opzioni di WordPress.

Aggiunta e aggiornamento delle opzioni

WordPress fornisce due funzioni API specifiche per la scrittura di dati nel database. Uno si presenta sotto forma di aggiunta di informazioni, una sotto forma di aggiornamento delle informazioni.

Per aggiungere informazioni alla tabella delle opzioni di WordPress, devi utilizzare la seguente funzione API.

add_option accetta tre parametri:

  1. Una chiave - o un identificatore univoco per le informazioni
  2. Il valore dei dati da memorizzare

Ad esempio, se volessimo memorizzare informazioni, come il mio nome, faremmo qualcosa del genere:

add_option ('my-name', 'tom mcfarlin');

Se, d'altra parte, volevamo prendere qualcosa che provenisse dal $ _POST raccolta, quindi potremmo fare qualcosa del genere:

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

L'aggiornamento delle opzioni è molto diverso. Segue lo stesso schema e può essere effettivamente utilizzato a posto di add_option perché se l'opzione non esiste già, la creerà.

Per il buon senso, non entrerò in molte più informazioni su questa particolare funzione. Essenzialmente, update_option volontà:

  • Aggiungi l'opzione se non esiste già
  • Sovrascrivi il valore esistente se questo fa esistere

Non male, giusto?

Una parola sul tema Mod

Per quelli di voi che hanno lavorato con i temi di WordPress - specialmente quando si usa il Themeizer di temi - allora probabilmente avrete familiarità con set_theme_mod funzione.

Questa particolare funzione API non è esattamente rilevante per creare applicazioni Web con WordPress; tuttavia, per essere completo, volevo essere in grado di mostrare tutte le API che siamo responsabile della scrittura dei dati nel database.

Nota specifica del codice:

Crea o aggiorna un'impostazione di modifica per il tema corrente. Insieme a get_theme_mod () questa funzione a volte offre agli sviluppatori di temi un'alternativa più semplice all'API Settings quando è necessario gestire impostazioni di base specifiche per i temi.

Questo è chiaramente relegato a lavorare con i temi.

Le metriche Post Meta e Comment Meta

Onestamente, lavorare con post meta non è molto diverso dal lavorare con le opzioni. In effetti, puoi anche considerare le funzioni API per serializzare i metadati dei post e i metadati dei commenti quasi identici a come le opzioni sono memorizzate nel wp_options Banca dati.

In breve, le funzioni API contengono tre informazioni:

  1. L'ID dell'elemento
  2. La chiave dei dati
  3. Il valore dei dati

Quindi, nel caso di salvataggio delle informazioni del post, l'ID dell'elemento corrisponderebbe all'ID del post; nel caso dei commenti, l'ID dell'elemento corrisponderebbe all'ID del commento.

E proprio come nel caso del salvataggio dei dati nella tabella delle opzioni, è importante notare che l'aggiunta di un'opzione introdurrà l'opzione nel database e l'aggiornamento dell'opzione creerà l'opzione se non esiste già e quindi sovrascriverà valore esistente nel database.

Caso in questione, salvando le informazioni nella tabella dei metadati:

add_post_meta (get_the_ID (), 'my-post-information', 'Questo è il mio post preferito.');

E, per esempio, l'aggiornamento delle informazioni nella tabella dei meta dei commenti sarà simile a:

update_post_meta (get_the_ID (), 'my-post-information', 'Questo è il mio post preferito.');

In alternativa, potrebbe essere necessario utilizzare il globale $ postale variabile se il metodo non viene chiamato all'interno di The Loop. Per esempio:

$ globale post; add_post_meta ($ post-> ID, 'my-post-information', 'Questo è il mio post preferito.');

E per scrivere i dati sui metadati dei commenti, segui il esatto stesso formato, tranne che tu lo usi add_comment_meta e update_comment_meta.

Ma ora che abbiamo spiegato come salvare le informazioni nella tabella delle opzioni, nella tabella dei metadati e nella tabella dei meta dei commenti, come facciamo a essere sicuri che nessuna informazione pericolosa venga salvata nel database?

Facile: sanitizzazione dei dati.


Sanificazione dei dati

Quando si tratta di Salvataggio dati al database, una delle cose più importanti che gli sviluppatori dovere fare è disinfettare tutte le informazioni che provengono dall'utente e che entrano nel database.

Ora il problema della disinfezione dei dati è che dipende dai dati che devi salvare. Ad esempio, ci sono pochissime volte in cui vorrete effettivamente salvare markup, SQL o altri tipi di codice sorgente nel database.

Per evitare questo, probabilmente vorrai usare le funzioni PHP come strip_tags e stripslahes per ripulire le informazioni.

Per esempio:

if (isset ($ _POST ['value']) &&! empty ($ _POST ['value']) $ clean_value = strip_tags (stripslashes ($ _POST ['valore'])); add_option ('mio valore', $ clean_value);

Certo, essere assolutamente chiaro, questo è solo un esempio di come disinfettare le informazioni. La tua implementazione può variare in base al tipo di applicazione che stai creando. Il punto di condivisione di questa informazione è mostrare uno dei molti idee su come pulire le informazioni per salvarle nel database di WordPress.

Quindi, di nuovo, questi non sono gli unici modi in cui possiamo disinfettare i valori. Ricordati di seguire le funzionalità che WordPress fornisce immediatamente:

  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

A questo punto, non dimenticare i programmi di utilità come le espressioni regolari. Sono incredibilmente potenti con la corrispondenza solo con determinate stringhe e determinati modelli da una raccolta di dati che può essere estratta per salvare i dati.


Questo è solo la metà di esso

Certo, abbiamo solo parlato di come salvare informazioni nel database di WordPress.

Non abbiamo ancora trovato il modo di recuperare informazioni, per non parlare di come effettivamente convalidare le informazioni che escono dal database.

Quindi nel prossimo articolo, daremo un'occhiata al lato negativo di questo articolo, in particolare, vedremo come ottenere informazioni a partire dal il database, sfuggire a potenziali personaggi potenzialmente problematici con il loro rendering nel browser e come gestirlo.