🧘♀️ 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
- Sistema di autenticazione completo (login, registrazione, recupero password)
- 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
- Gestione lezioni (crea, modifica, elimina)
- Gestione utenti (visualizza, blocca/sblocca)
- Storico acquisti con dettagli pagamenti PayPal
- Report e analisi vendite
Funzionalità Tecniche
- ✅ Sicurezza: Password crittografate con bcrypt
- ✅ Database: MySQL con PDO per prevenire SQL injection
- ✅ Sessioni: Gestione sicura con timeout automatico
- ✅ Responsive: Design mobile-first
- ✅ Codice commentato: Ogni funzione è documentata per facilità di manutenzione
- ✅ Log attività: Tracciamento delle azioni importanti
- ✅ Soft delete: I dati eliminati non sono rimossi definitivamente
🚀 Installazione
Requisiti
- PHP 7.4 o superiore
- MySQL 5.7 o superiore (o MariaDB 10.3+)
- Web Server (Apache, Nginx, o PHP built-in server per sviluppo)
- Account PayPal Sandbox (per test) o Business (per produzione)
Passo 1: Copia i File
# 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
- Apri phpMyAdmin (o il tuo client MySQL preferito)
- Esegui lo script
database/schema.sql - Questo creerà:
- Il database
pilates_platform - Tutte le tabelle necessarie
- Un utente amministratore di default
- Alcune lezioni demo di esempio
- Il database
Credenziali Admin di Default:
- Email:
admin@pilatesstudio.com - Password:
admin123 - ⚠️ IMPORTANTE: Cambia questa password subito dopo il primo accesso!
Passo 3: Configura l'Applicazione
Apri il file includes/config.php e modifica:
Database
define('DB_HOST', 'localhost'); // Host del database
define('DB_NAME', 'pilates_platform'); // Nome database
define('DB_USER', 'root'); // Username (es: root per localhost)
define('DB_PASS', ''); // Password database
Sito
define('SITE_URL', 'http://localhost/pilates-platform'); // URL del sito
define('ADMIN_EMAIL', 'tua-email@esempio.com'); // Tua email
Sicurezza
// Genera una chiave casuale sicura (es: usando password_hash)
define('SECRET_KEY', 'CAMBIA-QUESTA-CHIAVE-CON-STRINGA-CASUALE-LUNGA-E-SICURA');
PayPal Sandbox (per Test)
- Vai su PayPal Developer
- Accedi con il tuo account PayPal
- Vai su "My Apps & Credentials"
- Crea un'app nella sezione Sandbox
- Copia Client ID e Secret
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: Configura i Permessi (Linux/Mac)
# Rendi scrivibile la cartella uploads
chmod 755 uploads/
Passo 5: Avvia il Server
Con PHP Built-in (per sviluppo)
cd pilates-platform
php -S localhost:8000
Poi apri: http://localhost:8000
Con XAMPP/WAMP
- Avvia Apache e MySQL
- Apri:
http://localhost/pilates-platform
📖 Guida all'Uso
Per Amministratori
Primo Accesso
- Vai su
http://tuo-sito/login.php - Accedi con le credenziali di default
- Vai su "Area Admin" → "Profilo" e cambia la password
Creare una Nuova Lezione
- Area Admin → Gestione Lezioni → Nuova Lezione
- 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)
- Clicca Crea Lezione
Gestire gli Utenti
- Area Admin → Gestione Utenti
- Puoi vedere:
- Tutti gli utenti registrati
- Numero acquisti per utente
- Totale speso
- Data ultimo accesso
- 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
- Vai su
http://tuo-sito/register.php - Compila il form con:
- Nome e Cognome
- Password (min 6 caratteri)
- Verrai automaticamente loggato
Navigare il Catalogo
- Dashboard Utente → Catalogo
- Usa i filtri per:
- Tipo (Video/Live)
- Livello (Principiante/Intermedio/Avanzato)
- Clicca su una lezione per vedere i dettagli
Acquistare una Lezione
- Apri una lezione dal catalogo
- Se non è demo, vedrai il prezzo
- Clicca sul pulsante PayPal
- Completa il pagamento
- La lezione apparirà in "Le Mie Lezioni"
Guardare una Lezione
- Dashboard → Le Mie Lezioni
- Clicca su Guarda (per video) o Partecipa (per live)
- Accesso illimitato per sempre!
Modificare il Profilo
- Dashboard → Profilo
- Puoi cambiare:
- Nome e Cognome
- Telefono
- Password
🎨 Personalizzazione
Colori
Apri assets/css/style.css e modifica le variabili CSS:
:root {
--primary-color: #4A90E2; /* Celeste principale */
--primary-light: #7AB8F5; /* Celeste chiaro */
--primary-dark: #357ABD; /* Celeste scuro */
--secondary-color: #E8F4F8; /* Celeste molto chiaro */
}
Logo
Sostituisci il testo "Pilates Studio" in index.php e negli altri file con:
<img src="assets/images/logo.png" alt="Logo" class="logo">
Per usare SMTP invece di mail() PHP, decomenta in includes/config.php:
define('SMTP_HOST', 'smtp.gmail.com');
define('SMTP_PORT', 587);
define('SMTP_USERNAME', 'tua-email@gmail.com');
define('SMTP_PASSWORD', 'tua-app-password');
define('SMTP_ENCRYPTION', 'tls');
🎥 Hosting Video
Opzione 1: YouTube (Consigliato per Iniziare)
- Carica video su YouTube come Non in elenco
- Copia l'URL (es:
https://youtube.com/watch?v=ABC123) - Quando crei la lezione:
- Piattaforma: YouTube
- URL: Incolla il link
Opzione 2: Vimeo
- Carica su Vimeo
- Imposta privacy su "Nascosto"
- Copia URL e usa come YouTube
Opzione 3: File Locali
- Carica il file in
uploads/videos/ - URL Video:
/uploads/videos/nome-file.mp4 - ⚠️ Non consigliato per file grandi (limiti server)
Opzione 4: AWS S3 (Professionale)
Per grandi quantità di video, usa Amazon S3:
- Crea un bucket S3
- Configura in
includes/config.php:
define('AWS_ACCESS_KEY', 'tua-key');
define('AWS_SECRET_KEY', 'tua-secret');
define('AWS_REGION', 'eu-west-1');
define('AWS_BUCKET', 'pilates-videos');
- Carica video su S3
- Usa URL S3 nelle lezioni
💳 Configurare PayPal
Modalità Test (Sandbox)
- Vai su developer.paypal.com
- Crea un'app Sandbox
- Copia Client ID e Secret in
config.php - Usa gli account test per simulare pagamenti
Modalità Produzione (Reale)
- Vai su paypal.com/businessmanage
- Crea app Live
- Copia credenziali Live
- In
config.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_KEYinconfig.php - Imposta
DEBUG_MODEafalse - 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.phpNON sia accessibile via web
File .htaccess (per Apache)
Crea .htaccess nella cartella includes/:
# Nega accesso a config.php
<Files "config.php">
Require all denied
</Files>
🛠️ Risoluzione Problemi
Errore: "Errore connessione database"
- Verifica che MySQL sia avviato
- Controlla credenziali in
config.php - Assicurati che il database esista
Le email non vengono inviate
- Configura SMTP in
config.php - Verifica che
mail()PHP funzioni sul tuo server - Controlla la cartella spam
I video non si vedono
- Verifica che l'URL sia corretto
- Per YouTube/Vimeo: usa URL diretti al video
- Per file locali: controlla i permessi della cartella
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_MODEinconfig.php - Controlla log errori PHP
- Verifica permessi file (644) e cartelle (755)
📁 Struttura File
pilates-platform/
│
├── admin/ # Area amministratore
│ ├── dashboard.php # Dashboard admin
│ ├── lessons.php # Gestione lezioni
│ ├── lesson_create.php # Crea lezione
│ ├── lesson_edit.php # Modifica lezione (da creare se serve)
│ ├── users.php # Gestione utenti
│ └── purchases.php # Storico acquisti
│
├── assets/ # Risorse statiche
│ ├── css/
│ │ └── style.css # Stili principali
│ └── js/
│ └── main.js # JavaScript
│
├── database/
│ └── schema.sql # Script creazione database
│
├── includes/ # File PHP condivisi
│ ├── config.php # Configurazione
│ ├── functions.php # Funzioni comuni
│ └── logout.php # Script logout
│
├── uploads/ # File caricati (da creare)
│ ├── thumbnails/ # Anteprime lezioni
│ └── videos/ # Video locali
│
├── user/ # Area utente
│ ├── dashboard.php # Dashboard utente
│ ├── catalog.php # Catalogo lezioni
│ └── profile.php # Profilo utente
│
├── index.php # Homepage
├── login.php # Login
├── register.php # Registrazione
├── forgot_password.php # Recupero password (step 1)
├── reset_password.php # Reset password (step 2)
├── lesson.php # Visualizza lezione
├── process_payment.php # Elabora pagamento PayPal
└── README.md # Questo file
🎓 Concetti per Neofiti
Cos'è PHP?
PHP è il linguaggio che "genera" le pagine HTML dinamicamente. Quando visiti index.php, il server:
- Esegue il codice PHP
- Genera l'HTML finale
- Lo invia al browser
Cos'è il Database?
MySQL è dove vengono salvati i dati:
- Utenti registrati
- Lezioni create
- Acquisti effettuati
Come Funziona il Login?
- Utente inserisce email e password
- PHP cerca l'email nel database
- Verifica la password (hashata)
- Se corretta, crea una "sessione"
- La sessione ricorda che sei loggato
Come Funziona PayPal?
- Utente clicca "Acquista"
- Si apre popup PayPal
- Utente paga
- PayPal conferma il pagamento
process_payment.phpregistra l'acquisto nel DB
Dove Modificare il Codice?
- Aspetto grafico:
assets/css/style.css - Comportamento: File
.phpspecifici - Database: Usa phpMyAdmin o client MySQL
- Impostazioni:
includes/config.php
📞 Supporto e Manutenzione
Backup Database
Esegui regolarmente (es: settimanalmente):
mysqldump -u root -p pilates_platform > backup_$(date +%Y%m%d).sql
Aggiornare PHP
Quando aggiorni 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
- Configura PayPal Sandbox
- Carica almeno 3 lezioni demo
- Testa registrazione utente
- Testa acquisto lezione (in sandbox)
- Personalizza colori e logo
- Configura backup automatici
- Passa a produzione PayPal
- Attiva HTTPS
- Lancia! 🚀
Buon lavoro con la tua piattaforma Pilates! 🧘♀️
Per domande o problemi, verifica sempre i log errori PHP e la console browser.