Files
pilates-platform/README.md
Francesco Picone 4e41ca9bf7 fix
2025-12-03 18:35:21 +01:00

486 lines
13 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
- **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
```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`
- Tutte le tabelle necessarie
- Un utente amministratore di default
- Alcune lezioni demo di esempio
**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
```php
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
```php
define('SITE_URL', 'http://localhost/pilates-platform'); // URL del sito
define('ADMIN_EMAIL', 'tua-email@esempio.com'); // Tua email
```
#### Sicurezza
```php
// 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)
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: Configura i Permessi (Linux/Mac)
```bash
# Rendi scrivibile la cartella uploads
chmod 755 uploads/
```
### Passo 5: 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
#### 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
---
## 🎨 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
Sostituisci il testo "Pilates Studio" in `index.php` e negli altri file con:
```html
<img src="assets/images/logo.png" alt="Logo" class="logo">
```
### Email
Per usare SMTP invece di `mail()` PHP, decomenta in `includes/config.php`:
```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)
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 2: Vimeo
1. Carica su Vimeo
2. Imposta privacy su "Nascosto"
3. Copia URL e usa come YouTube
### Opzione 3: File Locali
1. Carica il file in `uploads/videos/`
2. URL Video: `/uploads/videos/nome-file.mp4`
3. ⚠️ Non consigliato per file grandi (limiti server)
### 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
---
## 💳 Configurare PayPal
### Modalità Test (Sandbox)
1. Vai su [developer.paypal.com](https://developer.paypal.com)
2. Crea un'app Sandbox
3. Copia Client ID e Secret in `config.php`
4. Usa gli account test per simulare pagamenti
### Modalità Produzione (Reale)
1. Vai su [paypal.com/businessmanage](https://www.paypal.com/businessmanage)
2. Crea app Live
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/`:
```apache
# 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_MODE` in `config.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:
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
### Dove Modificare il Codice?
- **Aspetto grafico**: `assets/css/style.css`
- **Comportamento**: File `.php` specifici
- **Database**: Usa phpMyAdmin o client MySQL
- **Impostazioni**: `includes/config.php`
---
## 📞 Supporto e Manutenzione
### Backup Database
Esegui regolarmente (es: settimanalmente):
```bash
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.