Files
pilates-platform/README.md
2025-12-09 17:35:40 +01:00

726 lines
25 KiB
Markdown

# 🧘‍♀️ Pilates Platform
Piattaforma completa per vendere videolezioni e lezioni live di Pilates. Sviluppata in PHP puro con design minimale bianco e celeste.
## 📋 Caratteristiche Principali
### Area Pubblica
- **Homepage** con lezioni demo gratuite
- **Form contatti** per richiesta lezioni live personalizzate
- **Informazioni contatto** (email, telefono, WhatsApp opzionali)
- **Sistema di autenticazione** completo (login, registrazione)
- **Recupero password** con token sicuro e scadenza temporale
- **Reset password** via email con link univoco
- **Visualizzazione lezioni** con integrazione video (YouTube, Vimeo, locale)
- **Pagamento sicuro** tramite PayPal
### Area Utente
- **Dashboard personale** con lezioni acquistate
- **Catalogo completo** con filtri per tipo e livello
- **Gestione profilo** (dati personali e cambio password)
- **Accesso illimitato** alle lezioni acquistate
### Area Amministratore
- **Dashboard** con statistiche in tempo reale (utenti, lezioni, acquisti, revenue)
- **Gestione lezioni** (crea, modifica, elimina, attiva/disattiva)
- **Modifica lezioni** con form completo per videolezioni e lezioni live
- **Gestione utenti** (visualizza, blocca/sblocca, statistiche acquisti)
- **Storico acquisti** con dettagli pagamenti PayPal e grafici
- **Report e analisi** vendite con totali formattati
- **Profilo amministratore** con cambio password e test invio email
- **Conversione video** automatica in formato web-compatible (MP4 H.264)
### Funzionalità Tecniche
-**Sicurezza**: Password crittografate con bcrypt (PHP 8.1+ compatibile)
-**Database**: MySQL con PDO per prevenire SQL injection
-**Sessioni**: Gestione sicura con timeout automatico (30 minuti)
-**Reset password**: Token sicuri con scadenza 1 ora
-**Responsive**: Design mobile-first con CSS moderno
-**Codice commentato**: Ogni funzione è documentata per facilità di manutenzione
-**Log attività**: Tracciamento delle azioni importanti
-**Soft delete**: I dati eliminati non sono rimossi definitivamente
-**Gestione errori**: Controllo null values per compatibilità PHP 8.1+
-**Flash messages**: Sistema di messaggi temporanei per feedback utente
-**Email benvenuto**: Invio automatico email alla registrazione
-**Test email**: Strumento test SMTP nell'area admin
-**Video protetti**: Streaming sicuro con protezione download
-**Conversione video**: Automatica in MP4 H.264 per compatibilità browser
### Requisiti
- **PHP** 7.4 o superiore (8.0+ raccomandato)
- **MySQL** 5.7 o superiore (o MariaDB 10.3+)
- **Python** 3.6 o superiore (per invio email SMTP)
- **Web Server** (Apache, Nginx, o PHP built-in server per sviluppo)
- **Account PayPal** Sandbox (per test) o Business (per produzione)
- **FFmpeg** (opzionale, per conversione automatica video in MP4)
### Passo 1: Copia i File
```bash
# Copia tutti i file nella cartella del tuo web server
# Esempio per XAMPP/WAMP:
C:\xampp\htdocs\pilates-platform\
# Esempio per Linux:
/var/www/html/pilates-platform/
```
### Passo 2: Crea il Database
1. Apri phpMyAdmin (o il tuo client MySQL preferito)
2. Esegui lo script `database/schema.sql`
3. Questo creerà:
- Il database `pilates_platform` (con underscore, non trattino!)
- Tutte le tabelle necessarie (users, lessons, purchases, activity_log)
- Un utente amministratore di default
- Alcune lezioni demo di esempio
- Campi per reset password (reset_token, reset_expires)
**Credenziali Admin di Default:**
- Email: `admin@pilatesstudio.com`
- Password: `admin123`
- ⚠️ **IMPORTANTE**: Cambia questa password subito dopo il primo accesso!
**Se hai problemi con la password admin:**
1. Esegui lo script `database/reset_admin_password.sql` in phpMyAdmin
2. Oppure usa `test_password.php` per verificare l'hash della password
3. La password verrà reimpostata a `admin123`
### Passo 3: Configura l'Applicazione
Apri il file `includes/config.php` e modifica:
#### Database
```php
define('DB_HOST', 'localhost'); // Host del database
define('DB_NAME', 'pilates_platform'); // Nome database (usa underscore!)
define('DB_USER', 'root'); // Username (es: root per localhost)
define('DB_PASS', ''); // Password database
```
#### Sito
```php
define('SITE_URL', 'http://localhost/pilates-platform'); // URL del sito
define('ADMIN_EMAIL', 'tua-email@esempio.com'); // Riceve richieste contatti
// Contatti opzionali (mostrati nella homepage)
define('CONTACT_PHONE', '+39 123 456 7890'); // Telefono (lascia vuoto per nascondere)
define('CONTACT_WHATSAPP', '+39 123 456 7890'); // WhatsApp (lascia vuoto per nascondere)
```
#### Sicurezza
```php
// Genera una chiave casuale sicura (es: usando password_hash)
define('SECRET_KEY', 'CAMBIA-QUESTA-CHIAVE-CON-STRINGA-CASUALE-LUNGA-E-SICURA');
```
#### Email SMTP con Gmail ⭐ **IMPORTANTE**
Per inviare email (recupero password, registrazione), configura Gmail SMTP:
1. **Abilita verifica 2 fattori** sul tuo account Gmail
2. Vai su [Password per le app](https://myaccount.google.com/apppasswords)
3. Seleziona "App: Posta" e "Dispositivo: Altro (nome personalizzato)"
4. Inserisci "Pilates Platform" e clicca **Genera**
5. Copia la password di 16 caratteri generata
In `includes/config.php`:
```php
define('USE_SMTP', true); // Attiva SMTP
define('SMTP_HOST', 'smtp.gmail.com');
define('SMTP_PORT', 587); // 587 per TLS, 465 per SSL
define('SMTP_USERNAME', 'tua-email@gmail.com'); // La tua Gmail
define('SMTP_PASSWORD', 'abcd efgh ijkl mnop'); // Password app (16 caratteri)
define('SMTP_ENCRYPTION', 'tls'); // tls (porta 587) o ssl (porta 465)
```
⚠️ **Non usare la password normale di Gmail**, usa solo la password applicazione!
**Sistema di invio email:**
- Le email vengono inviate tramite script Python (`send_email.py`)
- Python 3.6+ deve essere installato sul server
- Lo script legge automaticamente le credenziali da `config.php`
- Più affidabile e stabile rispetto a SMTP nativo PHP
Verifica installazione Python:
```bash
python3 --version
```
Se Python non è installato:
- **Ubuntu/Debian**: `sudo apt install python3`
- **CentOS/RHEL**: `sudo yum install python3`
- **Windows**: Scarica da [python.org](https://www.python.org/downloads/)
#### PayPal Sandbox (per Test)
1. Vai su [PayPal Developer](https://developer.paypal.com/)
2. Accedi con il tuo account PayPal
3. Vai su "My Apps & Credentials"
4. Crea un'app nella sezione Sandbox
5. Copia Client ID e Secret
```php
define('PAYPAL_SANDBOX', true); // true per test, false per produzione
define('PAYPAL_CLIENT_ID', 'il-tuo-client-id-sandbox');
define('PAYPAL_SECRET', 'il-tuo-secret-sandbox');
```
### Passo 4: Installa getID3 (Opzionale - per durata video automatica)
La piattaforma può estrarre automaticamente la durata dei video caricati usando getID3.
#### Metodo 1: Con Composer (raccomandato)
```bash
composer install
```
#### Metodo 2: Script Automatico
```bash
# Linux/Mac
bash install_getid3.sh
# Windows PowerShell
.\install_getid3.ps1
```
#### Metodo 3: Manuale
1. Scarica getID3 da [GitHub](https://github.com/JamesHeinrich/getID3/releases)
2. Estrai in `vendor/getid3/getid3/`
3. Verifica che esista il file `vendor/getid3/getid3/getid3.php`
**Nota:** Se getID3 non è disponibile, la piattaforma proverà ad usare ffmpeg/ffprobe. Se anche questi non sono disponibili, dovrai inserire manualmente la durata.
### Passo 5: Configura i Permessi (Linux/Mac)
```bash
# Rendi scrivibile la cartella uploads e sottocartelle
chmod -R 755 uploads/
chmod -R 755 uploads/lessons/demo/
chmod -R 755 uploads/lessons/pay/
chmod -R 755 uploads/images/
```
**Nota:** Le cartelle `demo/` e `pay/` vengono create automaticamente all'upload se non esistono.
### Passo 6: Avvia il Server
#### Con PHP Built-in (per sviluppo)
```bash
cd pilates-platform
php -S localhost:8000
```
Poi apri: `http://localhost:8000`
#### Con XAMPP/WAMP
1. Avvia Apache e MySQL
2. Apri: `http://localhost/pilates-platform`
---
## 📖 Guida all'Uso
### Per Amministratori
#### Primo Accesso
1. Vai su `http://tuo-sito/login.php`
2. Accedi con le credenziali di default
3. Vai su "Area Admin" → "Profilo" e cambia la password
4. Testa l'invio email usando il bottone "📨 Invia Email di Test" nel profilo admin
3. Vai su "Area Admin" → "Profilo" e cambia la password
#### Creare una Nuova Lezione
1. **Area Admin****Gestione Lezioni****Nuova Lezione**
2. Compila i campi:
- **Titolo**: Nome della lezione
- **Descrizione**: Descrizione dettagliata
- **Tipo**: Scegli Video o Live
- **Per Video**:
- Piattaforma: Local, YouTube, Vimeo, o S3
- URL Video: Link al video
- Durata: Minuti
- **Per Live**:
- Piattaforma: Zoom, Google Meet, ecc.
- Link: URL della sessione
- Data e Ora: Quando si terrà
- **Livello**: Principiante, Intermedio, Avanzato
- **Categoria**: Es. Mat Work, Reformer, Stretching
- **Prezzo**: In euro
- **Opzioni**:
- ✓ Lezione Demo (gratuita per tutti)
- ✓ Lezione Attiva (visibile agli utenti)
3. Clicca **Crea Lezione**
#### Gestire gli Utenti
1. **Area Admin****Gestione Utenti**
2. Puoi vedere:
- Tutti gli utenti registrati
- Numero acquisti per utente
- Totale speso
- Data ultimo accesso
3. Azioni disponibili:
- **Blocca/Sblocca**: Disabilita temporaneamente un account
#### Visualizzare le Statistiche
La **Dashboard** mostra:
- 📊 Utenti registrati
- 🎥 Lezioni totali
- 💰 Acquisti completati
- 💵 Guadagni totali
- 📈 Lezioni più vendute
- 📋 Ultimi acquisti
### Per Utenti
#### Registrazione
1. Vai su `http://tuo-sito/register.php`
2. Compila il form con:
- Nome e Cognome
- Email
- Password (min 6 caratteri)
3. Verrai automaticamente loggato
#### Navigare il Catalogo
1. **Dashboard Utente****Catalogo**
2. Usa i filtri per:
- Tipo (Video/Live)
- Livello (Principiante/Intermedio/Avanzato)
3. Clicca su una lezione per vedere i dettagli
#### Acquistare una Lezione
1. Apri una lezione dal catalogo
2. Se non è demo, vedrai il prezzo
3. Clicca sul pulsante PayPal
4. Completa il pagamento
5. La lezione apparirà in "Le Mie Lezioni"
#### Guardare una Lezione
1. **Dashboard****Le Mie Lezioni**
2. Clicca su **Guarda** (per video) o **Partecipa** (per live)
3. Accesso illimitato per sempre!
#### Modificare il Profilo
1. **Dashboard****Profilo**
2. Puoi cambiare:
- Nome e Cognome
- Email
- Telefono
- Password
#### Recuperare la Password
1. Vai su `login.php`
2. Clicca su "Password dimenticata?"
3. Inserisci la tua email
4. Riceverai un link valido per 1 ora
5. Clicca sul link e imposta una nuova password
6. Accedi con le nuove credenziali
---
## 🎨 Personalizzazione
### Colori
Apri `assets/css/style.css` e modifica le variabili CSS:
```css
:root {
--primary-color: #4A90E2; /* Celeste principale */
--primary-light: #7AB8F5; /* Celeste chiaro */
--primary-dark: #357ABD; /* Celeste scuro */
--secondary-color: #E8F4F8; /* Celeste molto chiaro */
}
```
### Logo e Foto Istruttrice ⭐ **AGGIORNATO**
1. **Logo**: Carica `logo.png` in `uploads/images/`
- Dimensioni consigliate: 200x60px
- Formato: PNG con sfondo trasparente
- Il logo viene mostrato automaticamente nell'header se presente
2. **Foto Istruttrice**: Carica `instructor.jpg` in `uploads/images/`
- Dimensioni consigliate: 400x400px
- Formato: JPG o PNG
- Viene mostrata nella sezione "Chi Sono" della homepage
3. **Hero Image**: Carica `hero-bg.jpg` in `uploads/images/`
- Dimensioni: 1920x600px
- Immagine di sfondo homepage
### Email con Gmail SMTP
La piattaforma usa Gmail SMTP per inviare email in modo affidabile:
1. **Configurato di default** in `includes/config.php`
2. Inserisci le tue credenziali Gmail
3. Usa **Password per le app** (non la password Gmail normale)
4. Testa inviando una richiesta di reset password
**Per disattivare SMTP** e usare `mail()` PHP:
```php
define('USE_SMTP', false); // In config.php
```
---
### Opzione 1: File Locali (Upload Diretto) ⭐ **RACCOMANDATO**
1. Nella creazione/modifica lezione, seleziona **File Locale**
2. Clicca su "Scegli file" e seleziona il video dal tuo PC
3. Il sistema carica automaticamente il file in:
- `uploads/lessons/demo/` per lezioni gratuite
- `uploads/lessons/pay/` per lezioni a pagamento
4. Formati supportati: MP4, WebM, OGG, MOV
5.**Vantaggi**:
- Upload automatico
- Conversione automatica in MP4 se FFmpeg disponibile
- Streaming protetto con divieto download
- Controllo accessi basato su permessi utente
6. ⚠️ Limiti: Dimensione massima upload dipende da `php.ini` (default ~2MB)
**Per aumentare il limite di upload:**
Modifica `php.ini`:
```ini
upload_max_filesize = 500M
post_max_size = 500M
max_execution_time = 300
```
**Conversione Automatica Video:**
Se carichi video in formato diverso da MP4, il sistema:
1. Verifica se FFmpeg è installato
2. Converte automaticamente il video in MP4 H.264 con codec AAC
3. Ottimizza per lo streaming web (fast start)
4. Sostituisce il file originale con quello convertito
**Per installare FFmpeg:**
```bash
# Ubuntu/Debian
sudo apt-get install ffmpeg
# CentOS/RHEL
sudo yum install ffmpeg
# Mac
brew install ffmpeg
```t_max_size = 500M
max_execution_time = 300
```
### Opzione 2: YouTube (Consigliato per Video Grandi)
1. Carica video su YouTube come **Non in elenco**
2. Copia l'URL (es: `https://youtube.com/watch?v=ABC123`)
3. Quando crei la lezione:
- Piattaforma: YouTube
- URL: Incolla il link
### Opzione 3: Vimeo
1. Carica su Vimeo
2. Imposta privacy su "Nascosto"
3. Copia URL e usa come YouTube
### Opzione 4: AWS S3 (Professionale)
Per grandi quantità di video, usa Amazon S3:
1. Crea un bucket S3
2. Configura in `includes/config.php`:
```php
define('AWS_ACCESS_KEY', 'tua-key');
define('AWS_SECRET_KEY', 'tua-secret');
define('AWS_REGION', 'eu-west-1');
define('AWS_BUCKET', 'pilates-videos');
```
3. Carica video su S3
4. Usa URL S3 nelle lezioni
---
### Checklist Produzione
Prima di mettere online:
- [ ] Cambia password admin di default
- [ ] Cambia `SECRET_KEY` in `config.php`
- [ ] Imposta `DEBUG_MODE` a `false`
- [ ] Usa HTTPS (certificato SSL)
- [ ] Limita permessi cartelle (755 per cartelle, 644 per file)
- [ ] Backup regolari del database
- [ ] Configura SMTP per email
- [ ] Testa invio email con bottone nel profilo admin
- [ ] Testa email di benvenuto alla registrazione
- [ ] Converti tutti i video in MP4 H.264 (se necessario)
- [ ] Testa streaming video protetto
- [ ] Testa tutti i flussi di pagamento
- [ ] Verifica che `includes/config.php` NON sia accessibile via web
- [ ] **ELIMINA** `test_password.php` e `test_email.php` (rischio sicurezza!)
3. Copia credenziali Live
4. In `config.php`:
```php
define('PAYPAL_SANDBOX', false); // Passa a false!
define('PAYPAL_LIVE_CLIENT_ID', 'tuo-client-id-live');
define('PAYPAL_LIVE_SECRET', 'tuo-secret-live');
```
---
## 🔒 Sicurezza
### Checklist Produzione
Prima di mettere online:
- [ ] Cambia password admin di default
- [ ] Cambia `SECRET_KEY` in `config.php`
- [ ] Imposta `DEBUG_MODE` a `false`
- [ ] Usa HTTPS (certificato SSL)
- [ ] Limita permessi cartelle (755 per cartelle, 644 per file)
- [ ] Backup regolari del database
- [ ] Configura SMTP per email
- [ ] Testa tutti i flussi di pagamento
- [ ] Verifica che `includes/config.php` NON sia accessibile via web
### File .htaccess (per Apache)
Crea `.htaccess` nella cartella `includes/`:
### I video non si vedono
- Verifica che l'URL sia corretto
- Per YouTube/Vimeo: usa URL diretti al video
- Per file locali caricati: controlla che esistano in `uploads/lessons/demo/` o `pay/`
- Verifica permessi cartella uploads (755)
- Per video grandi, verifica limiti upload in `php.ini`
- **Se vedi schermo nero ma senti audio**: il video ha codec incompatibile
- Vai su **Area Admin****🔄 Converti Video**
- Converti il video in MP4 H.264
- Oppure ricarica il video in formato MP4 già codificato correttamente
- Verifica nella console browser (F12) eventuali errori di caricamento
---
## 🛠️ Risoluzione Problemi
### Errore: "Errore connessione database"
- Verifica che MySQL sia avviato
- Controlla credenziali in `config.php`
- Assicurati che il database `pilates_platform` esista (NON pilates-platform)
- MySQL non accetta trattini nei nomi database, usa underscore
### Le email non vengono inviate
- Verifica credenziali Gmail in `config.php` (SMTP_USERNAME e SMTP_PASSWORD)
- Usa **Password per le app** Gmail (non la password normale)
- Verifica che `USE_SMTP` sia `true`
- Controlla la cartella spam del destinatario
- Verifica log errori PHP per messaggi "SMTP Error"
- Assicurati che il server permetta connessioni SMTP in uscita (porta 587)
### I video non si vedono
- Verifica che l'URL sia corretto
- Per YouTube/Vimeo: usa URL diretti al video
- Per file locali caricati: controlla che esistano in `uploads/lessons/demo/` o `pay/`
- Verifica permessi cartella uploads (755)
- Per video grandi, verifica limiti upload in `php.ini`
### Errore durante upload video
- Controlla `upload_max_filesize` e `post_max_size` in `php.ini`
- Verifica che la cartella `uploads/lessons/` sia scrivibile
- Assicurati che il formato sia supportato (MP4, WebM, OGG, MOV)
- Le cartelle `demo/` e `pay/` vengono create automaticamente se non esistono
### La durata video non viene rilevata
- Installa getID3 per estrazione automatica durata:
- Con Composer: `composer install`
- Manualmente (Linux/Mac): `bash install_getid3.sh`
- Manualmente (Windows): `.\install_getid3.ps1`
- Oppure usa ffmpeg/ffprobe (già installato sulla maggior parte dei server)
- Se non disponibile, inserisci manualmente la durata nel form
### PayPal non funziona
- Verifica Client ID e Secret
- In test, usa modalità Sandbox
- Controlla console browser per errori JavaScript
### La pagina è bianca / Errore 500
- Attiva `DEBUG_MODE` in `config.php`
- Controlla log errori PHP
- Verifica permessi file (644) e cartelle (755)
- Controlla percorsi `require_once` nei file (devono essere relativi corretti)
### Errore "Deprecated: Passing null to parameter"
- Questo è un warning di PHP 8.1+
- La piattaforma è già aggiornata per gestire valori null
- Se vedi ancora warning, verifica che tutti i file siano aggiornati
### Reset Password / Email non funzionano
- Verifica che Python 3 sia installato: `python3 --version`
- Controlla credenziali SMTP in `config.php`
- Verifica che `send_email.py` abbia permessi esecuzione
- Testa invio dal profilo admin: pulsante "🧪 Testa Invio Email"
- Il token reset scade dopo 1 ora per sicurezza
- Controlla log errori PHP per dettagli (`error_log()`)
**Test manuale script Python:**
```bash
cd /path/to/pilates-platform
python3 send_email.py '{"to":"test@esempio.com","subject":"Test","html":"<p>Test email</p>"}'
```
**Errori comuni:**
- `python3: command not found` → Installa Python 3
- `Authentication failed` → Verifica password applicazione Gmail
- `Connection refused` → Controlla porta (587 per TLS, 465 per SSL)
- `Script not found` → Verifica che `send_email.py` esista nella root del progetto
- `Permission denied` → Su Linux: `chmod +x send_email.py`
- Il token reset scade dopo 1 ora per sicurezza
- Controlla log errori PHP per dettagli
**Test manuale script Python:**
```bash
cd /path/to/pilates-platform
python3 send_email.py '{"to":"test@esempio.com","subject":"Test","html":"<p>Test email</p>"}'
```
**Errori comuni:**
- `python3: command not found` → Installa Python 3
- `Authentication failed` → Verifica password applicazione Gmail
- `Connection refused` → Controlla porta (587 per TLS, 465 per SSL)
---
## 📁 Struttura File
```
pilates-platform/
├── admin/ # Area amministratore
│ ├── dashboard.php # Dashboard admin con statistiche
│ ├── lessons.php # Gestione lezioni (lista, elimina)
│ ├── lesson_create.php # Crea nuova lezione
│ ├── lesson_edit.php # Modifica lezione esistente
│ ├── users.php # Gestione utenti
│ └── purchases.php # Storico acquisti e revenue
├── assets/ # Risorse statiche
│ ├── css/
│ │ └── style.css # Stili principali
│ └── js/
│ └── main.js # JavaScript
├── process_payment.php # Elabora pagamento PayPal
├── stream_video.php # Streaming protetto video (verifica permessi)
├── convert_videos.php # Conversione batch video in MP4 H.264
├── send_email.py # Script Python per invio email SMTP
├── test_password.php # Utility test hash password (debug)
├── test_email.php # Utility test invio email SMTP (debug)
└── README.md # Questo file
├── includes/ # File PHP condivisi
│ ├── config.php # Configurazione
│ ├── functions.php # Funzioni comuni
│ └── logout.php # Script logout
├── uploads/ # File caricati
│ ├── lessons/ # Video lezioni
│ │ ├── demo/ # Video lezioni gratuite
│ │ ├── pay/ # Video lezioni a pagamento
│ │ └── .htaccess # Protezione accesso diretto
│ ├── images/ # Logo e foto istruttrice
│ └── thumbnails/ # Anteprime lezioni (future)
├── user/ # Area utente
│ ├── dashboard.php # Dashboard utente
│ ├── catalog.php # Catalogo lezioni
│ └── profile.php # Profilo utente
├── index.php # Homepage pubblica con form contatti
├── contact.php # Gestione form richiesta lezioni live
├── login.php # Login utenti e admin
├── register.php # Registrazione nuovi utenti
├── forgot_password.php # Recupero password (richiesta token)
├── reset_password.php # Reset password (con token)
├── lesson.php # Visualizza lezione e acquisto
├── process_payment.php # Elabora pagamento PayPal
├── test_password.php # Utility test hash password (debug)
├── test_email.php # Utility test invio email SMTP (debug)
└── README.md # Questo file
```
---
## 🎓 Concetti per Neofiti
### Cos'è PHP?
PHP è il linguaggio che "genera" le pagine HTML dinamicamente. Quando visiti `index.php`, il server:
1. Esegue il codice PHP
2. Genera l'HTML finale
3. Lo invia al browser
### Cos'è il Database?
MySQL è dove vengono salvati i dati:
- Utenti registrati
- Lezioni create
- Acquisti effettuati
### Come Funziona il Login?
1. Utente inserisce email e password
2. PHP cerca l'email nel database
3. Verifica la password (hashata)
4. Se corretta, crea una "sessione"
5. La sessione ricorda che sei loggato
### Come Funziona PayPal?
1. Utente clicca "Acquista"
2. Si apre popup PayPal
3. Utente paga
4. PayPal conferma il pagamento
5. `process_payment.php` registra l'acquisto nel DB
### Checklist Prossimi Passi
Dopo l'installazione:
- [ ] Cambia password admin (profilo o reset_admin_password.sql)
- [ ] **Configura Gmail SMTP** (obbligatorio per recupero password)
- [ ] Genera password applicazione Gmail
- [ ] Inserisci credenziali SMTP in config.php
- [ ] Testa invio email dal profilo admin
- [ ] Testa recupero password
- [ ] Testa email benvenuto registrazione
- [ ] Installa FFmpeg (opzionale, per conversione video)
- [ ] Configura PayPal Sandbox
- [ ] Carica almeno 3 lezioni demo con video
- [ ] Verifica che i video si vedano correttamente
- [ ] Testa registrazione utente
- [ ] Testa acquisto lezione (in sandbox)
- [ ] Verifica streaming protetto video
- [ ] Testa modifica lezioni esistenti
- [ ] Personalizza colori e logo
- [ ] Configura backup automatici database
- [ ] Passa a produzione PayPal
- [ ] Attiva HTTPS (certificato SSL)
- [ ] Converti tutti i video in MP4 se necessario
- [ ] **ELIMINA file di debug** (test_password.php, test_email.php)
- [ ] Testa tutti i flussi su produzione
- [ ] Lancia! 🚀PHP, testa la piattaforma in locale prima di aggiornare in produzione.
### Log Attività
La tabella `activity_log` traccia:
- Login/Logout
- Acquisti
- Modifiche importanti
Usa per debug e sicurezza.
---
## 📝 Licenza
Questo progetto è stato creato come piattaforma custom. Sei libero di modificarlo e usarlo come preferisci.
---
## ✅ Checklist Prossimi Passi
Dopo l'installazione:
- [ ] Cambia password admin (profilo o reset_admin_password.sql)
- [ ] **Configura Gmail SMTP** (obbligatorio per recupero password)
- [ ] Genera password applicazione Gmail
- [ ] Inserisci credenziali SMTP in config.php
- [ ] Testa recupero password
- [ ] Configura PayPal Sandbox
- [ ] Carica almeno 3 lezioni demo
- [ ] Testa registrazione utente
- [ ] Testa acquisto lezione (in sandbox)
- [ ] Testa modifica lezioni esistenti
- [ ] Personalizza colori e logo
- [ ] Configura backup automatici database
- [ ] Passa a produzione PayPal
- [ ] Attiva HTTPS (certificato SSL)
- [ ] Testa tutti i flussi su produzione
- [ ] Lancia! 🚀
---
**Buon lavoro con la tua piattaforma Pilates! 🧘‍♀️**
Per domande o problemi, verifica sempre i log errori PHP e la console browser.