Panoramica di dashboard.php

Il file dashboard.php รจ il cuore del sistema di gestione, responsabile di:

  • Autenticazione degli utenti e controllo degli accessi
  • Gestione delle operazioni CRUD sui dispositivi
  • Visualizzazione e risoluzione degli allarmi
  • Generazione di grafici e statistiche
  • Interfaccia utente amministrativa
Questo file combina logica backend (PHP) e frontend (HTML/JS) seguendo il pattern MVC semplificato.

Codice Completo

Ecco il codice completo del file dashboard.php:

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
    


    


Sistema di Autenticazione

La parte iniziale del codice gestisce l'autenticazione e la sicurezza:

Codice Chiave
// 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);
}
Spiegazione
  • session_start(): Abilita la gestione delle sessioni PHP
  • Controllo $_SESSION['user']: Verifica che l'utente sia loggato
  • config.php: Le credenziali del database sono esterne per sicurezza
  • Connessione MySQLi: Utilizza l'estensione migliorata di MySQL

Gestione CRUD Dispositivi

Il sistema implementa tutte le operazioni fondamentali sui dispositivi:

Aggiunta Dispositivo
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:

  1. Validazione dell'IP con filter_input()
  2. Sanitizzazione del tipo con htmlspecialchars()
  3. Pulizia del MAC address con regex
  4. Uso di prepared statements per sicurezza
  5. Gestione degli errori con messaggi di sessione

Collegamento link per la dashboard

Puoi accedere alla dashboard funzionante tramite il seguente link: http://localhost/gestione_rete/dashboard.php