Moderne i sigurne veze s bazama podataka s PHP -om

Sadržaj
Ako postoji nešto što može oštetiti aplikaciju, to je kad ne koristimo odgovarajuće resurse da je učinimo bržom i sigurnijom, postoji mnogo načina za poboljšanje brzine i sigurnosti aplikacija, to može biti upotrebom boljih razvojnih obrazaca, primjena veće sigurnosti na poslužiteljima itd.
Međutim, postoji točka u kojoj mnogo puta ne prestajemo razmišljati, a to je ako je alat koji nam jezik daje najbolji za posao koji radimo. To se puno događa u PHP Unatoč činjenici da već dugi niz godina postoji upozorenje da se funkcija ne koristi mysql_connect () uspostaviti veze do Baze podataka, čini se da mnogi programeri ne shvaćaju veliku pogrešku koju čine kada je koriste.
PHP ima izvornu podršku za veliki broj motora Baze podataka koji postoje na tržištu, međutim njegova integracija s MySQL to je gotovo obavezno polazište za većinu korisnika.
mysql_connect ()Od verzije 5.5 od PHP klasična funkcija mysql_connect () je u stanju zastario, odnosno zastario je i toplo se preporučuje da ga ne koristite jer neće biti uključen u buduće verzije jezika.
Alternativa povezivanju prolazi kroz dva elementa, prvi je korištenje iste jezične strukture za povezivanje ili korištenje nove knjižnice za povezivanje s MySQL. Ovdje se može pojaviti prvo pitanje, zašto samo razmisliti MySQL? Pa odgovor je jednostavan, to je početak, to je najjednostavnija i najkorisnija stvar koju možemo u početku objasniti, ako poznajemo ovu bazu, možemo je ekstrapolirati na druge motore i vozače.
Prva alternativa povezivanja na Baza podataka je korištenje vlastitog podatkovnog objekta jezika tzv PHP podatkovni objekt ili njegova kratica ZOP. Ovo nije ništa drugo nego veliko pisano proširenje jezika C što nam omogućuje uspostavljanje veza s različitim vrstama motora Baze podataka te da ima standardne metode koje nam daju mogućnost pisanja aplikacija na više platformi, odnosno ne moramo mijenjati sintaksu ako promijenimo mehanizam baze podataka.
Isprva smo rekli da ćemo se usredotočiti MySQL, međutim ako uspostavimo vezu putem ZOP ono što radimo možemo primijeniti na druge motore. Za to moramo samo aktivirati ili ugraditi upravljačke programe za navedene motore i aktivirati ih u datoteci php.ini s poslužitelja.
Za povezivanje s a Baza podataka samo moramo uspostaviti vezu koristeći odgovarajuću metodu za to, u ZOP veza se ostvaruje s tri osnovna parametra, imenom poslužitelja baze podataka, korisničkim imenom i njegovom lozinkom.
Jedini parametar od ova tri koji treba objašnjenje je onaj poslužitelja baze podataka, u prošlosti smo morali odabrati Baza podataka Kroz određenu funkciju nakon uspostavljanja veze, u ovom slučaju to ćemo učiniti u istom nizu, pa bi naš niz naziva poslužitelja izgledao ovako:
mysql: host = hostname; dbname = dbname

Vidimo da u ovom slučaju u početku određujemo motor mysql onda ćemo vam s hostom reći koji je poslužitelj, ovdje to može biti IP ili localhost ako je poslužitelj lokalni, konačno s dbname prosljeđujemo naziv baze podataka na koju se želimo povezati. Na sljedećoj slici ćemo promatrati kako se kôd povezuje pomoću ZOP:

POVEĆAJTE

Budući da znamo početni korak povezivanja, sada moramo naučiti kako možemo izvršavati upite, obično smo u prošlosti koristili izravno izvršavanje upita s njegovim parametrima, ova praksa uopće nije sigurna jer nas čini sklonima napadi tog tipa SQL Injection, ZOP omogućuje nam korištenje tzv Pripremljeni stamenti što nije ništa drugo nego izvršavanje upita na parametriziran način, pa i sama knjižnica radi posao otklanjanja pogrešaka i manje je sklona napadima. Pogledajmo dalje kako izvršiti jednostavan upit, a zatim njegov ekvivalent s Pripremljeni Stament.
U ovom jednostavnom upitu pretpostavit ćemo da imamo tablicu u našoj Baza podataka poziv Autor koji prima autorski kod, a zatim i njegovo ime, naravno da je demonstrativno, to nije primjer dobre tablice, samo nas zanima znati kako veza funkcionira iz ZOP.
Na slici vidimo da nazivamo metodu tzv upit () iz objekta stvorenog nizom veze PDO, tada upisujemo upit bez većih problema:

