Realizzare Registrazione e Login in PHP

Login BoxImmagine originale tratta da Fotolia
Tempo stimato di lettura: 4 minuti, 35 secondi
Pubblicato il 30 aprile 2013

Il web è pieno di guide riguardanti il php, ce ne sono davvero tantissime e di ogni genere, quelle complesse, quelle troppo banali, quelle inutilizzabili per il loro scarso metodo di arrivare all’utenza.

Oggi, qua su WebHouse, inizio un piccolo ciclo di “mini-guide” inerenti proprio questo linguaggio che tenterà, dove possibile, di far capire le sue basi anche agli utenti meno esperti.

Questa serie di articoli proverà ad arrivare a destinazione con semplicità e professionalità, riguarderà script piccoli ma utili, specifici e sopratutto focalizzati su un preciso obiettivo!

PS: Ricordiamo che è sempre opportuno preoccuparsi della sicurezza degli script che si metteno in rete. Di conseguenza ogni script dovrà poi essere corredato dalle opportune misure necessarie per prevenire attacchi dall’esterno.

In questo primo articolo tratterò un argomento da sempre molto richiesto in rete: vedremo come creare dei form di login e di registrazione. Prima di passare però al vero succo della questione è necessario trattare brevemente un altro argomento, i database.

Questi sono semplicemente degli archivi di dati correlati logicamente tra loro, fondamentalmente utilizzati per modellare una realtà tramite dei dati informatici.

Ma come possiamo utilizzare questi dati a nostro piacimento ? Con il  MySQL, “software” che ci permette di estrarli, leggerli, cancellarli ed eventualmente aggiornarli in qualsivoglia momento.

Come possono il login e la registrazione di un sito internet interagire con questo “archivio”? E cosa ci servirà per crearli ? Ve lo spiego subito. Nella sezione che riguarderà la registrazione potremo utilizzare il database per immagazzinare i dati dell’ utente, mentre dall’ altro lato, in quello del login, lo utilizzeremo semplicemente per leggere ciò che prima è stato inserito, tutto questo attraverso dei semplici codici appartenenti al MySQL. Vi sarà comunque tutto più chiaro una volta che avrete letto e visto con i vostri occhi ogni cosa. Iniziamo !!

Serviranno i seguenti elementi:

  • Mamp(mac)/Xampp(win), (le conoscenze di questi programmi dovrete averle).
  • Un editor di testo per scrivere il codice.

Creiamo subito i file fisici .php (vuoti)  e le tabelle nel database che ospiteranno tutti i nostri dati informatici.  Andiamo dentro la cartella htdocs di mamp/xamp e creiamo la cartellina che conterrà tutte le nostre cose, chiamiamola “prova”. Al suo interno a sua volta creeremo successivamente 5 file.php:

  • login.php
  • registration.php
  • db_con.php
  • index.php
  • prova.php // è semplicemente un file di prova in cui visualizzeremo il messaggio “login effettuato con successo”.

In login .php andrà inserita la pagina che conterrà tutti i file inerenti il relativo processo, nel registration.php tutti quelli inerenti la registrazione, in db_con.php  i parametri di connessione al database che, per questa volta, vi passerò semplicemente io, non essendo il tutorial incentrato su questo. 😉

Passiamo alla stesura del db_con.php:

 

Come vedete il file è tutto commentato e comprensibile sicuramente per chiunque abbia una minima conoscenza di php. Se state utilizzando xamp(win) la password dovrà rimanere vuota altrimenti, con Mamp(mac) dovrà essere come per il nick, cioè “root”. Il primo passaggio è stato fatto, creiamo adesso il database andando nel phpMyAdmin di Mamp/xamp; chiamiamolo “prova” e all’ interno creiamo un’ unica tabella di nome “users”, contenente solamente 4 campi (faremo una registrazione molto semplice):

  • Campo “id” [ INT, auto_incement, primary ]
  • Campo “username” [VARCHAR, 255]
  • Campo “password” [VARCHAR, 255]
  • Campo “email” [VARCHAR, 255]

  INT e VARCHAR saranno tipologie di campi e 255, dove presente, sarà l’ eventuale lunghezza massima del campo.

creazione id, username e password nel database.

Fatto questo possiamo tornare sui nostri file fisici, aprire il registration.php ed incollarci dentro il seguente codice, anch’ esso tutto commentato.

Codice da inserire nel registration.php:

Questo file di registrazione utilizza un “INSERT mysql” per inserire nel database i dati che gli son stati passati dal form di registrazione (username_reg, password_reg, email_reg), dati che adesso andremo a vedere e ad inserire nell’ index.php..

Codice da inserire nell’ index.php:

 

In questa pagina non farete altro che creare due form in html, quello di registrazione contenente tre campi, “username_reg”, “password_reg”, ed “email_reg”  (campi collegati alla pagina registration.php attraversio l’ attributo “action”) , e quello di login, che avrà solamente due campi, quello “username” e quello “password”. !!

