PHP/OOP: Creare un sistema di registrazione e autenticazione per gli utenti
Pagina 1 di 5
Dalle mail che ricevo e dalle discussioni sui forum che seguo, noto ancora una certa difficoltà di alcuni sviluppatori PHP nel passaggio dal paradigma procedurale a quello della programmazione orientata agli oggetti; in realtà credo che alla base di tutto ci sia soltanto una questione di abitudini consolidate, la OOP non è difficile quanto sembra e la maggior parte di coloro che vorrebbero utilizzarla possiedono già, spesso senza saperlo, gli strumenti tecnici per trasformarla in un mezzo per realizzare le proprie applicazioni.
Per dimostrare quanto appena sostenuto, presenterò in questa guida la procedura necessaria per la creazione di un sistema di registrazione e autenticazione basato sulla programmazione ad oggetti, sarà un'occasione per mostrare in modo molto semplice come classi, metodi, proprietà e, appunto, oggetti non siano necessariamente destinati all'utilizzo in applicazioni complesse.
Il nostro script utilizzerà il DBMS MySQL per la memorizzazione delle informazioni, quindi come prima operazione dovremo crearci un database e dargli un nome, ad esempio "registrazione", all'interno di esso sarà presente una tabella della quale, per comodità del lettore, riporto il dump SQL pronto per l'importazione:
CREATE TABLE IF NOT EXISTS `iscritti` ( `id_utente` int(4) NOT NULL AUTO_INCREMENT, `nome_utente` varchar(20) DEFAULT NULL, `password` varchar(40) DEFAULT NULL, `nome_reale` varchar(50) DEFAULT NULL, `email` varchar(80) DEFAULT NULL, PRIMARY KEY (`id_utente`), UNIQUE KEY `username` (`nome_utente`), UNIQUE KEY `email` (`email`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
La tabella "iscritti" sarà quindi composta da 5 campi:
- id_utente: destinato ad ospitare l'identificativo univoco di ogni record;
- nome_utente: registrerà la username di ogni utente;
- password: permetterà ad ogni utente iscritto di loggarsi alla pagina riservata;
- nome_reale: il vero nome dell'utente, potrà anche essere diverso dalla username;
- email: l'indirizzo di posta elettronica dell'iscritto.
Ma come sarà strutturata la nostra applicazione? Avremo innanzitutto un file di configurazione, lo chiameremo per esempio "config.php", che ci permetterà di interagire con il DBMS connettendoci ad esso e selezionando il database precedentemente creato; vediamo come:
<?php
# definizione delle costanti per l'autenticazione al DBMS
define('DATA_HOST', 'localhost');
define('DATA_UTENTE', 'root');
define('DATA_PASS', '');
define('DATA_DB', 'registrazione');
# classe per l'interazione con il database
class DATA_Class {
# definizione del costruttore
function __construct() {
# connessione al DBMS
$connessione = @mysql_connect(DATA_HOST, DATA_UTENTE, DATA_PASS) or die('Errore nella connessione: ' . mysql_error());
# selezione del database
@mysql_select_db(DATA_DB, $connessione) or die('Errore dal database: ' . mysql_error());
}
}
?>
Niente di particolarmente complesso, il file "config.php" si occuperà in pratica di:
- definire le costanti che conterranno le informazioni necessarie alla connessione;
- definire una classe che gestirà l'interazione con MySQL;
- connettersi al DBMS e selezionare la base di dati di riferimento.
Come è possibile notare, la classe verrà introdotta per semplice dichiarazione, per definirla basterà infatti attribuirle un nome:
class DATA_Class {..
All'interno della classe, delimitato da parentesi graffe, vi dovrà essere un metodo particolare, detto "costruttore", definito in questo modo:
function __construct() {..
Il costruttore è in pratica un metodo associato ad una classe che ha il compito di porre in essere l'istanza della classe stessa e di inizializzarla per la creazione di un oggetto; una chiamata al costruttore viene effettuata in modo automatico nel momento in cui viene generato un nuovo oggetto di una classe.
Un concetto troppo complicato? Solo apparentemente, nel codice proposto infatti il costruttore delimita il codice necessario per connettersi a MySQL e selezionare il database, ciò vuol dire che ad ogni istanza della classe corrisponderà una chiamata automatica del costruttore che si occuperà di svolgere questi compiti.
Ora che il quadro si va semplificando è possibile passare alla fase successiva, cioè alla creazione del file contenente gli altri metodi che verranno utilizzati nella nostra applicazione.