POVEĆAJTE

Problem je u tome što vrijednosti primamo izravno, pa nema načina da to poboljšamo i ponovno upotrijebimo, umjesto ako napravimo a Pripremljeni Stament, vidjet ćemo da prvo označimo koji je upit za izvršavanje, a zatim ga drugom metodom učinimo učinkovitom i prenesemo mu potrebne vrijednosti. Time se pokreće mehanizam za ispravljanje pogrešaka parametara. ZOP čime se daje dodatna razina zaštite. Pogledajmo na sljedećoj slici kako bi prethodni primjer izgledao korištenjem Pripremljeni stamenti sada.

POVEĆAJTE

Na prvi pogled može izgledati donekle složeno i nije optimalno, no ako analiziramo, vidimo da prvo utvrđujemo upit koji će se izvršiti, zatim stvaramo niz s parametrima koje će naš upit primiti, u slučaju primjera koji primimo kod autora i njegovo ime, na kraju izvršavamo upit i prosljeđujemo mu niz parametara.
Ako se želimo posavjetovati nakon što smo već unijeli neke vrijednosti u naš Baza podataka vrlo je jednostavno, samo to moramo učiniti s upitom IZABERI, to će nam omogućiti donošenje zapisa, u prošlosti smo ovisili o funkcijama kao što su mysql_fetch_array () ili mysql_fetch_assoc () koji nas je jednom konzumirao ostavio da ne možemo ponovno upravljati njegovim rezultatima.
S ZOP Dobit ćemo podatke izravno iz objekta, pa ćemo ih uvijek imati na raspolaganju tijekom izvođenja, pogledajmo u sljedećem primjeru kako bi to bilo učinjeno:

Vidimo kako u početku stvaramo a Pripremljeni Stament, u ovom slučaju radimo jednostavan upit, a zatim petljom dok () nabavit ćemo svaki zapis i tiskati ga, ako primijetimo da se na to ne pozivamo MySQL bilo gdje u našem kodu, pa ako promijenimo niz veze i upotrijebimo drugi mehanizam koji ima tablicu i Baza podataka istog naziva i strukture, moći ćemo dobiti vaše podatke bez potrebe za promjenom našeg koda.
Što MySQL je najpopularniji motor baze podataka za integraciju PHP, postoji i alternativa i to je to MySQLi koje nije ništa drugo do objektno orijentirano sučelje. Njegov način rada vrlo je sličan onom ZOPNo, ono što se promijenilo je to što je to samo za ovaj popularni mehanizam baze podataka, pa konverzija na više platformi ne bi bila moguća.
Njegov niz veze je malo manje složen jer dijeli naziv poslužitelja u hostu i bazu podataka koja će se koristiti u dva različita parametra, osim imena i lozinke korisnika, da vidimo kako to izgleda:
$ objConex = novi mysqli (Ime domaćina, korisnik, lozinka, Ime baze podataka);

Pogledajmo u sljedećem primjeru kako uspostavljamo vezu pomoću MySQLi i kako možemo izvesti jednostavan unos podataka:

POVEĆAJTE

Napominjemo da postoji sličnost s ZOP imajući metodu upit () ali, međutim, ovo će raditi samo za MySQL.
Sada ćemo primati i ponavljati podatke koje možemo dobiti iz upita, za to ćemo koristiti istu metodu upit () a zatim metoda fetch_assoc () da biste dobili rezultate:

Najzanimljivije što smo primijetili je da koristimo metodu Zatvoriti (), ovo zatvara trenutnu vezu i čisti međuspremnik na takav način da optimizira korištenje resursa poslužitelja.
VažnoMoramo imati na umu da ako imamo sustav napravljen u staroj verziji PHP i nećemo migrirati na nove verzije, možda promijeniti nizove veze u Baza podataka a metode upita možda nisu dobra ideja za rad koji predstavljaju. Međutim, ako želimo stvarati nove aplikacije i sustave, najbolje je početi s čvrstim temeljima korištenja ovih novih knjižnica s podrškom u budućim verzijama PHP.
Ovim smo završili ovaj vodič, vidjeli smo da su nove alternative mnogo čišće i sigurnije, a zbog jednostavnosti korištenja prikladne su za sadašnje vrijeme.Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod
wave wave wave wave wave