# 📘 Guida Completa - PHP System Information Dashboard v1.5

**Guida dettagliata passo-passo per principianti**

---

## 📑 Indice

1. [Cos'è questo progetto?](#cosè-questo-progetto)
2. [Caratteristiche Principali](#caratteristiche-principali)
3. [Punti di Forza](#punti-di-forza)
4. [Requisiti di Sistema](#requisiti-di-sistema)
5. [Installazione Passo-Passo](#installazione-passo-passo)
6. [Configurazione Iniziale](#configurazione-iniziale)
7. [Come Utilizzare l'Applicazione](#come-utilizzare-lapplicazione)
8. [Spiegazione Dettagliata delle Funzionalità](#spiegazione-dettagliata-delle-funzionalità)
9. [Personalizzazione](#personalizzazione)
10. [Risoluzione Problemi](#risoluzione-problemi)
11. [Sicurezza](#sicurezza)

---

## 🎯 Cos'è questo progetto?

**PHP System Information Dashboard** è un'applicazione web che ti permette di visualizzare in modo organizzato e professionale tutte le informazioni relative al tuo server PHP.

Pensa a questo progetto come a una "finestra" sul tuo server che ti mostra:
- Quale versione di PHP stai usando
- Quali estensioni sono installate
- Come è configurato il server
- Quali sono le impostazioni di sicurezza
- E molto altro ancora!

È perfetto per:
- 👨‍💻 **Sviluppatori** che vogliono verificare la configurazione del server
- 🔧 **Amministratori di sistema** che devono monitorare l'ambiente
- 🎓 **Studenti** che vogliono imparare come funziona PHP
- 🏢 **Aziende** che hanno bisogno di un tool di diagnostica

---

## ✨ Caratteristiche Principali

### 1. 🔐 Sistema di Autenticazione Sicuro
- Login protetto con email e password
- Gestione sessioni PHP
- Protezione delle pagine riservate
- Logout sicuro

### 2. 📊 Dashboard Interattiva
- Interfaccia moderna e intuitiva
- Organizzazione delle informazioni in tab (schede)
- Design responsive (funziona su computer, tablet e smartphone)
- Aggiornamento automatico delle informazioni

### 3. 🔍 Funzionalità di Ricerca
- Cerca rapidamente tra tutte le informazioni
- Filtra i risultati in tempo reale
- Trova configurazioni specifiche in pochi secondi

### 4. 📋 Informazioni Complete
Visualizza:
- **Versione PHP** e dettagli tecnici
- **Estensioni caricate** con versioni e funzioni disponibili
- **Configurazione PHP** completa (tutte le direttive)
- **Informazioni Server** (Apache, Nginx, ecc.)
- **Variabili d'ambiente** del sistema
- **phpinfo() completo** quando necessario

### 5. 🎨 Interfaccia Utente Moderna
- Design pulito e professionale
- Icone Font Awesome
- Card collassabili per organizzare meglio le informazioni
- Tabelle interattive con hover effects
- Colori e badge per identificare rapidamente gli stati

### 6. ⚡ Funzionalità Avanzate
- Auto-refresh configurabile
- Card espandibili/collassabili
- Visualizzazione phpinfo() on-demand
- Timestamp di ultimo aggiornamento

---

## 💪 Punti di Forza

### 🚀 Facile da Installare
- **Nessun database richiesto**: Funziona subito senza configurazioni complesse
- **File singoli**: Basta copiare i file nella directory del server
- **Zero dipendenze esterne**: Solo PHP standard e Font Awesome (CDN)

### 🎯 Perfetto per Principianti
- **Codice ben commentato**: Facile da capire e modificare
- **Struttura semplice**: File organizzati logicamente
- **Nessuna conoscenza avanzata richiesta**: Funziona out-of-the-box

### 🔒 Sicuro
- **Autenticazione basata su sessioni**: Protegge l'accesso
- **Sanitizzazione degli input**: Previene attacchi XSS
- **Protezione delle pagine**: Solo utenti autenticati possono accedere

### 📱 Responsive
- **Funziona su tutti i dispositivi**: Desktop, tablet, smartphone
- **Layout adattivo**: Si adatta automaticamente alla dimensione dello schermo
- **Interfaccia touch-friendly**: Facile da usare anche su mobile

### 🎨 Personalizzabile
- **Stili CSS facilmente modificabili**: Cambia colori e layout facilmente
- **Configurazione centralizzata**: Tutte le opzioni in un unico punto
- **Estendibile**: Puoi aggiungere nuove funzionalità facilmente

### ⚡ Veloce
- **Nessun database**: Caricamento istantaneo
- **CSS e JavaScript ottimizzati**: Interfaccia fluida
- **Cache-friendly**: Può essere facilmente integrato con sistemi di cache

---

## 💻 Requisiti di Sistema

### Software Necessario

#### Opzione 1: Server Web Completo (Consigliato per Principianti)

**Windows:**
- **XAMPP** (consigliato) - [Scarica da: https://www.apachefriends.org/](https://www.apachefriends.org/)
  - Include: Apache, PHP, MySQL, phpMyAdmin
  - Versione minima: 7.4 o superiore
  
- **WAMP** - [Scarica da: https://www.wampserver.com/](https://www.wampserver.com/)
  - Include: Apache, PHP, MySQL

**macOS:**
- **MAMP** - [Scarica da: https://www.mamp.info/](https://www.mamp.info/)
  - Include: Apache, PHP, MySQL

**Linux:**
- Apache o Nginx
- PHP 7.4 o superiore
- Estensione `session` di PHP abilitata

#### Opzione 2: PHP Built-in Server (Solo per Test)

- PHP 7.4 o superiore installato
- Accesso al terminale/command prompt

### Requisiti PHP

- **Versione PHP**: 7.4 o superiore (8.0, 8.1, 8.2, 8.3 consigliati)
- **Estensione session**: Deve essere abilitata (di solito lo è di default)
- **Funzioni PHP richieste**:
  - `session_start()`
  - `phpversion()`
  - `php_sapi_name()`
  - `php_uname()`
  - `get_loaded_extensions()`
  - `ini_get_all()`
  - `getenv()`

### Browser Web

Qualsiasi browser moderno:
- Google Chrome (consigliato)
- Mozilla Firefox
- Microsoft Edge
- Safari
- Opera

---

## 📥 Installazione Passo-Passo

### 🪟 Windows con XAMPP

#### Passo 1: Scarica e Installa XAMPP

1. Vai su [https://www.apachefriends.org/](https://www.apachefriends.org/)
2. Clicca su "Download" per Windows
3. Scarica la versione più recente (con PHP 7.4 o superiore)
4. Esegui il file `.exe` scaricato
5. Durante l'installazione:
   - Scegli la cartella di installazione (es: `C:\xampp`)
   - Seleziona i componenti: Apache e PHP (MySQL è opzionale)
6. Completa l'installazione

#### Passo 2: Avvia XAMPP

1. Apri "XAMPP Control Panel" dal menu Start
2. Clicca su "Start" accanto ad "Apache"
   - Vedrai il pulsante diventare verde quando Apache è avviato
3. (Opzionale) Se vuoi usare MySQL, clicca "Start" anche per MySQL

#### Passo 3: Prepara la Cartella del Progetto

1. Apri Esplora File (Windows + E)
2. Vai alla cartella: `C:\xampp\htdocs\`
3. Crea una nuova cartella chiamata `info-php`
   - Percorso completo: `C:\xampp\htdocs\info-php\`

#### Passo 4: Copia i File del Progetto

1. Copia TUTTI i file del progetto nella cartella `C:\xampp\htdocs\info-php\`
2. I file da copiare sono:
   - `index.php`
   - `protected.php`
   - `protected2.php`
   - `logout.php`
   - `style.css`
   - `protected.css` (opzionale)
   - `LICENSE`
   - `README.md`

#### Passo 5: Verifica l'Installazione

1. Apri il browser (Chrome, Firefox, ecc.)
2. Vai all'indirizzo: `http://localhost/info-php/`
3. Dovresti vedere la pagina di login
4. Se vedi la pagina di login, l'installazione è riuscita! ✅

---

### 🍎 macOS con MAMP

#### Passo 1: Scarica e Installa MAMP

1. Vai su [https://www.mamp.info/](https://www.mamp.info/)
2. Clicca su "Download" per macOS
3. Scarica MAMP (versione gratuita)
4. Apri il file `.dmg` scaricato
5. Trascina MAMP nella cartella Applicazioni
6. Apri MAMP dalla cartella Applicazioni

#### Passo 2: Avvia MAMP

1. Clicca su "Start Servers" nel pannello MAMP
2. Attendi che Apache e MySQL si avviino (i pulsanti diventeranno verdi)

#### Passo 3: Prepara la Cartella del Progetto

1. Apri Finder
2. Vai alla cartella: `/Applications/MAMP/htdocs/`
3. Crea una nuova cartella chiamata `info-php`
   - Percorso completo: `/Applications/MAMP/htdocs/info-php/`

#### Passo 4: Copia i File del Progetto

1. Copia TUTTI i file del progetto nella cartella creata
2. Verifica che tutti i file siano presenti

#### Passo 5: Verifica l'Installazione

1. Apri Safari o Chrome
2. Vai all'indirizzo: `http://localhost:8888/info-php/`
   - Nota: MAMP usa la porta 8888 di default
3. Dovresti vedere la pagina di login ✅

---

### 🐧 Linux (Ubuntu/Debian)

#### Passo 1: Installa Apache e PHP

Apri il terminale e esegui:

```bash
sudo apt update
sudo apt install apache2 php libapache2-mod-php
```

#### Passo 2: Avvia Apache

```bash
sudo systemctl start apache2
sudo systemctl enable apache2
```

#### Passo 3: Prepara la Cartella del Progetto

```bash
sudo mkdir -p /var/www/html/info-php
sudo chown -R $USER:$USER /var/www/html/info-php
```

#### Passo 4: Copia i File del Progetto

1. Copia tutti i file nella cartella `/var/www/html/info-php/`
2. Imposta i permessi:

```bash
chmod -R 755 /var/www/html/info-php
```

#### Passo 5: Verifica l'Installazione

1. Apri il browser
2. Vai all'indirizzo: `http://localhost/info-php/`
3. Dovresti vedere la pagina di login ✅

---

### 🖥️ PHP Built-in Server (Solo per Test)

Questa opzione è utile se vuoi testare rapidamente senza installare un server web completo.

#### Passo 1: Verifica che PHP sia Installato

Apri il terminale/command prompt e digita:

```bash
php -v
```

Dovresti vedere la versione di PHP. Se non funziona, devi installare PHP.

#### Passo 2: Naviga nella Cartella del Progetto

```bash
cd /percorso/del/tuo/progetto/info-php
```

#### Passo 3: Avvia il Server

```bash
php -S localhost:8000
```

Vedrai un messaggio tipo: "Development Server (http://localhost:8000) started"

#### Passo 4: Apri nel Browser

1. Apri il browser
2. Vai all'indirizzo: `http://localhost:8000`
3. Dovresti vedere la pagina di login ✅

**Nota**: Questo server si ferma quando chiudi il terminale. È solo per test rapidi!

---

## ⚙️ Configurazione Iniziale

### 🔑 Configurazione Utenti (IMPORTANTE!)

Il sistema di login funziona con un array di utenti definito nel file `index.php`.

#### Passo 1: Apri il File index.php

1. Apri il file `index.php` con un editor di testo (Notepad++, Visual Studio Code, o anche Blocco Note)
2. Trova questa sezione (circa alla riga 4-7):

```php
$users = [
    'admin@domain.com' => '123456',
    'user@domain.com' => 'securepass'
];
```

#### Passo 2: Modifica le Credenziali

Sostituisci le credenziali di esempio con le tue:

```php
$users = [
    'tua-email@esempio.com' => 'tua_password_sicura',
    'altro-utente@esempio.com' => 'altra_password'
];
```

**Esempio pratico:**

```php
$users = [
    'mario.rossi@azienda.it' => 'MiaPassword123!',
    'lucia.verdi@azienda.it' => 'PasswordSicura456'
];
```

#### Passo 3: Salva il File

Salva il file dopo aver fatto le modifiche.

**⚠️ IMPORTANTE - Sicurezza:**
- Non condividere mai questo file con altri
- Usa password complesse (almeno 8 caratteri, con lettere, numeri e simboli)
- In produzione, considera di usare password hash (vedi sezione Sicurezza)

---

### 🎨 Configurazione Dashboard

Puoi personalizzare la dashboard modificando il file `protected.php`.

#### Apri il File protected.php

Trova questa sezione all'inizio del file (circa righe 4-8):

```php
// Configurazione
$page_title = "PHP System Information Dashboard";
$refresh_interval = 0; // Secondi per auto-refresh (0 per disabilitare)
$enable_search = true; // Abilita la funzionalità di ricerca
$show_phpinfo = isset($_GET['full']) ? (bool)$_GET['full'] : false;
```

#### Opzioni Disponibili:

**1. Titolo della Pagina:**
```php
$page_title = "Il Mio Dashboard PHP";
```

**2. Auto-Refresh:**
```php
$refresh_interval = 60; // Aggiorna automaticamente ogni 60 secondi
// Oppure
$refresh_interval = 0; // Disabilita l'auto-refresh
```

**3. Funzionalità di Ricerca:**
```php
$enable_search = true;  // Abilita la ricerca
// Oppure
$enable_search = false; // Disabilita la ricerca
```

**4. phpinfo() Completo:**
Questa opzione è già configurata. Per visualizzarlo, aggiungi `?full=1` all'URL:
```
http://localhost/info-php/protected.php?full=1
```

---

## 🚀 Come Utilizzare l'Applicazione

### 📝 Primo Accesso

#### Passo 1: Apri la Pagina di Login

1. Apri il browser
2. Vai all'indirizzo del tuo server:
   - XAMPP: `http://localhost/info-php/`
   - MAMP: `http://localhost:8888/info-php/`
   - Linux: `http://localhost/info-php/`
   - PHP Built-in: `http://localhost:8000/`

#### Passo 2: Effettua il Login

1. Nella pagina di login vedrai due campi:
   - **Email**: Inserisci l'email che hai configurato in `index.php`
   - **Password**: Inserisci la password corrispondente

2. Clicca sul pulsante "Submit"

3. Se le credenziali sono corrette, verrai reindirizzato alla dashboard

4. Se le credenziali sono sbagliate, vedrai un messaggio di errore in rosso

#### Passo 3: Esplora la Dashboard

Una volta dentro, vedrai:
- **Header**: Con il titolo e l'ora di ultimo aggiornamento
- **Barra di ricerca**: Per cercare informazioni specifiche
- **Tab (schede)**: Per navigare tra le diverse sezioni
- **Card**: Contenitori con le informazioni organizzate

---

### 🧭 Navigazione nella Dashboard

La dashboard è organizzata in **5 tab principali**:

#### 1. 📊 Panoramica (Overview)

Questa è la prima tab che vedi quando accedi. Contiene:

**Informazioni di Sistema:**
- Versione PHP installata
- Tipo di SAPI (Server API)
- Sistema Operativo
- Architettura (32-bit o 64-bit)
- Tempo di esecuzione massimo
- Limite di memoria

**Statistiche PHP:**
- Numero di estensioni caricate
- Numero di funzioni definite (interne e utente)
- Numero di classi definite
- Numero di interfacce definite

**File di Configurazione:**
- Percorso del file `php.ini` caricato
- Tabella con le direttive principali e i loro valori

**Come usare:**
- Clicca sull'header di una card (la parte blu) per espanderla/collassarla
- Leggi le informazioni nelle card colorate
- Scorri la tabella per vedere tutte le direttive

#### 2. ⚙️ Configurazione PHP

Mostra **TUTTE** le direttive di configurazione PHP in un formato leggibile.

**Contenuto:**
- Ogni direttiva con il suo valore locale
- Valore globale (se diverso)
- Tipo di accesso (se modificabile o meno)

**Come usare:**
- Scorri la lista per trovare la direttiva che ti interessa
- Usa la barra di ricerca per trovare direttive specifiche
- Esempio: cerca "memory_limit" per vedere il limite di memoria

#### 3. 🧩 Estensioni

Lista completa di tutte le estensioni PHP caricate sul server.

**Informazioni per ogni estensione:**
- Nome dell'estensione
- Versione installata
- Stato (sempre "Attiva" se presente)
- Numero di funzioni disponibili

**Come usare:**
- Scorri la tabella per vedere tutte le estensioni
- Cerca un'estensione specifica (es: "mysqli", "gd", "curl")
- Controlla se un'estensione è installata prima di usarla nel tuo codice

#### 4. 🖥️ Server

Informazioni dettagliate sul server web.

**Dettagli Server:**
- Software del server (Apache, Nginx, ecc.)
- Protocollo HTTP utilizzato
- Porta del server
- Nome del server
- Indirizzo IP del server
- Document Root (cartella principale del server)

**Informazioni Sistema:**
- Informazioni complete sul sistema operativo

**Tutte le Variabili Server:**
- Tabella completa con tutte le variabili `$_SERVER`
- Utile per debugging e sviluppo

**Come usare:**
- Controlla la configurazione del server
- Verifica il Document Root
- Esplora le variabili `$_SERVER` per il tuo sviluppo

#### 5. 🌐 Environment

Mostra tutte le variabili d'ambiente del sistema.

**Contenuto:**
- Variabili d'ambiente del sistema operativo
- Variabili di PHP
- Configurazioni del sistema

**Come usare:**
- Cerca variabili specifiche
- Verifica le configurazioni dell'ambiente
- Utile per debugging di problemi di configurazione

---

### 🔍 Funzionalità di Ricerca

La barra di ricerca ti permette di trovare rapidamente informazioni specifiche.

#### Come Usare la Ricerca:

1. **Clicca nella barra di ricerca** in alto nella dashboard
2. **Digita** la parola chiave che stai cercando
   - Esempio: "memory" per trovare tutto ciò che riguarda la memoria
   - Esempio: "mysql" per trovare informazioni su MySQL
   - Esempio: "upload" per trovare limiti di upload
3. **La ricerca funziona in tempo reale**: I risultati si aggiornano mentre digiti
4. **Le tab vengono filtrate**: Solo le tab con risultati vengono mostrate

**Suggerimenti:**
- La ricerca cerca in tutto il testo visibile
- Non distingue tra maiuscole e minuscole
- Cerca almeno 2 caratteri prima di mostrare risultati

---

### 📱 Funzionalità Interattive

#### Card Collassabili

Le card (contenitori) possono essere espansi o collassati:

1. **Clicca sull'header della card** (la parte blu con l'icona)
2. La card si chiude, nascondendo il contenuto
3. **Clicca di nuovo** per riaprirla

**Perché è utile:**
- Organizza meglio lo spazio
- Nascondi informazioni che non ti servono al momento
- Naviga più velocemente tra le sezioni

#### Tab Navigazione

1. **Clicca su una tab** (Panoramica, Configurazione PHP, ecc.)
2. Il contenuto cambia mostrando le informazioni di quella sezione
3. La tab attiva è evidenziata in blu

---

### 🚪 Logout

Per uscire dall'applicazione:

1. **Clicca su "Logout"** in alto a destra (accanto al tuo nome)
2. Verrai reindirizzato alla pagina di login
3. La sessione viene chiusa in modo sicuro

**Importante:**
- Dopo il logout, non potrai più accedere alla dashboard senza rifare il login
- Le sessioni vengono distrutte completamente per sicurezza

---

## 📚 Spiegazione Dettagliata delle Funzionalità

### 🔐 Sistema di Autenticazione

#### Come Funziona:

1. **Login (index.php):**
   - L'utente inserisce email e password
   - Il sistema controlla se l'email esiste nell'array `$users`
   - Se esiste, controlla se la password corrisponde
   - Se tutto è corretto, crea una sessione PHP
   - Salva `loggedin = true` e l'email nella sessione
   - Reindirizza alla dashboard

2. **Protezione (protected.php):**
   - All'inizio di ogni pagina protetta, controlla se la sessione esiste
   - Verifica che `loggedin` sia `true`
   - Se non è autenticato, reindirizza al login
   - Se è autenticato, mostra il contenuto

3. **Logout (logout.php):**
   - Distrugge tutte le variabili di sessione
   - Chiude la sessione
   - Reindirizza al login

#### Perché è Sicuro:

- Le password non vengono mai mostrate
- Le sessioni sono gestite dal server
- Ogni pagina protetta verifica l'autenticazione
- Il logout distrugge completamente la sessione

---

### 📊 Dashboard - Dettagli Tecnici

#### Struttura della Dashboard:

```
┌─────────────────────────────────────┐
│  Header (Titolo + Data/Ora)         │
├─────────────────────────────────────┤
│  Benvenuto + Logout                 │
├─────────────────────────────────────┤
│  Barra di Ricerca                   │
├─────────────────────────────────────┤
│  Tab: [Panoramica] [Config] [Ext]  │
├─────────────────────────────────────┤
│                                     │
│  Contenuto della Tab Selezionata   │
│  - Card con informazioni            │
│  - Tabelle                          │
│  - Grid di informazioni            │
│                                     │
├─────────────────────────────────────┤
│  Footer                             │
└─────────────────────────────────────┘
```

#### Tecnologie Utilizzate:

- **PHP**: Per la logica server-side e raccolta dati
- **HTML5**: Struttura della pagina
- **CSS3**: Stili e design responsive
- **JavaScript**: Interattività (tab, ricerca, card)
- **Font Awesome**: Icone (caricate da CDN)

---

### 🔍 Sistema di Ricerca

#### Come Funziona:

1. L'utente digita nella barra di ricerca
2. JavaScript cattura l'input in tempo reale
3. Cerca il testo in tutte le tab
4. Nasconde le tab che non contengono il testo
5. Mostra solo le tab con risultati

#### Caratteristiche:

- **Ricerca in tempo reale**: Non serve premere invio
- **Case-insensitive**: Non distingue maiuscole/minuscole
- **Ricerca globale**: Cerca in tutto il contenuto
- **Filtraggio intelligente**: Mostra solo risultati rilevanti

---

### 📋 Informazioni Mostrate

#### Cosa Raccoglie il Sistema:

**Da PHP:**
- `phpversion()`: Versione PHP
- `php_sapi_name()`: Tipo di interfaccia (Apache, CLI, ecc.)
- `php_uname()`: Informazioni sistema operativo
- `get_loaded_extensions()`: Estensioni caricate
- `ini_get_all()`: Tutte le direttive di configurazione
- `getenv()`: Variabili d'ambiente

**Dal Server:**
- `$_SERVER`: Tutte le variabili del server web
- Informazioni su Apache/Nginx
- Percorsi e configurazioni

**Da phpinfo():**
- Output completo della funzione `phpinfo()`
- Accessibile tramite `?full=1` nell'URL

---

## 🎨 Personalizzazione

### Modificare i Colori

I colori sono definiti come variabili CSS all'inizio del file `protected.php`.

Trova questa sezione (circa riga 42-51):

```css
:root {
    --primary-color: #3498db;      /* Blu principale */
    --secondary-color: #2c3e50;    /* Grigio scuro */
    --success-color: #2ecc71;      /* Verde */
    --danger-color: #e74c3c;       /* Rosso */
    --warning-color: #f39c12;      /* Arancione */
    --light-color: #ecf0f1;        /* Grigio chiaro */
    --dark-color: #34495e;         /* Grigio medio */
}
```

**Esempio - Cambiare il colore principale in verde:**

```css
--primary-color: #2ecc71;  /* Verde invece di blu */
```

**Dove vengono usati:**
- `--primary-color`: Header delle card, link, tab attive
- `--secondary-color`: Header principale, footer
- `--success-color`: Badge "Attiva", messaggi di successo
- `--danger-color`: Messaggi di errore
- `--warning-color`: Avvisi

---

### Modificare il Titolo

Nel file `protected.php`, cerca:

```php
$page_title = "PHP System Information Dashboard";
```

Cambia con:

```php
$page_title = "Il Mio Dashboard Personalizzato";
```

---

### Modificare lo Stile della Pagina di Login

Il file `style.css` contiene tutti gli stili per la pagina di login.

**Esempio - Cambiare il colore di sfondo:**

Trova:
```css
body {
    background-color: #f0f0f0;
}
```

Cambia con:
```css
body {
    background-color: #e0e0e0;  /* Grigio più chiaro */
}
```

**Esempio - Cambiare il colore del pannello destro:**

Trova:
```css
.right-panel {
    background-color: #36393f;
}
```

Cambia con:
```css
.right-panel {
    background-color: #2c3e50;  /* Colore più scuro */
}
```

---

### Aggiungere Nuove Tab

Per aggiungere una nuova tab nella dashboard:

1. **Aggiungi il pulsante della tab** nella sezione tabs (circa riga 445):

```php
<div class="tab" data-tab="mia-nuova-tab">Mia Nuova Tab</div>
```

2. **Aggiungi il contenuto della tab** dopo le altre tab (circa riga 692):

```php
<div class="tab-content" id="mia-nuova-tab">
    <div class="card">
        <div class="card-header">
            <span><i class="fas fa-star"></i> Il Mio Contenuto</span>
        </div>
        <div class="card-body">
            <p>Qui va il contenuto della tua nuova tab</p>
        </div>
    </div>
</div>
```

3. **Salva il file** e ricarica la pagina

---

## 🔧 Risoluzione Problemi

### ❌ Problema: "Pagina bianca" o "Errore 500"

**Possibili cause:**
1. Errore di sintassi PHP
2. Permessi file non corretti
3. Estensioni PHP mancanti

**Soluzioni:**

1. **Abilita la visualizzazione degli errori:**
   - Apri `php.ini`
   - Cerca `display_errors` e imposta su `On`
   - Riavvia Apache

2. **Controlla i log degli errori:**
   - XAMPP: `C:\xampp\apache\logs\error.log`
   - MAMP: `/Applications/MAMP/logs/php_error.log`
   - Linux: `/var/log/apache2/error.log`

3. **Verifica i permessi (Linux):**
   ```bash
   chmod -R 755 /var/www/html/info-php
   ```

---

### ❌ Problema: "Sessione non funziona" o "Login non persiste"

**Possibili cause:**
1. Estensione session non abilitata
2. Directory sessioni non scrivibile
3. Cookie bloccati nel browser

**Soluzioni:**

1. **Verifica che session sia abilitata:**
   - Crea un file `test.php` con: `<?php phpinfo(); ?>`
   - Cerca "session" nella pagina
   - Verifica che sia abilitata

2. **Controlla i permessi della directory sessioni:**
   - Trova `session.save_path` in phpinfo()
   - Assicurati che la directory sia scrivibile

3. **Controlla i cookie del browser:**
   - Abilita i cookie nel browser
   - Prova in modalità incognito

---

### ❌ Problema: "Stili CSS non caricati"

**Possibili cause:**
1. Percorso file CSS errato
2. Permessi file non corretti
3. Server web non serve file CSS

**Soluzioni:**

1. **Verifica il percorso:**
   - Apri il browser
   - Vai su: `http://localhost/info-php/style.css`
   - Dovresti vedere il codice CSS
   - Se vedi errore 404, il percorso è sbagliato

2. **Controlla i permessi:**
   ```bash
   chmod 644 style.css
   ```

3. **Verifica la configurazione Apache:**
   - Assicurati che Apache serva file statici

---

### ❌ Problema: "Non riesco a fare login"

**Possibili cause:**
1. Credenziali errate
2. Array utenti non configurato correttamente
3. Errore di sintassi in index.php

**Soluzioni:**

1. **Verifica le credenziali in index.php:**
   - Controlla che l'email sia esattamente come nell'array
   - Controlla che la password corrisponda
   - Attenzione a spazi o caratteri speciali

2. **Prova con credenziali di esempio:**
   ```php
   $users = [
       'test@test.com' => 'test123'
   ];
   ```

3. **Controlla errori PHP:**
   - Abilita `display_errors` in php.ini
   - Rivedi la pagina di login per vedere errori

---

### ❌ Problema: "Font Awesome non funziona" (icone mancanti)

**Possibili cause:**
1. Nessuna connessione internet
2. CDN bloccato
3. Firewall che blocca le richieste

**Soluzioni:**

1. **Verifica la connessione internet**
2. **Prova a scaricare Font Awesome localmente:**
   - Scarica da: https://fontawesome.com/
   - Estrai nella cartella del progetto
   - Modifica il link in `protected.php`:
   ```html
   <link rel="stylesheet" href="fontawesome/css/all.min.css">
   ```

---

## 🔒 Sicurezza

### ⚠️ Raccomandazioni per l'Uso in Produzione

**IMPORTANTE**: Questo progetto è pensato per uso interno o sviluppo. Per uso in produzione, implementa queste misure:

#### 1. Password Hash

**Problema attuale:** Le password sono salvate in chiaro nell'array.

**Soluzione - Usa password_hash():**

Modifica `index.php`:

```php
// Array con password hash (genera con password_hash())
$users = [
    'admin@domain.com' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password: "password"
    'user@domain.com' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi'
];

// Durante il login
if (isset($users[$email]) && password_verify($password, $users[$email])) {
    $_SESSION['loggedin'] = true;
    $_SESSION['email'] = $email;
    header('Location: protected.php');
    exit;
}
```

**Come generare hash:**
```php
echo password_hash('tua_password', PASSWORD_DEFAULT);
```

#### 2. Database invece di Array

**Problema attuale:** Gli utenti sono in un array PHP.

**Soluzione:** Usa MySQL/PostgreSQL per salvare gli utenti.

#### 3. HTTPS

**Sempre usa HTTPS in produzione:**
- Le password viaggiano in chiaro su HTTP
- Le sessioni possono essere intercettate
- Configura un certificato SSL

#### 4. Protezione CSRF

Aggiungi token CSRF ai form per prevenire attacchi.

#### 5. Rate Limiting

Limita i tentativi di login per prevenire brute force.

#### 6. Protezione File

Crea un file `.htaccess`:

```apache
# Proteggi file sensibili
<FilesMatch "^(index\.php|protected\.php)$">
    # Configurazioni specifiche
</FilesMatch>

# Forza HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
```

---

### 🛡️ Best Practices

1. **Non condividere mai** il file `index.php` con le password
2. **Usa password complesse** (minimo 12 caratteri)
3. **Limita l'accesso** solo a IP autorizzati se possibile
4. **Monitora i log** per tentativi di accesso sospetti
5. **Aggiorna regolarmente** PHP e il server web
6. **Fai backup** regolari dei file di configurazione

---

## 📞 Supporto e Risorse

### 📚 Documentazione PHP

- **PHP Manual**: https://www.php.net/manual/
- **phpinfo()**: https://www.php.net/manual/en/function.phpinfo.php

### 🎓 Risorse per Principianti

- **W3Schools PHP**: https://www.w3schools.com/php/
- **PHP The Right Way**: https://phptherightway.com/

### 🐛 Debugging

- **Xdebug**: Estensione PHP per debugging
- **Browser DevTools**: F12 per vedere errori JavaScript

---

## 📝 Note Finali

### ✅ Cosa Hai Imparato

Dopo aver seguito questa guida, dovresti essere in grado di:

- ✅ Installare e configurare l'applicazione
- ✅ Modificare le credenziali di accesso
- ✅ Navigare nella dashboard
- ✅ Cercare informazioni specifiche
- ✅ Personalizzare colori e stili
- ✅ Risolvere problemi comuni
- ✅ Comprendere le basi della sicurezza

### 🚀 Prossimi Passi

1. **Esplora il codice**: Leggi i file PHP per capire come funziona
2. **Personalizza**: Modifica colori, testi, layout
3. **Aggiungi funzionalità**: Crea nuove tab o sezioni
4. **Migliora la sicurezza**: Implementa password hash e database
5. **Condividi**: Se migliori il progetto, condividilo con altri!

---

## 📄 Licenza

Questo progetto è distribuito sotto **licenza MIT**.

Vedi il file `LICENSE` per i dettagli completi.

**In sintesi:**
- ✅ Puoi usare, modificare, distribuire liberamente
- ✅ Puoi usarlo per progetti commerciali
- ⚠️ Devi includere la nota di copyright originale

---

## 👨‍💻 Autore

**phpinfo v1.5** - Copyright (c) 2025 by [net-plus.it](https://www.net-plus.it/)

Sviluppato per semplificare la visualizzazione e il monitoraggio delle informazioni di sistema PHP.

---

**Buon lavoro! 🎉**

Se hai domande o problemi, consulta la sezione "Risoluzione Problemi" o la documentazione PHP ufficiale.