Creiamo adesso la pagina, come per la registrazione, collegata al rispettivo form di login, login.php! Apritela e incollateci dentro il seguente codice.

Codice da inserire nel login.php:

Prima cosa che faccio, assegno alla sessione i parametri passati dal form di login, così resteranno fino a scadenza al suo interno e potranno eventualmente esser riutilizzati per qualcos’ altro. Dopo ciò faccio un “SELECT mysql” per selezionare e cercare nella tabella “users” del database qualche utente che corrisponde ai dati inseriti nel form. Se tutto funziona correttamente il login avrà successo, altrimenti, si visualizzerà a schermo un messaggio di errore.

Codice da inserire nel prova.php:

A questo punto, se avrete eseguito questi passaggi correttamente, dovreste essere in grado di registrarvi al vostro “sito”  e successivamente anche di loggoravi. Fate delle prove, iniziate a registrare qualche utente dal form e andate a visualizzare la tabella users nel database; se questa avrà al suo interno gli utenti che avete inserito, allora avrete fatto tutto correttamente nella sessione inerente la registrazione. Dopo di che  provate a loggoravi con gli utenti che avete creato e controllate che anche questa passaggio funzioni.

Ho testato il codice in locale e tutto dovrebbe essere funzionante, per qualsiasi problema o errore non esitate comunque a fare domande.. !! Un saluto 😉

Appena ne avrò tempo implementerò nel codice anche le indispensabili pratiche di sicurezza.. !! Pazientate !! 🙂

  • Max

    io direi di usare le funzioni mysqli, dato che la funzione mysql_connect di PHP è dichiarata obsoleta

    • Maicol Torti

      Ciao Max. Hai ragione anche tu, l’ utilizzo del mysqli avrebbe sicuramente snellito il codice e reso più veloce ogni processo! Come ho detto a Corpulento ho preferito frammentare il codice in più parti anziche raggrupparlo in minor stringhe, starà all’ utente in secondo momento, eventualmente, migliorarlo.

      Comunque hai ragione anche te, forse avrei dovuto chiamar diversamente l’ articolo ed incentrarmi ad un pubblico meno generico specificando la grande semplicità del codice scritto !

      Grazie anche a te comunque !! 😉

  • Il Corpulento Capomacchina

    ragazzi ma le best practices? sicurezza? capisco che sia una “Guida per dummies” però un minimo di attenzione a queste cose è essenziale anche in questo genere di guide

    • formware

      a cosa ti riferisci quando parli di best practices e sicurezza? nel senso, come modificheresti il tutto?

      • Il Corpulento Capomacchina

        Mi riferisco al fatto che questo codice si scriveva circa 10 anni fa, nel 2013 non si dovrebbero vedere password non criptate, valori presi direttamente da $_POST senza controlli, escape e concatenati ad una query. Quoto anche Max per l’utilizzo delle funzioni mysqli.

        • formware

          hai qualche post o guida (in italiano) con qualche esempio in merito? Grazie

    • Maicol Torti

      Ciao Corpulento. La guida è stata incentrata volutamente sulla
      semplicità e sull’ utilizzo di un codice leggibile e il più
      “frammentato” possibile, proprio per farlo capire a qualsiasi tipo di
      utenza !!

      Sono daccordo con il tuo commento anche se ho
      creato l’ articolo per mettere a disposizione uno scheletro di
      registrazione/login, non qualcosa di “completo” e complesso. Starà a chi
      utilizzerà tale articolo modificare, aggiungere o togliere codice dove
      lo riterrà necessario. 😉

      Detto questo comunque
      aggiungerò le pratiche di sicurezza più banali, sono indispensabilia
      anche per una guida come questa, hai ragione !!

      Grazie per il commento !! 🙂

  • Paolo Di Ramio

    è pieno di errori…e un minimo di ottimizzazione non farebbe male.

  • Giovanni Tramparulo

    ciao mi da un errore ho copiato e incollato tutto e fatto come dici tu ecco : Parse error: parse error in C:xampphtdocslogin.php on line 10

  • Gianluca

    A me quando inserisco i dati di registrazione e clicco su registra va in una pagina con scritto: query di registrazione non riuscitaNo database selected

  • Gianluca

    Ma dove sta l’ errore:

  • Gianluca

    Quale è l’ errore?

  • halon176

    in diversi punti hai fatto confusione fra file db_con.php e dbcon.php… per forza poi le cose non vanno 🙂

    • Ciao, purtroppo l’autore non fa più farte del team. Abbiamo provveduto a correggere nel codice quanto indicato. Grazie della segnalazione.

  • Rancid

    ho provato con AlterVista ma non funge… mi da questo errore “Errore nella selezione del database: errore Access denied for user ‘nomeutente’@’localhost’ to database ‘prova’”

  • Selvaggia Ardizzone

    Avrei bisogno di uno script login con limitazione delle registrazioni giornaliere. Esempio 50 al giorno, completo di countdown giornaliero sui posti disponibili per la registrazione.

Shares