Moderne og sikre forbindelser til databaser med PHP

Indholdsfortegnelse
Hvis der er noget, der kan skade en applikation, er det, når vi ikke bruger de tilstrækkelige ressourcer til at gøre det hurtigere og mere sikkert, der er mange måder at forbedre applikationernes hastighed og sikkerhed på, det kan være ved at bruge bedre udviklingsmønstre, anvende større sikkerhed på servere osv.
Der er dog et punkt, hvor vi mange gange ikke stopper med at tænke, og det er, hvis det værktøj, som sproget giver os, er det bedste til det arbejde, vi udfører. Dette sker meget i PHP På trods af at der i mange år har været en advarsel om ikke at bruge funktionen mysql_connect () at etablere links til Databaser, synes mange udviklere ikke at indse den store fejl, de laver, når de bruger den.
PHP har indbygget support til et stort antal motorer Databaser der findes på markedet, men dens integration med MySQL det er næsten et obligatorisk udgangspunkt for de fleste brugere.
mysql_connect ()Fra version 5.5 af PHP klassisk funktion mysql_connect () er i tilstand forældet, det vil sige, det er forældet, og det anbefales kraftigt ikke at bruge det, da det ikke vil blive inkluderet i fremtidige versioner af sproget.
Alternativet til at oprette forbindelsen går gennem to elementer, det første er at bruge den samme sprogstruktur til at oprette forbindelser eller at bruge det nye bibliotek til at oprette forbindelse til MySQL. Her kommer måske det første spørgsmål, hvorfor bare tænke dig om MySQL? Svaret er godt, det er en begyndelse, det er den enkleste og mest nyttige ting, vi kan forklare i første omgang, hvis vi kender denne base, kan vi ekstrapolere til andre motorer og drivere.
Det første alternativ til forbindelse til Database er at bruge sprogets eget dataobjekt kaldet PHP Data Object eller dens forkortelse BOB. Dette er intet mere end en stor skriftlig udvidelse i sproget C der giver os mulighed for at etablere forbindelser med forskellige typer motorer Databaser og at den har standardmetoder, der giver os mulighed for at skrive applikationer på tværs af platforme, det vil sige, at vi ikke behøver at ændre syntaksen, hvis vi ændrer databasemotoren.
Først sagde vi, at vi ville fokusere på MySQL, men hvis vi etablerer en forbindelse igennem BOB hvad vi gør, kan vi anvende på andre motorer. Til dette behøver vi kun at aktivere eller inkorporere driverne til motorerne og aktivere dem i filen php.ini fra serveren.
For at oprette forbindelse til en Database vi skal bare etablere linket ved hjælp af den passende metode til det, i BOB forbindelsen opnås med tre grundlæggende parametre, navnet på databaseserveren, brugernavnet og dets adgangskode.
Den eneste parameter for disse tre, der kræver forklaring, er databaseserverens, tidligere måtte vi vælge Database Gennem en bestemt funktion efter oprettelse af forbindelsen, i dette tilfælde vil vi gøre det i den samme streng, så vores servernavnsstreng ville se sådan ud:
mysql: vært = værtsnavn; dbnavn = dbnavn

Vi ser, at vi oprindeligt specificerer motoren, i dette tilfælde mysql så vil vi med vært fortælle dig, hvilken server der er, her kan det være en IP eller lokal vært hvis serveren er lokal, endelig med dbnavn vi sender navnet på den database, som vi vil oprette forbindelse til. Vi kommer til at observere i det følgende billede, hvordan en kode skal forbindes ved hjælp af BOB:

FORSTØRRE

Da vi kender det første trin, der er, hvordan man opretter forbindelse, skal vi nu lære, hvordan vi kan udføre forespørgsler, normalt plejede vi tidligere at udføre forespørgslen direkte med dets parametre, og denne praksis er slet ikke sikker, da den gør os tilbøjelige til at angreb af typen SQL -indsprøjtning, BOB giver os mulighed for at bruge den såkaldte Forberedte stammer hvilket ikke er andet end at udføre forespørgslen på en parameteriseret måde, så biblioteket selv udfører et fejlfindingsjob og er mindre tilbøjeligt til angreb. Lad os derefter se, hvordan du udfører en simpel forespørgsel og derefter dens ækvivalent med Forberedt Stament.
I denne enkle forespørgsel antager vi, at vi har et bord i vores Database opkald Forfatter der modtager en forfatterkode og derefter dets navn, selvfølgelig er det demonstrativt ikke et eksempel på en god tabel, vi er kun interesserede i at vide, hvordan forbindelsen fungerer ud fra BOB.
På billedet ser vi, at vi kalder en metode kaldet forespørgsel () fra objektet oprettet med PDO -forbindelsesstrengen, så skriver vi vores forespørgsel uden store problemer:

