Il file dashboard.php รจ il cuore del sistema di gestione, responsabile di:
Ecco il codice completo del file dashboard.php:
connect_error) {
    die("Connessione fallita: " . $conn->connect_error);
}
// 3. Gestione delle Azioni
$action = $_GET['action'] ?? 'dashboard';
switch ($action) {
    case 'add_device':
        handleAddDevice($conn);
        break;
    case 'edit_device':
        handleEditDevice($conn);
        break;
    case 'delete_device':
        handleDeleteDevice($conn);
        break;
    case 'resolve_alarm':
        handleResolveAlarm($conn);
        break;
    default:
        // Mostra la dashboard
}
// 4. Funzioni di Gestione
function handleAddDevice($conn) {
    // Validazione e sanitizzazione
    $ip = filter_input(INPUT_POST, 'ip', FILTER_VALIDATE_IP);
    $type = htmlspecialchars($_POST['type']);
    $mac = preg_replace('/[^0-9A-Fa-f]/', '', $_POST['mac']);
    
    // Inserimento nel database
    $stmt = $conn->prepare("INSERT INTO dispositivi (Indirizzo_IP, Tipo_Dispositivo, Indirizzo_MAC) VALUES (?, ?, ?)");
    $stmt->bind_param("sss", $ip, $type, $mac);
    
    if ($stmt->execute()) {
        $_SESSION['message'] = "Dispositivo aggiunto con successo!";
    } else {
        $_SESSION['error'] = "Errore durante l'aggiunta del dispositivo";
    }
    
    header("Location: dashboard.php");
}
// Altre funzioni di gestione...
// 5. Recupero Dati per la Visualizzazione
$devices = $conn->query("SELECT * FROM dispositivi ORDER BY Stato DESC");
$alarms = $conn->query("SELECT a.*, d.Indirizzo_IP FROM allarmi a JOIN dispositivi d ON a.ID_D = d.ID_D WHERE a.Risolto = 0");
// Statistiche per i grafici
$stats = $conn->query("SELECT Stato, COUNT(*) as count FROM dispositivi GROUP BY Stato");
$alarm_stats = $conn->query("SELECT Tipo, COUNT(*) as count FROM allarmi WHERE Risolto = 0 GROUP BY Tipo");
// 6. Visualizzazione HTML
?>
    
    Dashboard - Gestionerete 
    
    
                    La parte iniziale del codice gestisce l'autenticazione e la sicurezza:
// 1. Avvio sessione e controllo autenticazione
session_start();
require_once 'config.php'; // Configurazioni sensibili
if (!isset($_SESSION['user'])) {
    header("Location: login.php");
    exit();
}
// 2. Connessione sicura al database
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if ($conn->connect_error) {
    die("Connessione fallita: " . $conn->connect_error);
}
                        
                        Il sistema implementa tutte le operazioni fondamentali sui dispositivi:
function handleAddDevice($conn) {
    // Validazione input
    $ip = filter_input(INPUT_POST, 'ip', FILTER_VALIDATE_IP);
    if (!$ip) {
        $_SESSION['error'] = "Indirizzo IP non valido";
        return;
    }
    
    $type = htmlspecialchars($_POST['type']);
    $mac = preg_replace('/[^0-9A-Fa-f]/', '', $_POST['mac']);
    
    // Prepared statement per prevenire SQL injection
    $stmt = $conn->prepare("INSERT INTO dispositivi (...) VALUES (?, ?, ?)");
    $stmt->bind_param("sss", $ip, $type, $mac);
    
    if ($stmt->execute()) {
        $_SESSION['message'] = "Dispositivo aggiunto!";
    } else {
        $_SESSION['error'] = "Errore database";
    }
}
                                Questa funzione dimostra best practices importanti:
filter_input()htmlspecialchars()