Iniziare a programmare da zero un nuovo sito: ecco come risparmiare tempo e fatica

spacca!  0 scarso!  0 versione stampa invia per email scheda utente totale visite  359
Ormai siamo circondati da siti fatti in Wordpress, Joomla o Drupal, sono quasi uno standard, ma molto spesso mi capita ancora di realizzare nuovi siti personalizzati da zero, ebbene si… lo ammetto, in quanto programmatore non apprezzo moltissimo utilizzare dei CMS per le mie creazioni.
Lo so, Wordpress è sicuramente affascinante, ci sono moltissimi plugin utili ed è un ottimo strumento ma non è sempre la soluzione giusta per ogni tipologia di sito.

Proprio per questo mi capita spesso di cominciare la programmazione da zero per un nuovo sito in PHP e di dover creare alcune funzionalità basiche comuni alla maggior parte dei siti.

Questa operazione è la più noiosa, diciamoci la verità, se anche tu hai provato sulla tua pelle questa sensazione ti ricorderai quanto è “faticoso” doversi concentrare non sulle funzioni innovative e specifiche del nuovo sito che stai creando ma, bensì, sulla creazione delle basi che hai già scritto almeno altre 10 volte e che sono praticamente identiche per tutti gli altri precedenti siti che hai creato, un esempio eclatante è il sistema di login/registrazione.

Imparare a riutilizzare il proprio codice

Se sei stato più furbo della maggior parte dei programmatori sicuramente hai cercato di essere modulare così da poter utilizzare porzioni di codice come se fossero dei blocchi e quindi poter riusare il codice di login, registrazione, invio di email di conferma, sistema di recupero password, ecc., in più progetti senza dover ogni volta riscriverlo, in gergo si dice senza dover ogni volta “reinventare la ruota”.

Il motivo principale per cui Wordpress può essere un’ottima soluzione per alcuni dei tuoi progetti è perché ti fornisce già quelle parti così noiose da scrivere e ti consente di concentrarti solo sulle nuove funzionalità, quelle più interessanti, ma questo non è sempre valido, quindi molto spesso dobbiamo creare con le nostre mani il sito, scrivendolo riga per riga.

Vorrei consigliarti una libreria gratuita che utilizzo e che ho utilizzato nella realizzazione del mio ultimo sito internet che puoi vedere qui. In particolare voglio approfondire una libreria molto completa per quanto riguarda la gestione del login distribuita gratuitamente su github in quattro versioni diverse.

È esattamente tutto quello che ogni programmatore PHP vorrebbe avere tra le mani quando inizia a programmare un nuovo progetto!

Ha tutto e l’opposto di tutto!

Mi spiego meglio: sarebbe troppo banale se avesse tutte le funzioni di cui abbiamo bisogno, perché in questo modo molte funzionalità non andrebbero utilizzate quindi rimarrebbero li disabilitate ad attendere che ci servano, ma spesso non servono mai tutte le funzioni di un sistema di registrazione/login perfetto!

Spesso ne vogliamo solo alcune o magari una via intermedia....
Beh, chi ha sviluppato la libreria lo sapeva ed infatti l’ha creata in varie versioni:

  • One-file Version
  • Minimal Version
  • Advanced Version
  • HUGE Version

In quest’ultima abbiamo tutte le funzioni possibili e immaginabili, andiamo a vederle nel dettaglio una ad una.

Per chi ha fretta consiglio la One-file Version

La prima è la versione One-file ovvero tutto è in un unico file: configurazione, logica...tutto! Noi possiamo includerlo nel nostro codice ed il gioco è fatto, non supporta la connessione MySQL ma usa la SQLite e il PDO di PHP. La libreria permette di usare SOLO le funzioni basiche quindi registrazione di nuovi utenti, il login di un utente esistente ed infine il logout, senza email di conferma, senza password dimenticata, senza nessun tipo di ruoli (amministratori, moderatori, utenti). Una soluzione molto semplice e leggera, ottima per un sistema di login “one-shot”.

Per chi vuole qualche funzione in più c’è la Minimal Version

Passiamo a qualcosa di più strutturato, almeno una connessione MySQL ci vuole quindi ecco la soluzione Minimal ovvero minimale. Essa contiene sempre le funzionalità viste prima (registrazione, login, logout) ma questa volta possiamo salvare i dati in un “vero” database e il codice è ben organizzato quindi: il file di configurazione è separato, abbiamo le varie classi, le viste...tutto è in ordine. Consigliatissima!