FORSTØRRE

Problemet er, at vi modtager værdierne direkte, så der er ingen måde at forbedre og genbruge dette, i stedet hvis vi laver en Forberedt Stament, vil vi se, at vi først angiver, hvilken forespørgsel der skal udføres, derefter med en anden metode gør vi den effektiv og videregiver de nødvendige værdier til den. Dette bringer parameter -debugging -motoren i spil. BOB hvilket giver et yderligere beskyttelsesniveau. Lad os se i det følgende billede, hvordan det tidligere eksempel ville se ud ved hjælp af Forberedte stammer nu.

FORSTØRRE

Ved første øjekast kan det virke lidt komplekst og ikke optimalt, men hvis vi analyserer, ser vi, at først etablerer vi forespørgslen, der skal udføres, så opretter vi et array med de parametre, som vores forespørgsel vil modtage, i tilfælde af eksemplet vi modtage forfatterens kode og dens navn, til sidst udfører vi forespørgslen og sender den en række parametre.
Hvis vi vil konsultere, når vi allerede har indsat nogle værdier i vores Database det er meget enkelt, vi skal bare gøre det med en forespørgsel VÆLG, dette vil give os mulighed for at bringe optegnelserne, tidligere var vi afhængige af funktioner som f.eks mysql_fetch_array () eller mysql_fetch_assoc () den engang forbrugte efterlod os ude af stand til at styre dens resultater igen.
Med BOB Vi kommer til at hente dataene direkte fra objektet, så vi vil altid have dem tilgængelige under udførelse, lad os se i følgende eksempel, hvordan det ville blive gjort:

Vi ser, hvordan vi i første omgang laver en Forberedt Stament, laver vi en simpel forespørgsel i dette tilfælde og derefter med en loop mens () vi vil indhente hver af optegnelserne og foretage deres udskrivning, hvis vi bemærker, at vi ikke refererer til MySQL hvor som helst i vores kode, så hvis vi ændrer forbindelsesstrengen og bruger en anden motor, der har en tabel og en Database af samme navn og struktur, vil vi være i stand til at indhente dine data uden at skulle ændre vores kode.
Hvad MySQL er den mest populære databasemotor at integrere med PHP, der er også et alternativ, og det er det MySQLi hvilket ikke er andet end en objektorienteret grænseflade. Dens måde at arbejde på ligner meget den BOBHvad der dog ændrer sig, er, at det kun er til denne populære Database-motor, så en cross-platform-konvertering ville ikke være mulig.
Dens forbindelsesstreng er lidt mindre kompleks, da den deler navnet på serveren i værten og databasen, der skal bruges i to forskellige parametre, ud over brugerens navn og adgangskode, lad os se, hvordan det ser ud:
$ objConex = ny mysqli (værtsnavn, bruger, adgangskode, databasenavn);

Lad os i det følgende eksempel se, hvordan vi opretter en forbindelse vha MySQLi og hvordan vi kan udføre en simpel dataindsættelse:

FORSTØRRE

Vi bemærker, at der er en lighed med BOB ved at have en metode forespørgsel () også, men dette vil kun fungere for MySQL.
Nu skal vi modtage og gentage de data, som vi kan få fra en forespørgsel, til dette vil vi bruge den samme metode forespørgsel () og derefter metoden fetch_assoc () for at få resultaterne:

Det mest interessante, vi bemærkede, er, at vi bruger metoden tæt (), dette gør det ved at lukke den aktuelle forbindelse og rense bufferen på en sådan måde, at brugen af ​​serverressourcer optimeres.
VigtigVi skal huske på, at hvis vi har et system lavet i en gammel version af PHP og vi vil ikke migrere til nye versioner, måske ændre forbindelsesstrengene til Database og forespørgselsmetoder er muligvis ikke en god idé til det arbejde, det repræsenterer. Men hvis vi vil lave nye applikationer og systemer, er det bedst at starte med et solidt fundament ved at bruge disse nye biblioteker med understøttelse i fremtidige versioner af PHP.
Med dette afslutter vi denne vejledning, vi har set, at de nye alternativer er meget renere og sikrere, og deres brugervenlighed gør dem velegnede til aktuelle tider.Kan du lide og hjælpe denne vejledning?Du kan belønne forfatteren ved at trykke på denne knap for at give ham et positivt punkt
wave wave wave wave wave