Når det kommer til nettet, støttes nesten alle applikasjoner som kjører i nettleseren din av en datalager på noen type. Vanligvis er disse datalagerene i form av en type database.
Inntil nylig ble de fleste applikasjoner bygget på toppen av en type SQL-database, men med oppstart av dokumentbaserte databaser som CouchDB, har andre applikasjoner også begynt å bruke andre backends.
Ikke bare det, med HTML5 og nettlesere som implementerer tjenester for lokal lagring
, Vi kan faktisk begynne å lagre noen data på klientsiden. Dette er åpenbart ikke noe du vil gjøre permanent, men det gir et nivå av fleksibilitet og kraft som vi ikke har nylig hatt.
Uansett, i den klassiske vegen av webapplikasjoner, er WordPress et databasebasert program som bruker en MySQL-database for å lagre informasjonen.
Men denne serien handler om å bygge applikasjoner på toppen av WordPress. For det formål er det viktig å forstå ikke bare hvordan du lagrer informasjon, men også hvordan du henter informasjon.
Selvfølgelig, når du jobber med dataserialisering, er det også viktig å ta hensyn til at brukere kan prøve å sette inn skadelige data i databasen. Som sådan er det vårt ansvar å skikkelig sanitisere data når du setter inn dataene i databasen, samt sørge for at vi skikkelig slipper dataene når vi henter det fra databasen.
I denne artikkelen skal vi se på APIene som WordPress tilbyr for seriellisering av informasjon, og fasilitetene som er tilgjengelige for å sanitere data. Deretter renner vi ut artikkelen ved å ta en titt på hvordan du trygt kan hente informasjon fra databasen.
Åpenbart er en av de primære differensierne mellom normale nettsteder og webapplikasjoner deres evne til å administrere data som er lagret i noen type database. Vanligvis betyr dette også at informasjonen lagres på en per brukerbasis (men ikke alltid).
Uansett, utenom boksen, tilbyr WordPress en rekke APIer som gjør det enkelt å lagre og hente data. Og kanskje det hyggeligste med å lagre data i WordPress-databasen er at når du forstår hvordan ett API fungerer, vil du vanligvis ha en intuisjon om hvordan resten av dem jobber.
Så med det sagt, la oss komme i gang ved å se på hvordan vi lagrer informasjon i WordPress-databasen.
For de som ikke er kjent, består WordPress bare av en håndfull bord. I forbindelse med denne diskusjonen er vi først og fremst opptatt av å vite om følgende tabeller:
wp_options
. Alternativtabellen er ansvarlig for lagring av opplysninger som er relatert til preferanser, konfigurasjoner, alt som er relatert til innstillinger som er anvendelige på nettstedet.wp_posts
. Denne tabellen lagrer data relatert til innlegg. Selv om vi ikke vil jobbe direkte med dette bordet, er det viktig å forstå at det eksisterer slik at vi kan jobbe med post-meta informasjon.wp_postmeta
. Som tidligere nevnt er denne tabellen ansvarlig for å holde metainformasjon relatert til individuelle innlegg. Og siden innleggene kan representere sider, innlegg og egendefinerte innleggstyper, er dette her hvor du lagrer informasjon knyttet til hver av posttypene dine. Det er ekstremt fleksibelt i typen data lagret, slik at du virkelig kan ha mye strøm når det gjelder hvordan du relaterer informasjon til innlegg (uansett hvilken type de er definert som).wp_comments
. Denne tabellen bør uten å si, men det er her alle kommentarer for både innlegg, sider og egendefinerte innleggstyper lagres. Som wp_posts
, Dette er ikke der vi skal skrive data direkte, men det er viktig å forstå at denne tabellen eksisterer, og at det er en kommentar metatatabell som vi kan få tilgang til når du skriver informasjon til bordet.wp_commentmeta
. Som nevnt, liker wp_postmeta
, Det er her hvor metadata om kommentarer holdes. Og gitt, selv om du ikke nødvendigvis jobber med kommentarer i webapplikasjoner over hele linjen, kan du ende opp med å ha en bloggkomponent i søknaden din. Og i så fall hjelper det å vite hvordan du kan lese data fra og skrive data til bordet.Tydeligvis er dette bare en høytidsundersøkelse av noen av databasetabellene som driver WordPress. Hvis du vil være kjent med resten av informasjonen hvis bare for din egen oppbygging, så vær sikker på å se gjennom databasebeskrivelsen.
Ikke desto mindre bør dette være godt nok til å få oss til å standardisere å lese og skrive informasjon til databasen.
På dette tidspunktet har vi nok informasjon om databaselaget for å begynne å ta en undersøkelse av APIene som er tilgjengelige i WordPress-applikasjonslaget, som tillater oss å ta informasjon levert enten av oss selv og / eller av brukerinngang.
Nå er det veldig enkelt å skrive informasjon til hver av tabellene ovenfor.
Først skal vi se på funksjonene som er tilgjengelige for lesing, skriving og oppdatering av informasjon i WordPress-alternativtabellene.
WordPress gir to spesifikasjon API-funksjoner for å skrive data til databasen. En kommer i form av å legge til informasjon, en kommer i form av oppdatering av informasjon.
Hvis du vil legge til informasjon i WordPress-alternativtabellen, bruker du følgende API-funksjon.
add_option
aksepterer tre parametere:
For eksempel, hvis vi ønsket å lagre informasjon, for eksempel mitt navn, så ville vi gjøre noe slikt:
add_option ('my-name', 'tom mcfarlin');
Hvis vi derimot ønsket å ta noe fra $ _POST
samling, så kan vi gjøre noe slikt:
hvis (isset ($ _POST ['verdi']) &&! tom ($ _POST ['verdi']) add_option ('minverdien', $ _POST ['verdi']);
Oppdateringsalternativene er mye forskjellige. Det følger det samme skjemaet og kan faktisk brukes på plass av add_option
fordi hvis alternativet ikke allerede eksisterer, vil det opprette det.
For å forklare punktet, vil jeg ikke gå inn i mye mer informasjon om denne funksjonen. I bunn og grunn, update_option
vil:
Ikke dårlig, ikke sant?
For de av dere som har jobbet med WordPress-temaer - spesielt når du bruker Theme Customizer - så er du sannsynligvis kjent med set_theme_mod
funksjon.
Denne bestemte API-funksjonen er ikke akkurat relevant for å bygge webapplikasjoner med WordPress; For å være komplett ønsket jeg imidlertid å kunne vise alle APIene som er ansvarlig for å skrive data til databasen.
Merk spesielt fra Codex:
Oppretter eller oppdaterer en endringsinnstilling for det aktuelle temaet. Sammen med get_theme_mod () tilbyr denne funksjonen noen ganger temautviklere et enklere alternativ til Innstillings-API når det er behov for å håndtere grunnleggende temaspesifikke innstillinger.
Dette er tydeligvis forvist til å arbeide med temaer.
Ærlig talt, å jobbe med innleggmeta er ikke mye annerledes enn å jobbe med alternativer. Faktisk kan du til og med vurdere API-funksjonene for serialisering av post-metadata og kommentar-metadataene nesten identiske med hvordan alternativer lagres i wp_options
database.
Kort sagt tar API-funksjonene inn tre opplysninger:
Så når det gjelder lagring av postinformasjon, vil element-ID-en tilsvare post-ID-en; i tilfelle av kommentarene, vil element-ID-en tilsvare kommentaren-IDen.
Og akkurat som det er tilfelle med å lagre data i alternativtabellen, er det viktig å merke seg at å legge til et alternativ vil introdusere alternativet i databasen, og oppdatering av alternativet vil opprette alternativet hvis det ikke allerede finnes, og skriv deretter over eksisterende verdi i databasen.
Saks i punkt, lagring av informasjon i postmetabellen:
add_post_meta (get_the_ID (), 'min post-informasjon', 'Dette er mitt favoritt innlegg.');
Og si, oppdatering av informasjon i kommentormetabellen vil se ut som:
update_post_meta (get_the_ID (), 'min post-informasjon', 'Dette er mitt favorittinnlegg.');
Alternativt må du kanskje bruke den globale $ post
variabel hvis metoden ikke blir kalt innen The Loop. For eksempel:
global $ post; add_post_meta ($ post-> ID, 'min post-informasjon', 'Dette er mitt favoritt innlegg.');
Og for å skrive data til kommentarmetabordene, følger du nøyaktig samme format, unntatt du bruker add_comment_meta
og update_comment_meta
.
Men nå har vi dekket hvordan du lagrer informasjon i alternativtabellen, postmetabellen og meta-tabellen med kommentarer, hvordan sikrer vi faktisk at ingen farlig informasjon er lagret i databasen?
Enkel: Data sanitisering.
Når det gjelder besparende data til databasen, en av de viktigste tingene som utviklere må gjør er sanitize all informasjon som kommer fra brukeren og inn i databasen.
Nå er det med å sanitere data at det avhenger av dataene du må lagre. For eksempel er det svært få ganger hvor du faktisk vil lagre markup, SQL eller andre typer kildekode i databasen.
For å forhindre dette, vil du sannsynligvis bruke PHP-funksjonene som strip_tags
og stripslahes
for å rydde opp informasjonen.
For eksempel:
$ clean_value = strip_tags (stripslashes ($ _POST ['value'])); add_option ('minverdien', $ clean_value);
Selvfølgelig å være absolutt klart, dette er bare et eksempel på hvordan å sanitere informasjon. Implementeringen din kan variere avhengig av hvilken type applikasjon du bygger. Poenget med å dele denne informasjonen viser en av mange ideer om hvordan du rengjør informasjon for å lagre den i WordPress-databasen.
Så igjen er det ikke de eneste måtene vi kan sanitere verdier på. Husk å følge opp på fasilitetene som WordPress gir ut av boksen:
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
På dette punktet må du ikke glemme verktøy som vanlig uttrykk. De er utrolig kraftige, og de samsvarer bare med bestemte strenger og visse mønstre fra en samling data som kan trekkes ut for å lagre dataene.
Gitt, vi har bare snakket om hvordan du lagrer informasjon til WordPress-databasen.
Vi har ennå ikke faktisk slått på hvordan du henter informasjon, enn si hvordan du faktisk validerer informasjonen som kommer ut av databasen.
Så i neste artikkel skal vi se hvordan flippen av denne artikkelen - spesielt, vi skal se på hvordan du får informasjon fra databasen, unnslippe eventuelle potensielle tegn som er potensielt problematiske med å gjøre dem til nettleseren, og hvordan å håndtere det.