Connessioni moderne e sicure ai database con PHP

Sommario
Se c'è qualcosa che può danneggiare un'applicazione, è quando non utilizziamo le risorse adeguate per renderla più veloce e più sicura, ci sono molti modi per migliorare la velocità e la sicurezza delle applicazioni, può essere utilizzando modelli di sviluppo migliori, applicare una maggiore sicurezza sui server, ecc.
Tuttavia, c'è un punto in cui molte volte non ci fermiamo a pensare e cioè se lo strumento che il linguaggio ci offre è il migliore per il lavoro che stiamo facendo. Succede spesso in PHP Nonostante il fatto che per molti anni ci sia stato un avviso di non utilizzare la funzione mysql_connect() stabilire collegamenti a Banche dati, molti sviluppatori sembrano non rendersi conto del grande errore che fanno quando lo usano.
PHP ha il supporto nativo per un gran numero di motori Banche dati che esistono nel mercato, tuttavia la sua integrazione con MySQL è quasi un punto di partenza obbligatorio per la maggior parte degli utenti.
mysql_connect()Dalla versione 5.5 di PHP funzione classica mysql_connect() è in stato deprecato, ovvero è obsoleto e si consiglia vivamente di non utilizzarlo poiché non sarà incluso nelle versioni future del linguaggio.
L'alternativa per effettuare la connessione passa attraverso due elementi, il primo è utilizzare la stessa struttura di linguaggio per effettuare le connessioni oppure utilizzare la nuova libreria per connettersi con MySQL. Qui potrebbe venire la prima domanda, perché pensarci? MySQL? Bene, la risposta è semplice, è un inizio, è la cosa più semplice e utile che possiamo spiegare inizialmente, se conosciamo questa base possiamo estrapolare ad altri motori e driver.
La prima alternativa di connessione a Banca dati è usare l'oggetto dati della lingua chiamato Oggetto dati PHP o la sua abbreviazione DOP. Questo non è altro che una grande estensione scritta nella lingua C che ci permette di stabilire connessioni con diversi tipi di motori Banche dati e che ha metodi standard che ci danno la possibilità di scrivere applicazioni multipiattaforma, cioè non dobbiamo cambiare la sintassi se cambiamo il motore del database.
All'inizio abbiamo detto che ci saremmo concentrati su MySQL, tuttavia se stabiliamo una connessione tramite DOP quello che facciamo lo possiamo applicare ad altri motori. Per questo dobbiamo solo attivare o incorporare i driver per detti motori e attivarli nel file php.ini dal server.
Per connettersi a un Banca dati dobbiamo solo stabilire il collegamento utilizzando il metodo appropriato per esso, in DOP la connessione si realizza con tre parametri fondamentali, il nome del server database, il nome utente e la sua password.
L'unico parametro di questi tre che necessita di spiegazione è quello del server database, in passato dovevamo selezionare il Banca dati Attraverso una funzione specifica dopo aver stabilito la connessione, in questo caso lo faremo nella stessa stringa, quindi la nostra stringa del nome del server sarebbe simile a questa:
mysql: host = nome host; nome db = nome db

Vediamo che inizialmente specifichiamo il motore, in questo caso mysql quindi con host ti diremo qual è il server, qui può essere un IP o localhost se il server è locale, infine con dbname passiamo il nome del database a cui vogliamo connetterci. Osserveremo nell'immagine seguente come un codice deve connettersi usando DOP:

INGRANDIRE

Poiché conosciamo il passaggio iniziale ovvero come connetterci, ora dobbiamo imparare come eseguire query, normalmente in passato eseguivamo direttamente la query con i suoi parametri, questa pratica non è affatto sicura poiché ci rende inclini a attacchi del tipo SQL Injection, DOP ci permette di utilizzare il cosiddetto Dichiarazioni preparate che non è altro che eseguire la query in modo parametrizzato, quindi la libreria stessa fa un lavoro di debug ed è meno soggetta ad attacchi. Vediamo di seguito come eseguire una semplice query e poi il suo equivalente con Dichiarazioni preparate.
In questa semplice query assumeremo di avere una tabella nel nostro Banca dati chiamata Autore che riceve un codice autore e poi il suo nome, ovviamente essendo dimostrativo non è un esempio di buona tabella, ci interessa solo sapere come funziona la connessione da DOP.
Nell'immagine vediamo che chiamiamo un metodo chiamato domanda () dall'oggetto creato con la stringa di connessione PDO, quindi scriviamo la nostra query senza troppi problemi:

