Oggi vi racconto come creare, uno dei tanti sistemi che già avete visto, un semplice log per monitorare le attività sul proprio sito o applicazione web un semplice esempio di log delle attività su un sito con php mysql.
La struttura del sistema:
- Tabelle DB → Contiene gli utenti registrati e tabella dei log
- Funzione logActivity() → Registra le azioni nel database.
- Esempi di uso → Registrazione, login, update, delete, ecc.
Il progetto completo potete trovarlo sul mio GIT: https://github.com/oldpan73/log_attivita scaricabile completamente con file e script per generare il database di prova.
Prima di tutto per questo esempio ho creato un database di test con due tabelle: users e activity _log:
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) UNIQUE NOT NULL, password VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
CREATE TABLE activity_log ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, action VARCHAR(50) NOT NULL, description TEXT, timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE );
Ora creiamo una pagina funzioni.php dove andiamo a inserire la funzione che ci permette di andare a registrare i nostri log:
function logActivity($user_id, $action, $description = null) {
global $pdo;
$stmt = $pdo->prepare(“INSERT INTO activity_log (user_id, action, description) VALUES (?, ?, ?)”);
$stmt->execute([$user_id, $action, $description]);
}
Come potete vedere la funzione è molto semplice, tramite PDO va a inserire sulla tabella activity_log i dati essenziali. E’ necessario creare un file di connessione al database da includere dentro le nostre chiamate in modo da poter avere sempre la connessione a portata di mano.
Esempi di log
Esempio di log per l’autenticazione di un utente:
if ($_SERVER[“REQUEST_METHOD”] == “POST”) {
$username = $_POST[‘username’];
$password = $_POST[‘password’];
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
$stmt->execute([$username]);
$user = $stmt->fetch();
if ($user && password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
logActivity($user['id'], "LOGIN", "Utente $username ha effettuato l'accesso");
header("Location: dashboard.php");
exit;
} else {
echo "Credenziali errate!";
}
}
Queste poche righe di codice simulano una pagina di login php che riceve via POST i dati di autenticazione e come potete vedere, registra l’attività.
Se nel vostro file di autenticazione includete il file dove c’è la funzione per il logactivity potete tracciare come da esempio se l’utente si è autenticato e volendo se non si è autenticato. Questa procedura possiamo farla durante l’inserimento di un record, il suo aggiornamento o cancellazione richiamando sempre la funzione logActivity.
Non mi dilungo nello spiegarvi questo semplice esempio di log delle attività su un sito con php mysql trovate tutto il codice sorgente nel mio archivio git: https://github.com/oldpan73/log_attivita
Se può essere utile consiglio anche questo articolo:
https://www.salisnet.eu/2020/02/php-e-pdo-gestione-degli-apici-bindparam/