# Guida Completa - File Manager Fylo

Questa guida raccoglie in un unico documento:
- Istruzioni di **installazione sul server**
- Configurazione di **`.env`** e **`config.php`**
- Guida all’uso per **utenti** e **amministratori**

Se hai già letto il `README.md`, qui trovi una versione più sintetica e pratica.

---

## 1. Installazione sul Server

### 1.1 Copia dei file

1. Scarica il progetto sul tuo PC.
2. Carica via FTP o File Manager del tuo hosting tutti i file nella cartella pubblica del server, ad esempio:
   - `public_html/fylo/`
3. Assicurati che la struttura sia simile a:

```text
fylo/
├── index.php
├── dashboard.php
├── config.php
├── db_config.php
├── functions.php
├── upload.php
├── increment_download.php
├── logout.php
├── documenti_correlati.php
├── manuale_utente.php
├── guida_amministratore.php
├── privacy_policy.php
├── termini_servizio.php
├── footer.php
├── .htaccess
├── .env
├── assets/
│   └── css/
│       ├── dashboard.css
│       └── login.css
├── uploads/
├── thumbnails/
└── users.json (opzionale, verrà creato se manca)
```

### 1.2 Permessi consigliati

Su server Linux/Unix:

```bash
cd /percorso/del/tuo/sito/fylo

chmod 755 uploads thumbnails assets
chmod 644 *.php
chmod 600 .env       # se possibile
chmod 644 users.json # se esiste
```

Su hosting condiviso (cPanel, Plesk):
- Imposta **cartelle** a 755
- Imposta **file** PHP a 644
- Imposta `.env` a 600/640 se il pannello lo permette

---

## 2. Configurazione del file `.env`

Il file `.env` si trova nella root del progetto (`fylo/.env`) e contiene i parametri di configurazione principali.

### 2.1 Esempio base di `.env`

```env
# Credenziali admin di default (CAMBIA SUBITO)
DEFAULT_ADMIN_USERNAME=admin
DEFAULT_ADMIN_PASSWORD=admin123
DEFAULT_ADMIN_EMAIL=admin@example.com

# Applicazione
APP_NAME=File Manager Fylo
APP_ENV=production
APP_DEBUG=false

# Sicurezza
SESSION_LIFETIME=3600
MAX_LOGIN_ATTEMPTS=5

# Upload
MAX_FILE_SIZE_MB=50
UPLOAD_DIR=uploads/

# Miniature
THUMBNAIL_WIDTH=100
THUMBNAIL_HEIGHT=100
THUMBNAIL_QUALITY=80

# Statistiche
MOST_DOWNLOADED_LIMIT=5
```

### 2.2 Cosa modificare obbligatoriamente

- `DEFAULT_ADMIN_USERNAME` → il tuo username admin
- `DEFAULT_ADMIN_PASSWORD` → una password forte
- `DEFAULT_ADMIN_EMAIL` → la tua email reale

**Consiglio:** dopo aver impostato `.env`, se vuoi rigenerare l’utente admin:
- cancella `users.json` dal server
- al primo accesso verrà ricreato con i nuovi dati.

### 2.3 Impostazioni upload

- `MAX_FILE_SIZE_MB` → dimensione massima in MB per i file caricati.
- Deve essere **coerente** con le impostazioni di PHP:

Nel `php.ini` (se hai accesso):

```ini
upload_max_filesize = 50M
post_max_size       = 50M
max_execution_time  = 300
memory_limit        = 128M
```

Se usi hosting condiviso, questi valori spesso si impostano da pannello.

---

## 3. Configurazione di `config.php`

`config.php` legge il file `.env` e definisce le costanti usate dal sistema.

### 3.1 Cosa fa `config.php`