INGRANDIRE

Il problema è che riceviamo i valori direttamente, quindi non c'è modo di migliorarlo e riutilizzarlo, se invece facciamo un Dichiarazioni preparate, vedremo che prima indichiamo quale è la query da eseguire, poi con un altro metodo la rendiamo efficace e le passiamo i valori necessari. Questo mette in gioco il motore di debug dei parametri. DOP dando così un ulteriore livello di protezione. Vediamo nell'immagine seguente come sarebbe l'esempio precedente usando Dichiarazioni preparate Ora.

INGRANDIRE

A prima vista può sembrare alquanto complesso e non ottimale, tuttavia se analizziamo, vediamo che prima stabiliamo la query da eseguire, quindi creiamo un array con i parametri che riceverà la nostra query, nel caso dell'esempio riceviamo il codice dell'autore e il suo nome, infine eseguiamo la query e gli passiamo l'array di parametri.
Se vogliamo consultare una volta abbiamo già inserito alcuni valori nel nostro Banca dati è molto semplice, dobbiamo solo farlo con una query SELEZIONARE, questo ci permetterà di portare i record, in passato dipendevamo da funzioni come mysql_fetch_array () o mysql_fetch_assoc() che una volta consumato ci ha reso incapaci di gestirne nuovamente i risultati.
Insieme a DOP Andremo ad ottenere i dati direttamente dall'oggetto, quindi li avremo sempre a disposizione durante l'esecuzione, vediamo nell'esempio seguente come sarebbe fatto:

Vediamo come inizialmente facciamo un Dichiarazioni preparate, in questo caso eseguiamo una semplice query e poi con un ciclo mentre () otterremo ciascuno dei record e ne faremo la stampa, se notiamo che non ci riferiamo a MySQL ovunque nel nostro codice, quindi se cambiamo la stringa di connessione e usiamo un altro motore che ha una tabella e a Banca dati con lo stesso nome e struttura, potremo ottenere i tuoi dati senza dover modificare il nostro codice.
Che cosa MySQL è il motore di database più popolare con cui integrarsi PHP, c'è anche un'alternativa ed è MySQLi che non è altro che un'interfaccia orientata agli oggetti. Il suo modo di lavorare è molto simile a quello di DOPTuttavia, ciò che cambia è che è solo per questo popolare motore di database, quindi non sarebbe possibile una conversione multipiattaforma.
La sua stringa di connessione è un po' meno complessa in quanto divide il nome del server nell'host e il Database da utilizzare in due diversi parametri, oltre al nome e alla password dell'utente, vediamo come si presenta:
$ objConex = new mysqli (HostName, utente, password, DatabaseName);

Vediamo nell'esempio seguente come stabiliamo una connessione usando MySQLi e come possiamo eseguire un semplice inserimento dati:

INGRANDIRE

Notiamo che c'è una somiglianza con DOP avendo un metodo domanda () anche, tuttavia questo funzionerà solo per MySQL.
Ora riceveremo e itereremo sui dati che possiamo ottenere da una query, per questo useremo lo stesso metodo domanda () e poi il metodo fetch_assoc() per ottenere i risultati:

La cosa più interessante che abbiamo notato è che usiamo il metodo chiudere (), questo ciò che fa è chiudere la connessione corrente e pulire il buffer in modo da ottimizzare l'uso delle risorse del server.
ImportanteDobbiamo tenere presente che se disponiamo di un impianto realizzato in una vecchia versione di PHP e non migreremo alle nuove versioni, forse cambieremo le stringhe di connessione in Banca dati e i metodi di query potrebbero non essere una buona idea per il lavoro che rappresenta. Tuttavia, se vogliamo creare nuove applicazioni e sistemi, è meglio iniziare con una solida base utilizzando queste nuove librerie con supporto nelle versioni future di PHP.
Con questo finiamo questo tutorial, abbiamo visto che le nuove alternative sono molto più pulite e sicure e la loro facilità d'uso le rende adatte ai tempi attuali.Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo
wave wave wave wave wave