fix
This commit is contained in:
485
README.md
Normal file
485
README.md
Normal file
@@ -0,0 +1,485 @@
|
||||
# 🧘♀️ 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.
|
||||
Reference in New Issue
Block a user