- Legge ogni riga del `.env` e la carica in `$_ENV` / `$_SERVER`.
- Definisce costanti globali:
  - `UPLOAD_DIR` → directory base per i file
  - `MAX_FILE_SIZE` → limite in byte
  - `ALLOWED_EXTENSIONS` → estensioni ammesse
  - `ALLOWED_MIME_TYPES` → tipi MIME ammessi
  - `THUMBNAIL_WIDTH`, `THUMBNAIL_HEIGHT`, `THUMBNAIL_QUALITY`
  - `MOST_DOWNLOADED_LIMIT`
- Crea automaticamente le directory:
  - `uploads/` e `thumbnails/` (se non esistono)
- Imposta error reporting:
  - `display_errors` disattivato in produzione

### 3.2 Modifiche tipiche

Di solito **non è necessario** modificare `config.php`.  
Se però vuoi cambiare i tipi di file accettati:

- Cerca in `config.php`:

```php
define('ALLOWED_EXTENSIONS', [
    'jpg', 'jpeg', 'png', 'gif',
    'pdf', 'doc', 'docx',
    'xls', 'xlsx',
    'txt', 'zip', 'rar',
    'mp3', 'mp4'
]);
```

- Aggiungi/rimuovi estensioni solo se sai cosa stai facendo.

Per i MIME type, modifica `ALLOWED_MIME_TYPES` in modo coerente.

> Suggerimento: per la maggior parte dei casi lascia `config.php` invariato e lavora solo su `.env`.

---

## 4. Primo accesso e test

1. Vai all’indirizzo del sito, ad es.:
   - `http://localhost/fylo/`
   - oppure `https://tuodominio.it/fylo/`
2. Dovresti vedere la pagina di login.
3. Accedi con le credenziali impostate nel `.env` (di default `admin` / `admin123`).
4. Verifica:
   - che la dashboard si carichi senza errori
   - che tu veda il badge **Amministratore**
   - che la sezione File mostri (anche vuota) la lista

---

## 5. Guida Rapida per l’Uso (Utente)

### 5.1 Login

1. Inserisci username e password.
2. Clicca su **Login**.

### 5.2 Visualizzare e Scaricare File

1. Nella tab **File** vedi l’elenco di file e cartelle.
2. Clicca sull’icona blu download per scaricare un file.
3. Clicca sul nome di una cartella per entrare al suo interno.

### 5.3 Navigazione nelle Cartelle

- Usa il breadcrumb per capire dove ti trovi.
- Clicca su **Torna alla Root** per tornare alla cartella principale.

---

## 6. Guida Rapida per l’Amministratore

### 6.1 Caricare File

1. Nella sezione **Carica File**, scegli la cartella di destinazione.
2. Seleziona il file dal tuo PC.
3. Clicca su **Upload**.

### 6.2 Creare Cartelle

1. Usa il form **Crea Cartella**.
2. Inserisci il nome e conferma.

### 6.3 Rinominare File/Cartelle

1. Clicca sul pulsante giallo **Rinomina** (icona matita).
2. Inserisci il nuovo nome.
3. Conferma.

### 6.4 Eliminare File/Cartelle

1. Clicca sul pulsante rosso **Elimina** (icona cestino).
2. Conferma quando richiesto.

> Attenzione: l’eliminazione è definitiva.

### 6.5 Gestire Utenti

1. Vai alla tab **Utenti**.
2. Crea, modifica o elimina utenti.
3. Assegna il ruolo **Utente** o **Amministratore** in base alle necessità.

---

## 7. Sicurezza e Buone Pratiche

- Cambia subito la password dell’admin di default.
- Non usare password semplici (es. `admin123`).
- Fai backup regolari di:
  - `uploads/`
  - `users.json`
  - `.env`
- Usa HTTPS in produzione.
- Non condividere le credenziali di amministratore.

---

## 8. Dove trovare altre informazioni

- `README.md` → documentazione completa tecnica e funzionale.
- `manuale_utente.php` → manuale integrato per gli utenti.
- `guida_amministratore.php` → guida integrata per gli amministratori.

---




