726 lines
25 KiB
Markdown
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.
|