Un'applicazione per la realizzazione di un blog si compone in genere di due parti:
- un back-end o pannello di controllo per l'amministrazione di post, commenti ed eventualmente altre funzionalità;
- un front-end per la lettura dei post e dei commenti, cioè il blog vero e proprio.
Se l'accesso al front-end è generalmente consentito a tutti gli utenti, lo stesso discorso non vale invece per l'area di amministrazione a cui, per questioni di sicurezza è necessario accedere soltanto dopo aver superato positivamente una fase di autenticazione.
Lo schema del database mioblog prevede a questo scopo una tabella denominata login all'interno della quale sono disponibili tre campi da popolare, i dati in essa inseriti permetteranno all'utilizzatore di disporre dei parametri necessari per l'autenticazione all'interno dell'area di amministrazione del blog.
In PHP l'inserimento dei dati all'interno di una tabella è possibile passando come parametro alla funzione mysql_query()
un'istruzione SQL basata sul comando INSERT INTO
a cui devono seguire tra parentesi tonde i nomi dei campi interessati dall'inserimento e i relativi valori da inserire in essi, introdotti dalla chiave VALUES
e sempre tra parentesi tonde.
Di seguito verrà mostrata una funzione con modificatore public
che sarà inserita tra le funzioni messe a disposizione dalla classe MysqlClass e che permetterà di effettuare una query di INSERT
tramite il passaggio di tre argomenti:
- $t: il nome della tabella in cui effettuare l'inserimento;
- $v: i valori da inserire;
- $r: i campi da popolare tramite i valori specificati dall'argomento precedente.
Di seguito verrà proposto il codice della funzione, successivamente si passerà all'analisi dei diversi passaggi:
//funzione per l'inserimento dei dati in tabella public function inserisci($t,$v,$r = null) { if(isset($this->attiva)) { $istruzione = 'INSERT INTO '.$t; if($r != null) { $istruzione .= ' ('.$r.')'; } for($i = 0; $i < count($v); $i++) { if(is_string($v[$i])) $v[$i] = '"'.$v[$i].'"'; } $v = implode(',',$v); $istruzione .= ' VALUES ('.$v.')'; $query = mysql_query($istruzione) or die (mysql_error()); }else{ return false; } } }
La funzione inserisci()
funziona sulla base di un semplice meccanismo:
- il parametro "$t" rappresenta il nome della tabella in cui si desidera effettuare l'inserimento, questa variabile verrà quindi passata come argomento al comando
INSERT INTO
; - "$r" è un array destinato a contenere i nomi dei campi da popolare, questo array non potrà essere vuoto, quindi la funzione ne controllerà il contenuto prima di eseguire la query;
- "$v" è un array che rappresenta i valori che andranno a popolare i diversi campi i cui nomi sono anche i valori del vettore "$r";
- grazie ad un ciclo
for
(rigo 12) verranno eseguite tante iterazioni quante sono i valori compresi nell'array "$v", dato che il linguaggio SQL prevede che i valori stringa debbano essere delimitati da apici singoli all'interno delle interrogazioni, ad ogni iterazione del ciclo la funzione "is_string()" intercetterà tutti i valori stringa presenti nell'array "$v" sostituendoli con il medesimo valore delimitato da apici. - l'array "$v" modificato verrà "imploso" (rigo 17) in modo da ottenere un'unica sequenza in cui suddividere ogni valore presente in esso tramite una virgola (sulla base della sintassi prevista dall'istruzione INSERT INTO nel linguaggio SQL);
- ora la variabile
$istruzione
conterrà come valore l'istruzione SQL (rigo 18) da passare alla funzionemysql_query()
(rigo 20) che potrà quindi essere eseguita; - tutti i passaggi previsti avranno luogo soltanto nel caso in cui sia stata aperta una connessione al DBMS, diversamente la funzione restituirà immediatamente FALSE ignorando qualsiasi altro passaggio.
Una volta creata l'apposita funzione, l'inserimento dei dati in tabella richiederà poche righe di codice:
// inclusione del file contenente la classe include "funzioni_mysql.php" // istanza della classe $data = new MysqlClass(); // connessione a MySQL $data->connetti(); // definizione delle variabili da passare alla funzione per l'inserimento dei dati $t = "login"; // nome della tabella $v = array ("admin",sha1("password")); // valori da inserire $r = "username_login,password_login"; // campi da popolare // chiamata alla funzione per l'inserimento dei dati $data->inserisci($t,$v,$r); // disconnessione $data->disconnetti();
La tabella login sarà quindi coinvolta da un'istruzione INSERT INTO
in cui i campi username_login e password_login verranno popolati con i valori admin e password (modificabili arbitrariamente) e saranno questi che dovranno essere utilizzati per la procedura di autenticazione.
Si noti come, per ragioni di sicurezza, il valore relativo alla password non venga inserito nella tabella "in chiaro", cioè letteralmente, ma prima criptato tramite la funzione sha1()
che produce una stringa di 40 caratteri da una qualsiasi stringa passata come parametro, per questo motivo è stata associata una lunghezza di 40 caratteri al campo password della tabella.