Când vine vorba de web, aproape orice aplicație care rulează în browser-ul dvs. este susținută de un magazin de date de niste tip. De obicei, aceste stocuri de date sunt sub forma unui tip de bază de date.
Până de curând, majoritatea aplicațiilor au fost construite pe baza unui tip de bază de date SQL, dar odată cu creșterea bazelor de date bazate pe documente, cum ar fi CouchDB, alte aplicații au început să utilizeze și alte backends.
Nu numai asta, cu HTML5 și browserele care implementează servicii pentru localStorage
, de fapt suntem capabili să începem să stăm niste date de pe partea clientului. Evident, acest lucru nu este ceva pe care doriți să-l faceți permanent, dar oferă un nivel de flexibilitate și putere pe care nu l-am avut recent.
Oricum, în varianta clasică a aplicațiilor web, WordPress este o aplicație bazată pe baze de date care folosește o bază de date MySQL pentru a stoca informațiile sale.
Dar această serie este despre construirea de aplicații pe partea de sus a WordPress. În acest scop, este important să înțelegeți nu numai modul de salvare a informațiilor, ci și modul de preluare a informațiilor.
Desigur, atunci când lucrăm cu serializarea datelor, este de asemenea important să ținem cont de faptul că utilizatorii pot încerca să introducă date rău intenționate în baza de date. Ca atare, este responsabilitatea noastră de a dezinstala corect datele când inserăm datele în baza de date, precum și de a ne asigura că evităm în mod corespunzător datele pe care le preluăm din baza de date.
În acest articol, vom examina API-urile pe care le oferă WordPress pentru serializarea informațiilor și facilitățile disponibile pentru dezinfectarea datelor. Apoi, vom completa acest articol, luând o privire asupra modului în care puteți prelua în siguranță informații din baza de date.
Evident, unul dintre principalele diferențiatoare între site-urile web normale și aplicațiile web este capacitatea lor de a gestiona datele stocate în niste tipul de bază de date. În mod obișnuit, aceasta înseamnă, de asemenea, că informațiile sunt stocate pe bază de utilizatori (dar nu întotdeauna).
Oricum, out-of-the-box, WordPress oferă o varietate de API-uri care ușurează stocarea și recuperarea datelor. Și poate cel mai frumos lucru despre salvarea datelor în baza de date WordPress este că, odată ce înțelegeți cum funcționează un API, de obicei aveți o intuiție cu privire la modul în care lucrează restul.
Prin urmare, cu acest lucru, să începem să ne uităm la modul în care salvăm informațiile în baza de date WordPress.
Pentru cei dintre voi care nu sunteți deja familiar, WordPress constă doar dintr-o mână de mese. În scopul acestei discuții, suntem în primul rând preocupați de cunoașterea următoarelor tabele:
wp_options
. Tabelul cu opțiuni este responsabil pentru stocarea unor informații care sunt legate de preferințe, configurare, orice se referă la setările care sunt aplicabile la nivel de site.wp_posts
. Acest tabel stochează date referitoare la postări. Deși nu vom lucra în mod direct cu acest tabel, este important să înțelegem că există astfel încât să putem lucra cu informații post-meta.wp_postmeta
. După cum sa menționat anterior, acest tabel este responsabil pentru menținerea informațiilor meta referitoare la posturile individuale. Și deoarece postările pot reprezenta pagini, postări și tipuri personalizate de postări, atunci acesta este locul în care stocați informații referitoare la fiecare tip de postare. Este extrem de flexibil în tipul de date stocate, astfel încât într-adevăr puteți avea o mulțime de putere în ceea ce privește modul în care raportați informațiile la posturi (indiferent de tipul pe care sunt definite ca).wp_comments
. Acest tabel ar trebui să fie de la sine înțeles, dar aici sunt stocate toate comentariile pentru posturile, paginile și tipurile personalizate de postări. Ca wp_posts
, acest lucru nu este locul în care vom scrie date în mod direct, dar este important să înțelegem că acest tabel există și că există un tabel de date despre meta date pe care îl putem accesa atunci când scriem informații în tabel.wp_commentmeta
. Așa cum am menționat, cum ar fi wp_postmeta
, aici se păstrează datele meta despre comentarii. Și acordat, deși nu lucrați neapărat cu comentarii în aplicațiile web din întreaga bord, s-ar putea să ajungeți la o componentă de blog a aplicației dvs. Și în acest caz, vă ajută să știți cum puteți citi datele și scrie datele în tabel.Evident, acesta este doar un studiu la nivel înalt al unora dintre tabelele de baze de date care guvernează WordPress. Dacă doriți să fiți familiarizați cu restul informațiilor, numai pentru propria edificare, atunci asigurați-vă că revizuiți descrierea bazei de date.
Cu toate acestea, acest lucru ar trebui să fie suficient de bun pentru a ne furniza standardul în citirea și scrierea de informații în baza de date.
În acest moment, avem suficiente informații despre stratul bazei de date pentru a începe să realizăm un sondaj al API-urilor disponibile în stratul aplicației WordPress care ne permit să luăm informații furnizate fie de noi, fie de către utilizatori.
Acum, scrierea de informații pentru fiecare dintre mesele de mai sus este foarte ușoară.
În primul rând, vom examina funcțiile disponibile pentru citirea, scrierea și actualizarea informațiilor în tabelele de opțiuni WordPress.
WordPress oferă două funcții de specificare API pentru scrierea datelor în baza de date. Unul vine sub forma de a adăuga informații, unul vine sub forma actualizării informațiilor.
Pentru a adăuga informații la tabela de opțiuni WordPress, ați folosi următoarea funcție API.
add_option
acceptă trei parametri:
De exemplu, dacă vrem să stocăm informații, cum ar fi numele meu, atunci vom face așa ceva:
add_option ('my-name', 'tom mcfarlin');
Dacă, pe de altă parte, vrem să luăm ceva de la $ _POST
colecție, atunci putem face ceva de genul:
dacă isset ($ _POST ['value']) &&! empty ($ _POST ['value']) add_option ('
Opțiunile de actualizare sunt mult diferite. Aceasta urmează aceeași schemă și poate fi de fapt folosită la loc de add_option
deoarece dacă opțiunea nu există deja, ea o va crea.
Din motive de elaborare a punctului, nu voi intra în mai multe informații despre această funcție. In esenta, update_option
voi:
Nu e rău, corect?
Pentru cei care ați lucrat cu teme WordPress - mai ales atunci când utilizați Theme Customizer - atunci sunteți probabil familiarizat cu set_theme_mod
funcţie.
Această funcție API particulară nu este relevantă pentru a construi aplicații web cu WordPress; totuși, pentru a fi complet, am vrut să pot arăta toate API-urile sunteți responsabil pentru scrierea datelor în baza de date.
Observați în mod specific din Codul:
Creează sau actualizează o setare de modificare pentru tema curentă. Împreună cu funcția get_theme_mod (), această funcție uneori oferă dezvoltatorilor de teme o alternativă mai simplă la API-ul Setări atunci când este nevoie să se gestioneze setările de bază specifice temelor.
Acest lucru este în mod clar retrogradat pentru a lucra cu teme.
Sincer, lucrul cu post meta nu este mult diferit de lucrul cu opțiunile. De fapt, puteți chiar să vă gândiți la funcțiile API pentru serializarea post-meta date și a datelor de meta-comentariu aproape identice cu modul în care sunt stocate opțiunile în wp_options
Bază de date.
Pe scurt, funcțiile API iau trei informații:
Deci, în cazul salvării informațiilor post, ID-ul elementului ar corespunde codului post; în cazul comentariilor, ID-ul elementului ar corespunde codului de identificare a comentariului.
La fel ca și în cazul salvării datelor în tabelul cu opțiuni, este important să rețineți că adăugarea unei opțiuni va introduce opțiunea în baza de date, iar actualizarea opțiunii va crea opțiunea dacă aceasta nu există deja, apoi suprascrieți valoarea existentă în baza de date.
Cazul punct, salvarea informațiilor în tabela de meta post:
add_post_meta (get_the_ID (), 'my-post-information', 'Aceasta este postul meu preferat');
Și, să zicem, actualizarea informațiilor din tabelul meta de comentarii ar arăta astfel:
update_post_meta (get_the_ID (), 'my-post-information', 'Aceasta este postul meu preferat');
În mod alternativ, este posibil să fie nevoie să utilizați funcția globală $ postare
variabilă dacă metoda nu este apelată în cadrul Loop-ului. De exemplu:
postare globală $; add_post_meta ($ post-> ID, 'my-post-information', 'Aceasta este postul meu preferat');
Și pentru a scrie date în tabelele meta de comentarii, urmați exact același format, cu excepția cazului în care utilizați add_comment_meta
și update_comment_meta
.
Dar acum că am acoperit modul de salvare a informațiilor în tabelul de opțiuni, în tabelul cu meta-meta și în tabelul meta de comentarii, cum să ne asigurăm de fapt că nu se salvează informații periculoase în baza de date?
Ușor: Sanitizarea datelor.
Cand vine vorba de economisire datele la baza de date, unul dintre cele mai importante lucruri pe care dezvoltatorii trebuie sa face este sanitiza toate informațiile care provin de la utilizator și care intră în baza de date.
Acum, lucrul la dezinfectarea datelor este că depinde de datele pe care trebuie să le salvați. De exemplu, există foarte puține ori în care doriți să salvați marcaje, SQL sau alte tipuri de cod sursă în baza de date.
Pentru a preveni acest lucru, probabil că veți dori să utilizați funcțiile PHP, cum ar fi strip_tags
și stripslahes
pentru a curăța informațiile.
De exemplu:
($ _POST ['value']) &&! empty ($ _POST ['value']) $ clean_value = strip_tags $ clean_value);
Desigur, să fie absolut clar, acest lucru nu este decât un exemplu de dezintoxicare a informațiilor. Implementarea dvs. poate varia în funcție de tipul de aplicație pe care îl construiți. Punctul de împărtășire a acestor informații indică unul dintre acestea mulți idei despre cum să curățați informațiile pentru a le salva în baza de date WordPress.
Din nou, acestea nu sunt singurele metode prin care putem dezinfecta valorile. Amintiți-vă să urmați facilitățile pe care le oferă WordPress out-of-the-box:
sanitize_email
sanitize_file_name
sanitize_html_class
sanitize_key
sanitize_meta
sanitize_mime_type
sanitize_option
sanitize_sql_orderby
sanitize_text_field
sanitize_title
sanitize_title_for_query
sanitize_title_with_dashes
sanitize_user
În acest moment, nu uitați utilități cum ar fi expresii regulate. Ele sunt incredibil de puternice, cu potrivirea numai a anumitor șiruri de caractere și anumite modele dintr-o colecție de date care pot fi extrase pentru a salva datele.
Acordat, am vorbit doar despre modul de salvare a informațiilor în baza de date WordPress.
Încă nu am reușit să aflăm cum să recuperăm informațiile, să nu mai vorbim cum să validăm informațiile din baza de date.
Astfel, în următorul articol, vom analiza modul în care se va schimba acest articol - în special, vom examina cum să obținem informații din baza de date, să scape de orice caractere potențiale care sunt potențial problematice cu redarea lor la browser și cum să se ocupe de asta.