gallo davide web developer

Benvenuto in questo percorso di programmazione e sviluppo web, ti accompagnerò lungo un percorso in cui svilupperemo un piccolo social di condivisione di post. Scriveremo il codice man mano che andremo avanti, passo passo, senza fretta. Utilizzeremo soltanto linguaggi puri di base, senza framework. Spero possa esserti di aiuto e ispirarti.

Creazione query registrazione utente

Ci sono tanti modi per creare delle query, io utilizzerò il PDO (PHP Data Object), un paradigma di programmazione altamente utilizzato per il collegamento e la manipolazione di database tramite PHP. PDO si interfaccia con svariati sistemi di database e ha sotituito l'ormai deprecato MySqli. Nelle prossime lezioni ci dedicheremo alla scrittura di query, dei form da cui inviare la richiesta delle query e sistemeremo qualche stile sul nostro file CSS. In ogni file index delle varie sezioni abbiamo incluso come primo file l'head principale, questo ci permette di avere un unico punto di riferimento per la scrittura di funzionalità. Apriamo il file head che si trova nella cartella templates e sotto la richiesta del file di connessione, che ci serve appunto per interfacciarci col database, e scriviamo la nostra prima query per la registrazione di un utente. Per ora la scriveremo qua, ma andando avanti con le lezioni creeremo un file apposito per le funzioni, così da separarle e avere soltanto il file head come riferimento. Con un controllo if vedremo il tipo di richiesta e se la richiesta è stata effettivamente inviata. Questa verrà direttamente dal pulsante Invia del form, al quale abbiamo dato il tipo submit. Sarà un metodo POST, ossia il browser non terrà memoria della richiesta nell'indirizzo della pagina, come succederà per il metodo GET, che utilizzeremo in futuro. L’isset è una funzione nativa di PDO che controllerà se la richiesta è stata inviata o meno, senza questo controllo avremo un errore che ci informerà che la chiave POST[‘registrati’] non è stata definita. Questa query sarà molto semplice, passerà i dati così come sono, testuali. È una pratica da evitare assolutamente, perché non ha controlli di sicurezza e potremmo incorrere in problemi o attacchi informatici. I dati verranno inviati a partire dal valore dei vari input, riusciremo ad estrarli grazie ai loro name, salvandoli prima in apposite variabili. Le variabili con i due punti dentro le parentesi del VALUES sono dei segnaposto, una pratica per rendere più sicura la query e vincolare i valori indirizzandoli nelle apposite colonne della tabella. Salviamo i valori delle richieste dei vari POST e facciamoli elaborare dalla query. La funzione execute eseguirà appunto la query salvando i dati nel database. Se tutto è andato a buon fine, la pagina verrà ricaricata senza problemi. Ora entriamo nella tabella del database e vedremo che sarà popolata dal nostro primo utente registrato.

Bene, ora che riusciamo a connetterci e popolare il database, iniziamo a strutturare meglio le funzionalità. Non vogliamo avere tutte queste richieste e queste funzioni in un file in cui ci saranno anche altri dati e altro codice HTML, quindi utilizzeremo l’head soltanto come “ponte” per i vari dati. Creiamo una cartella e chiamiamola functions e inseriamoci un file, Functions.php, o un altro nome che faccia comunque riferimento al fatto che ci saranno delle funzioni all’interno. Come prima facciamo richiesta di collegamento al nuovo file appena creato. Nel file Functions.php scriviamo la nostra prima funzione, che chiamerò RegistrazioneUsers. Questa non sarà altro che la stessa che abbiamo scritto in precedenza nell’head, quindi tagliamola e incolliamola all’interno della nuova funzione appena creata. Tra le parentesi tonde facciamo riferimento alla variabile $pdo, che ci verrà passata dalla chiamata di funzione. Questo parametro sarà indispensabile per il passaggio della connessione al database. Torniamo all’if del file head e richiamiamo la funzione al suo interno, senza dimenticarci le parentesi tonde. Così facendo abbiamo creato un file che verrà utilizzato al solo scopo di contenere tutte le funzioni che scriveremo, così da non doverle mischiare con altri file o codici. Andiamo sul browser e torniamo al form di registrazione dell’utente, stiamo attenti a non ricaricare la pagina perché in questo momento la richiesta precedente verrà inviata di nuovo, quindi torniamo prima nella home e poi nuovamente nel form di registrazione. Inviamo una nuova richiesta e, se tutto è stato scritto correttamente, un nuovo utente andrà a popolare la tabella.

Bene, ora abbiamo un piccolo sistema di registrazione, una struttura dei file ben disposta con le varie funzionalità separate tra loro, indipendenti. Pian piano il file Functions verrà popolato di tante altre funzioni, lo miglioreremo sempre più. Ora il problema rimane il fatto della sicurezza dei dati passati. Stiamo passando valori puri, testuali, senza che vengano controllati o sanitizzati, soprattutto la password. PDO e PHP ci danno delle funzionalità native per ovviare a questo problema. Facciamo sanitizzare i valori passati a queste funzioni, facciamo una codifica della password tramite hashing. Nella funzione chiediamo a PDO di trattare le variabili in una determinata maniera, usando la funzionalità nativa PDO::PARAM_STR, visto che comunque sia i valori passati sono delle stringhe. Aggiungiamo le ultime due funzioni header e die che ci permettono rispettivamente di essere reindirizzati alla stessa pagina ed evitare che alla ricarica della stessa le informazioni appena inviate vengano lavorate una seconda volta. Ora prima di andare al form e creare un nuovo utente, ripuliamo la tabella dagli utenti creati in precedenza. Entriamo in phpMyAdmin, andiamo nel database e avviamo questa query TRUNCATE TABLE users. Questo farà si che la tabella si svuoti azzerando anche il conteggio automatico dell’id. Questa manovra possiamo farla ora perché abbiamo pochi dati, ma quando ne avremmo molti di più sarà preferibile utilizzare altri metodi e andarci più cauti. Avviamo la query e torniamo sul form di registrazione, registriamo un altro utente e torniamo nella tabella, vedremo che l’utente sarà registrato e nella colonna della password ci saranno dei simboli. Questa è la crittografia della nostra password.

Perfetto, ora abbiamo un piccolo sistema di registrazione e crittografia, sicuro e stabile. Naturalmente non finisce qua e non sarà l’unico modo per creare un sistema di registrazione sicura. Più in la vedremo altri modi per farlo, ma per ora questo è abbastanza per creare dei piccoli database. Potete giocare con la creazione di nuove colonne nella tabella, inserire altri input per il passaggio di dati e vedere un po’ le innumerevoli funzionalità di PDO. Nelle prossime lezioni creeremo il sistema di Login dell’utente, così da potergli permettere l’ingresso alla propria pagina personale, in cui ci sarà il form per la condivisione dei post.

Dietro Avanti