✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

URL-osoitteiden puhdistaminen WordPressissä

7

Työskentely WordPressin käyttäjäkeskeisten kenttien kanssa – kuten inputelementtien, textareaelementtien tai minkä tahansa tyyppisten kenttien kanssa, joihin käyttäjä voi syöttää omia arvojaan, on aina oltava desinfioinnin kohde.

Onneksi WordPress API tarjoaa useita toimintoja, jotka auttavat tässä. Käyttötapauksestasi riippuen saatat joutua tekemään jonkin seuraavista:

Ja ne ovat kaikki hyviä, mutta on myös tapoja, joilla voit työskennellä tietojen puhdistamiseksi PHP:n tarjoamien toimintojen avulla.

Toki joskus säännölliset lausekkeet ovat oikea tapa, mutta toisinaan saatat haluta käyttää kieleen sisäänrakennettuja, helpommin ymmärrettäviä ja helpompia seurata ominaisuuksia.

Kun kirjoitan omaa koodiani (ja arvostellessani muita) yritän pitää sen mielessä. Tästä huolimatta tässä on prosessi, jota voit käyttää ja joka voi helpottaa URL-osoitteiden käsittelyä WordPressissä.

Jos et halua käydä koko keskustelua tästä, voit hypätä viestin alareunassa olevaan otsikkoon, jossa kerrotaan koodista ja sen käyttämisestä työssäsi.

Oletetaan, että sinulla on avoin inputelementti ja haluat antaa käyttäjän tarjota URL-osoitteen, joka lopulta hahmonnetaan käyttöliittymässä, ehkä linkissä, jonkin tyyppisessä skeemassa tai yksinkertaisesti sellaisenaan.

On mahdollista olla todella aggressiivinen ja tehdä jotain kuten "Jos tämä ei ole kelvollinen URL-osoite, älä tallenna sitä."

Ja selvyyden vuoksi en väitä, että kelvollinen URL-osoite ei palauta 404:ää (koska joskus sivuja on olemassa ja vuosia myöhemmin niitä ei). Määritän kelvollisen URL-osoitteen sellaiseksi, joka on muotoiltu oikein ja joka ei sisällä ylimääräisiä tietoja.

Sano siis, että tämän yksinkertaisen esimerkin vuoksi tarjoat tekstikentän, joka lopulta tallennetaan julkaisun metatietotaulukkoon. Lisäksi poistat URL-osoitteesta kaiken laittoman ja jätät vain sen, mikä luo kelvollisen URL-osoitteen.

Mielestäni seuraavat toiminnot ovat hyödyllisimpiä tätä varten:

  • strip_tags. Poista HTML- ja PHP-tunnisteet merkkijonosta.
  • viiltoja. Poistaa lainausmerkit lainatun merkkijonon.
  • filter_var. Suodattaa muuttujan määritetyllä suodattimella.

Jälkimmäinen kuulostaa hieman hämmentävältä, koska se perustuu ajatukseen, että ymmärrät, mitä suodattimet todellisuudessa ovat. PHP:ssä suodattimet voidaan jakaa kahteen käyttötapaukseen:

  1. Validointi
  2. Puhdistus

Ja ne ovat pohjimmiltaan valmiita tapoja, joilla voimme käsitellä tietoja siten, että ne käsittelevät tietoja sen määrittämiseksi, onko kyseessä etsimämme tietotyyppi, yleensä merkkijono vai taulukko.

Laittaminen töihin

Tässä mielessä voit yrittää tallentaa tietoja tietokantaan ilman minkäänlaista desinfiointia (mikä on huono asia):

Yllä olevalla koodilla käyttäjä voi kirjaimellisesti kirjoittaa mitä tahansa kenttään ja tallentaa sen tietokantaan. Siksi desinfiointi on tärkeää. Ilman sitä käyttäjä voi tuhota käyttökokemuksen tai koko WordPress-asennuksen.

Miltä sitten näyttää käyttää koodia ylhäältä, kun desinfioidaan URL-osoitteita? Yleisesti ottaen se näyttää tältä :

Ensin koodi ajetaan PHP-suodattimen läpi, joka vahvistaa URL-osoitteen. Jos suodatinfunktioon välitetty merkkijono ei toimi edes URL-osoitteena, funktio palauttaa false.

Jos se toisaalta toimii kelvollisena URL-osoitteena, voimme poistaa kaikki tarpeettomat vinoviivat. Tämä tarkoittaa, että voimme "poistaa lainausmerkityt merkkijonot". Tarkemmin sanottuna tämä poistaa ensimmäisen peräkkäisen kenoviivan (koska PHP:ssä kenoviivaa käytetään kenoviivan välttämiseen). Asia selvä? 🙂

Lopuksi päätämme poistaa tunnisteet, koska haluamme vain URL-osoitteen. Emme halua mitään merkintöjä, tunnisteita tai mitään, mikä voisi sabotoida tietokantaan kirjoitettavaa tietoa. Tämä tarkoittaa, että jos päätät suorittaa jotain, kuten:

Sinulle jää:

"https://tommcfarlin.com/alert('hello world!');"

Joten koota kaikki yllä oleva koodi käyttämällä tätä merkkijonoa:

Tuloksena on seuraava tulos:

https://tommcfarlin.com/alert('hello world!');

Tämä ei tietenkään ole kelvollinen URL-osoite, mutta se on puhdas, turvallinen ja antaa sinun suorittaa kaikki muut toimet, joita saatat tarvita varmistaaksesi, että URL-osoite on turvallinen käyttäjälle.

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja