Moderne og sikre tilkoblinger til databaser med PHP

Innholdsfortegnelse
Hvis det er noe som kan skade en applikasjon, er det når vi ikke bruker tilstrekkelige ressurser til å gjøre den raskere og tryggere, det er mange måter å forbedre hastigheten og sikkerheten til applikasjonene, det kan være ved å bruke bedre utviklingsmønstre, bruke større sikkerhet på serverne, etc.
Imidlertid er det et punkt hvor vi mange ganger ikke slutter å tenke, og det er hvis verktøyet som språket gir oss er det beste for arbeidet vi gjør. Dette skjer mye i PHP Til tross for at det i mange år har vært varslet om ikke å bruke funksjonen mysql_connect () å etablere koblinger til Databaser, synes mange utviklere ikke å innse den store feilen de gjør når de bruker den.
PHP har innfødt støtte for et stort antall motorer Databaser som finnes i markedet, men integrasjonen med MySQL det er nesten et obligatorisk utgangspunkt for de fleste brukere.
mysql_connect ()Fra versjon 5.5 av PHP klassisk funksjon mysql_connect () er i stat avskrevet, det vil si at den er foreldet, og det anbefales på det sterkeste å ikke bruke den siden den ikke vil bli inkludert i fremtidige versjoner av språket.
Alternativet for å opprette tilkoblingen går gjennom to elementer, det første er å bruke samme språkstruktur for å lage tilkoblinger eller å bruke det nye biblioteket til å koble til MySQL. Her kan det første spørsmålet komme, hvorfor bare tenke på MySQL? Svaret er enkelt, det er en begynnelse, det er det enkleste og mest nyttige som vi kan forklare i utgangspunktet, hvis vi kjenner denne basen, kan vi ekstrapolere til andre motorer og drivere.
Det første alternativet for tilkobling til Database er å bruke språkets eget dataobjekt kalt PHP Data Object eller forkortelsen BOB. Dette er ikke annet enn en stor skriftlig utvidelse på språket C som lar oss etablere forbindelser med forskjellige typer motorer Databaser og at den har standardmetoder som gir oss muligheten til å skrive applikasjoner på tvers av plattformer, det vil si at vi ikke trenger å endre syntaksen hvis vi endrer databasemotoren.
Først sa vi at vi ville fokusere på MySQL, men hvis vi etablerer en forbindelse gjennom BOB det vi gjør kan vi bruke på andre motorer. For dette trenger vi bare å aktivere eller inkorporere driverne for nevnte motorer og aktivere dem i filen php.ini fra serveren.
For å koble til en Database vi må bare etablere lenken ved å bruke den riktige metoden for den, i BOB forbindelsen oppnås med tre grunnleggende parametere, navnet på databaseserveren, brukernavnet og dets passord.
Den eneste parameteren til disse tre som trenger forklaring er den til databaseserveren, tidligere måtte vi velge Database Gjennom en bestemt funksjon etter at forbindelsen er opprettet, vil vi i dette tilfellet gjøre det i samme streng, så servernavnsstrengen vår vil se slik ut:
mysql: vert = vertsnavn; dbnavn = dbnavn

Vi ser at vi i utgangspunktet spesifiserer motoren, i dette tilfellet mysql deretter med verten skal vi fortelle deg hvilken server som er, her kan det være en IP eller lokal vert hvis serveren er lokal, til slutt med dbnavn vi sender navnet til databasen som vi vil koble til. Vi skal observere i det følgende bildet hvordan en kode skal kobles til ved hjelp av BOB:

FORSTØRRE

Siden vi kjenner det første trinnet som er hvordan du kobler til, må vi nå lære hvordan vi kan utføre forespørsler, normalt tidligere brukte vi å utføre spørringen direkte med dens parametere, og denne praksisen er ikke trygg i det hele tatt siden den gjør oss utsatt for angrep av typen SQL -injeksjon, BOB lar oss bruke den såkalte Forberedte stammer som ikke er mer enn å utføre spørringen på en parameterisert måte, så biblioteket selv utfører en feilsøkingsjobb og er mindre utsatt for angrep. La oss se neste hvordan vi utfører en enkel spørring og deretter dens ekvivalent med Forberedt Stament.
I denne enkle spørringen antar vi at vi har et bord i vår Database anrop Forfatter som mottar en forfatterkode og deretter navnet, selv om det demonstrerende ikke er et eksempel på et godt bord, er vi bare interessert i å vite hvordan forbindelsen fungerer fra BOB.
På bildet ser vi at vi kaller en metode kalt spørring () fra objektet som er opprettet med PDO -tilkoblingsstrengen, skriver vi spørringen vår uten store problemer:

FORSTØRRE

Problemet er at vi mottar verdiene direkte, så det er ingen måte å forbedre og gjenbruke dette, i stedet hvis vi lager en Forberedt Stament, vil vi se at vi først angir hvilken spørring som skal utføres, så med en annen metode gjør vi den effektiv og sender de nødvendige verdiene til den. Dette bringer parameteren debugging -motoren i spill. BOB gir dermed et ekstra beskyttelsesnivå. La oss se i det følgende bildet hvordan det forrige eksemplet ville se ut ved bruk Forberedte stammer nå.

FORSTØRRE

Ved første øyekast kan det virke litt komplekst og ikke optimalt, men hvis vi analyserer, ser vi at først etablerer vi spørringen som skal utføres, så lager vi en matrise med parametrene som spørringen vår vil motta, i tilfelle av eksemplet vi motta forfatterkoden og navnet, til slutt utfører vi spørringen og sender den en rekke parametere.
Hvis vi vil konsultere når vi allerede har satt inn noen verdier i vår Database Det er veldig enkelt, vi må bare gjøre det med en forespørsel Å VELGE, dette vil tillate oss å ta med postene, tidligere var vi avhengige av funksjoner som f.eks mysql_fetch_array () eller mysql_fetch_assoc () som en gang konsumert gjorde at vi ikke klarte å administrere resultatene igjen.
Med BOB Vi kommer til å skaffe dataene direkte fra objektet, så vi vil alltid ha dem tilgjengelige under utførelsen, la oss se i følgende eksempel hvordan det ville bli gjort:

Vi ser hvordan vi i utgangspunktet lager en Forberedt Stament, gjør vi en enkel spørring i dette tilfellet og deretter med en løkke samtidig som () vi vil skaffe hver av postene og skrive ut dem, hvis vi merker at vi ikke refererer til MySQL hvor som helst i koden vår, så hvis vi endrer tilkoblingsstrengen og bruker en annen motor som har en tabell og en Database med samme navn og struktur, vil vi kunne skaffe dataene dine uten å måtte endre koden vår.
Hva MySQL er den mest populære databasemotoren å integrere med PHP, det er også et alternativ, og det er det MySQLi som ikke er noe mer enn et objektorientert grensesnitt. Arbeidsmåten er veldig lik den BOBDet som imidlertid endres er at det bare er for denne populære databasemotoren, så en konvertering på tvers av plattformer ville ikke være mulig.
Tilkoblingsstrengen er litt mindre kompleks siden den deler navnet på serveren i verten og databasen som skal brukes i to forskjellige parametere, i tillegg til brukerens navn og passord, la oss se hvordan det ser ut:
$ objConex = nytt mysqli (vertsnavn, bruker, passord, databasenavn);

La oss se i følgende eksempel hvordan vi oppretter en tilkobling ved hjelp av MySQLi og hvordan vi kan utføre et enkelt datainnsats:

FORSTØRRE

Vi merker oss at det er en likhet med BOB ved å ha en metode spørring () også, men dette vil bare fungere for MySQL.
Nå skal vi motta og iterere dataene vi kan få fra et søk, for dette skal vi bruke den samme metoden spørring () og deretter metoden fetch_assoc () for å få resultatene:

Det mest interessante vi la merke til er at vi bruker metoden Lukk (), dette gjør det å lukke den nåværende tilkoblingen og rense bufferen på en slik måte at bruken av serverressurser optimaliseres.
ViktigVi må huske på at hvis vi har et system laget i en gammel versjon av PHP og vi vil ikke migrere til nye versjoner, kanskje endre tilkoblingsstrengene til Database og spørringsmetoder er kanskje ikke en god idé for arbeidet det representerer. Men hvis vi ønsker å lage nye applikasjoner og systemer, er det best å starte med et solid grunnlag ved å bruke disse nye bibliotekene med støtte i fremtidige versjoner av PHP.
Med dette fullfører vi denne opplæringen, vi har sett at de nye alternativene er mye renere og sikrere, og brukervennligheten gjør dem egnet for nåværende tider.Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave