Per moderare i commenti postati dagli utenti verranno creati due file, uno destinato alla visualizzazione dei commenti non ancora moderati (lista_commenti.php), un altro con il compito di approvare tramite una query di UPDATE sul campo approvato il commento selezionato (moderazione.php). Entrambi i file saranno inseriti all'interno dell'area di amministrazione e il loro accesso sarà riservato soltanto agli utenti autenticati.
Il file che produce la lista dei commenti si basa su una semplice query SELECT
che permetterà di estrarre tutti i record dalla tabella commenti in cui approvato = '0' (SELECT id_commento, testo_commento, autore_commento, data_commento FROM commenti WHERE approvato = '0'
) e ordinandoli in senso cronologico decrescente (ORDER BY data_commento DESC
), cioè a partire dall'ultimo commento postato:
Ad ogni commento elencato corrisponderà un link chiamato approva moderazione.php
<?php // inizializzazione della sessione session_start(); // controllo sul valore di sessione if (!isset($_SESSION['login'])) { // reindirizzamento alla homepage in caso di login mancato header("Location: index.php"); } // controllo sull'id del commento inviato per querystring if (isset($_GET['id_commento']) && is_numeric($_GET['id_commento'])) { $id_commento = $_GET['id_commento']; ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> <h1>Attenzione!</h1> Si sta per approvare il commento selezionato.<br /> Premere il pulsante per eseguire l'operazione richiesta.<br /> <br> <input name="commento_id" type="hidden" value="<?php echo $id_commento; ?>"> <input name="submit" type="submit" value="Modera"> </form> <?php } // controllo sull'id del commento inviato per form elseif(isset($_POST['commento_id']) && is_numeric($_POST['commento_id'])) { $commento_id = $_POST['commento_id']; // inclusione del file di classe include "funzioni_mysql.php"; // istanza della classe $data = new MysqlClass(); // chiamata alla funzione di connessione $data->connetti(); $data->query("UPDATE commenti SET approvato='1' WHERE id_commento = $commento_id"); // reindirizzamento alla pagina di gestione dei commenti header("Location: lista_commenti.php"); // chiusura della connessione a MySQL $data->disconnetti(); } ?>
L'identificativo univoco inviato alla pagina per la moderazione è indispensabile per identificare il record da aggiornare all'interno della query per la modifica; come anticipato, questa si basa sul comando SQL UPDATE
SET
UPDATE commenti SET approvato = '1'
WHERE
WHERE id_commento = $commento_id
Il codice presente nel file per la moderazione potrà essere modificato facilmente anche per effettuare l'eliminazione di un commento, infatti l'unica operazione da fare sarà quella di sostituire la query basata sul comando UPDATE con un'altra basata sul comando DELETE
$data->query("DELETE FROM commenti WHERE id_commento = $commento_id");
In una query per la cancellazione di un record è sufficiente passare in istruzione l'identificativo di una riga introdotto dalla clausola WHERE, in questo modo il DBMS potrà identificare con precisione il record da cancellare senza coinvolgere altri dati in questo processo potenzialmente pericoloso.