Per i più raffinati c’è l’Advanced Version

Per chi cerca qualcosa di più c’è la versione Advanced ovvero avanzata. Perché avanzata? Cosa avrà mai di avanzato? Beh, ha tutte le funzionalità di un sistema di registrazione che si rispetti.
Implementando questa farai un figurone con uno sforzo veramente minimo!

Ovviamente avrai a disposizione tutto quello che abbiamo visto nelle versioni precedenti: registrazione, login, logout e connessione a MySQL, ma in più questa volta avrai anche il sistema di invio delle email per confermare la registrazione con l’indirizzo univoco e anche per recuperare la password in caso l’utente l’abbia smarrita. Puoi configurare l’invio delle email tramite il tuo SMTP preferito utilizzando PHPMailer. Inoltre, contiene anche il sistema di Captcha integrato (anche se sarebbe il caso di sostituirlo con il nuovo offerto da Google) e per le connessioni utilizza sempre il PDO.

Questa è la soluzione che ho deciso di utilizzare nel mio ultimo progetto in quanto, grazie alla sua completezza, avevo tutto ciò che mi serviva. Ovviamente ho dovuto apportare delle modifiche ai sorgenti per adattarla al mio sistema, sia nel template sia nelle funzioni.

Per chi non si accontenta ecco la versione ENORME

E adesso il pezzo forte, rullo di tamburi...la HUGE version! La versione ENORME!

Già dal nome puoi intuire che è un qualcosa di altamente professionale, che ha tutto quello di cui chiunque potrebbe mai avere bisogno quando crea un sito con una gestione degli utenti.

Utilizza, a differenze delle precedenti, un’architettura MVC (Model View Controller) che essenzialmente aggiunge dei livelli di astrazione nel codice… livelli di astra-che? Non hai capito nulla? Ok, hai ragione, detto semplicemente serve per tenere il codice organizzato e pulito, ad esempio non andrai mai a scrivere il codice PHP all’interno del template html e viceversa. Per raggiungere questo obiettivo il modello è caratterizzato da tre componenti separate che interagiscono tra loro e sono: i modelli (Models), le viste (Views) e i controllori (Controllers), ma cosa sono?
Per model si intende la rappresentazione delle entità del database, per controller invece le Classi PHP in cui andiamo a definire le funzionalità del nostro sito, ad esempio la logica che sta dietro la registrazione, e, infine, per view i codici html che servono solo a definire il template.

La versione HUGE, oltre all’architettura MVC (tipica dei framework come Symfony, Laravel, Phalcon), offre anche delle funzionalità aggiuntive come per esempio la riscrittura degli URL (url rewriting), le pagine profilo per ogni utente, in cui ciascuno di essi può modificare i propri dati, le pagine pubbliche per ogni utente, la possibilità di caricare un avatar con i file in locale o da Gravatar, l’integrazione con Composer, l’autenticazione OAhth2 e la possibilità di dare dei “livelli” agli utenti simili a dei ruoli (admin, moderatore e cosi via). Ovviamente offre sempre il sistema di invio delle email tramite PHPmailer quindi SMTP o volendo direttamente con la funzione mail() di PHP.


Non mi è ancora capitato di dover usare questa versione ma sicuramente è molto completa ed è un’ottima soluzione anche se, detto francamente, nel momento in cui ti dovesse servire un sistema come questo forse è il caso di valutare direttamente di crearne uno tuo utilizzando uno dei più popolari Framework come Symfony o Laravel.

Adesso cominciare a programmare un nuovo progetto sarà meno faticoso!

Ok, siamo alla fine!

Questa era solo una delle librerie open source di cui volevo parlarti, ce ne sono tante altre che ho usato e che mi hanno accorciato veramente tanto il lavoro senza togliermi ”autonomia” nella gestione del codice, cosa che accade inevitabilmente utilizzando un CMS e, anche se, in misura minore anche utilizzando un Framework.

Se anche tu hai trovato qualche libreria che ti è stata utile fammelo sapere, così magari posso documentarmi e scrivere un articolo anche su quella :)

Se questo articolo ti è stato utile condividilo con i tuoi amici sviluppatori, così fai un favore anche a loro ;)

Alla prossima e buon login!
 
 

Inserisci un commento

non sei loggato

CAPTCHA