Si chiamano Content Management System le applicazioni di gestione dei contenuti dei siti che consentono di inserire, modificare e rendere visibili articoli, banner, immagini e link senza ricorrere a sistemi di sviluppo.
Un Content Management System è un’applicazione che consente di variare i contenuti di un sito senza intervenire sulle pagine o sul database da cui sono lette le informazioni.
Il suo vantaggio è che una volta creata la struttura che dinamicamente produce le pagine, i contenuti possono essere inseriti e variati senza conoscenze tecniche di sviluppo.
Tecnicamente si tratta di una applicazione, spesso usabile mediante il browser, che consente con un front-end di semplice uso l’inserimento e la gestione di articoli, schede, elenchi, link e banner. Tali informazioni sono poste nel database dal quale poi il motore dinamico del sito le estrae per produrre le pagine che saranno visualizzate al visitatore. Chi inserisce i contenuti, in sostanza, non deve avere conoscenze tecniche. Deve saper scrivere e quasi niente altro.
La struttura della pagina sarà impostata sulla variabile $azione che determinerà cosa la pagina PHP dovrà fare; si avrà due tipi di operazioni, in scrittura e in lettura, che corrisponderanno a funzioni con cui restituire output solo in caso di lettura.
La variabile sarà gestita da un doppio switch: il primo per le operazioni che non prevedono output (insert e delete), il secondo per quelle che li prevedono come la creazione del form, e la lista di tutti i record presenti in tabella.
Ogni case dello switch corrisponderà a una funzione, in caso di output verrà restituita una variabile contenente la stringa HTML da stampare.
la variabile azione inizialmente è vuota ma può assumere solo quei quatto valori.
Quindi entro nel primo switch:
che verrà usato solo per salvare un record o cancellarne uno; sempre che la variabile azione assuma il valore salva o elimina, comunque alla fine il valore che prende è lista. E quindi si accede al secondo switch.
La prima volta che si esegue il php il valore della variabile azione è nullo per cui si va subito alla funzione lista.
Da notare come in questo switch si usi il comando header che chiama la pagina html passandogli la variabile contenuto che è composta concatenando la variabile out che si vedrà nella funzione lista, form, salva e cancellazione.
Ecco la pagina html.
Ho usato un css esterno. Si noti il comando get per poi passarlo alla variabile contenuto e quindi si usa echo per comporre la pagina html. FANTASTICO!!!!!
La funzione lista compone la variabile out concatenando tutta la pagina html (FANTASTICO!) poi per inserire un nuovo record uso href con il link alla pagina php passando il valore della variabile azione a form che poi verrà usata nello switch per chiamare la funzione form.
Usa poi il pulsante da cancellare valorizzando la variabile azione con l valore elimina per chiamare nel php la funzione elimina.
Effettuo poi una select con bind prepare ed execute e mostro l’esito della select mostrandola in forma tabellare.
Ecco l’output:
Ecco la funzione form:
Alla fine della funzione form la variabile azione viene valorizzata cn il valore salva che fa rientrare nel primo switch e mostra nuovamente la lista con il valore aggiornato.
Ecco la funzione elimina:
la quale alla fine mostra nuovamente la lista senza il record precedentemente eliminato.
Il modello transazionale si basa sul concetto che ogni azione che viene eseguita su un database ad esempio insert, delete, o alter avvenga effettivamente.
Si parla perciò di consistenza di database. Non deve mai avvenire che un inserimento od una cancellazione crei una situazione in cui un altro utente legga il dato che in realtà non sia più presente nel database.
In pratica finchè non avviene l’operazione di commit della transazione ossia la conferma dell’operazione nessuno può leggere la tabella. E’ come se mettessimo un blocco esclusivo sulla tabella finchè non decido io quando deve avvenire.
Il primo passo è connettersi al database e settare gli errori:
A questo punto arriva il nucleo del modello transazionale:
Se dovesse andare male l’inserimento il database effettua un rollback ossia si torna indietro. Tutte le istruzioni tra transaction e commit vengono annullate dal rollback.
Ecco il codice sorgente senza ovali di evidenziazione.
Per inserire un valore uso le query parametriche con prepare, bind ed execute
FONDAMENTALE queste accortezze: nella query inerire :id, :nome e così via ossia i : e poi il nome della variabile.
Inoltre si ha il controllo del tipo del campo che si andrà ad inserire che come si vede può essere di tipo intero o di tipo stringa con il comando PDO::PARAM_STR che sarà appunto di tipo stringa.
Si noti che mi sono collegato al dbms poi ho creato il database. Ho intercettato il messaggio d’errore nel caso in cui la creazione del database non fosse andata a buon fine con il metodo errorCode().
Adesso creo la tabella dopo essermi collegato al database utenti.
sto operando in maniera molto veloce la creazione di una tabella e si nota che non sto specificando che tipo di DBMS sto usando se non , ovviamente in fase si login, ma a differenza dell’altro approccio non uso più metodi o classi caratteristici del mysql.
La connessione a un database MySQL si realizza creando un’istanza della classe PDO: il costruttore si aspetta 3 parametri, uno obbligatorio e due facoltativi. Il parametro obbligatorio è il DSN (Data Source Name), i parametri facoltativi, almeno formalmente, sono username e password di accesso al nostro database server.
Possiamo inserire la creazione della connessione al database in un costrutto try-catch in modo da gestire eventuali errori (PDOException) di connessione, bloccare l’esecuzione del codice se la connessione stessa non va a buon fine e visualizzare la tipologia di eccezione individuata .
Si deve chiudere la connessione con il comando:
Posso creare una connessione persistente in maniera tale da migliorare le prestazioni.
PDO, acronimo di PHP Data Object, è un’estensione di PHP introdotta a partire dalla versione 5.1 del linguaggio con lo scopo di unificare le API di accesso ai database.
Come ben sintetizza il suo acronimo, PDO si presenta come una soluzione per sua natura orientata agli oggetti, l’estensione fornisce infatti un’interfaccia comune per la comunicazione con i diversi database.
Uno dei principali punti di forza di PDO risiede nel fatto che esso mette a disposizione delle sviluppatore i prepared statement, costrutti che se utilizzati sistematicamente sono in grado di mettere al riparo gli script delle minacce basate sull’SQL injection, una tecnica di attacco incentrata sull’iniezione di SQL malevolo tramite input al fine di violare le applicazioni per la gestione dati.
In conclusione è possibile sottolineare che i vantaggi derivanti dall’uso di PDO fanno riferimento alle seguenti caratteristiche:
Portabilità: grazie al supporto di più engine per la gestione di dati.
Programmazione orientata agli oggetti: grazie ad un’interfaccia nativamente object-oriented.
Sicurezza: grazie ai prepared statement che proteggono dai tentativi di code injections
Attualmente quando accediamo ad un database tramite PHP abbiamo due opzioni corrispondenti ad altrettante estensioni: PDO oppure MySQLi. Le differenze principali fra le due librerie riguardano i database supportati, la gestione dei parametri e le performance.
La principale differenza tra PDO e MySQLi sta nel numero dei database supportati: mentre MySQLi supporta, come indica il nome stesso, soltanto MySQL, PDO può supportare 12 diversi database.
Il nostro sito utilizza i cookies per offrirti un servizio migliore.
Se vuoi saperne di più o avere istruzioni dettagliate su come disabilitare l'uso dei cookies puoi leggere l' informativa estesa.
Cliccando in un punto qualsiasi dello schermo, effettuando un’azione di scroll o cliccando su Accetto, presti il consenso all’uso di tutti i cookies.OkNoPrivacy policy