This commit is contained in:
Francesco Picone
2025-12-06 17:35:52 +01:00
parent 5ec1cb2f45
commit ca1d604701

101
README.md
View File

@@ -6,7 +6,9 @@ Piattaforma completa per vendere videolezioni e lezioni live di Pilates. Svilupp
### Area Pubblica ### Area Pubblica
- **Homepage** con lezioni demo gratuite - **Homepage** con lezioni demo gratuite
- **Sistema di autenticazione** completo (login, registrazione, recupero password) - **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) - **Visualizzazione lezioni** con integrazione video (YouTube, Vimeo, locale)
- **Pagamento sicuro** tramite PayPal - **Pagamento sicuro** tramite PayPal
@@ -17,20 +19,24 @@ Piattaforma completa per vendere videolezioni e lezioni live di Pilates. Svilupp
- **Accesso illimitato** alle lezioni acquistate - **Accesso illimitato** alle lezioni acquistate
### Area Amministratore ### Area Amministratore
- **Dashboard** con statistiche in tempo reale - **Dashboard** con statistiche in tempo reale (utenti, lezioni, acquisti, revenue)
- **Gestione lezioni** (crea, modifica, elimina) - **Gestione lezioni** (crea, modifica, elimina, attiva/disattiva)
- **Gestione utenti** (visualizza, blocca/sblocca) - **Modifica lezioni** con form completo per videolezioni e lezioni live
- **Storico acquisti** con dettagli pagamenti PayPal - **Gestione utenti** (visualizza, blocca/sblocca, statistiche acquisti)
- **Report e analisi** vendite - **Storico acquisti** con dettagli pagamenti PayPal e grafici
- **Report e analisi** vendite con totali formattati
### Funzionalità Tecniche ### Funzionalità Tecniche
-**Sicurezza**: Password crittografate con bcrypt -**Sicurezza**: Password crittografate con bcrypt (PHP 8.1+ compatibile)
-**Database**: MySQL con PDO per prevenire SQL injection -**Database**: MySQL con PDO per prevenire SQL injection
-**Sessioni**: Gestione sicura con timeout automatico -**Sessioni**: Gestione sicura con timeout automatico (30 minuti)
-**Responsive**: Design mobile-first -**Reset password**: Token sicuri con scadenza 1 ora
-**Responsive**: Design mobile-first con CSS moderno
-**Codice commentato**: Ogni funzione è documentata per facilità di manutenzione -**Codice commentato**: Ogni funzione è documentata per facilità di manutenzione
-**Log attività**: Tracciamento delle azioni importanti -**Log attività**: Tracciamento delle azioni importanti
-**Soft delete**: I dati eliminati non sono rimossi definitivamente -**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
--- ---
@@ -56,25 +62,31 @@ C:\xampp\htdocs\pilates-platform\
1. Apri phpMyAdmin (o il tuo client MySQL preferito) 1. Apri phpMyAdmin (o il tuo client MySQL preferito)
2. Esegui lo script `database/schema.sql` 2. Esegui lo script `database/schema.sql`
3. Questo creerà: 3. Questo creerà:
- Il database `pilatesplatform` - Il database `pilates_platform` (con underscore, non trattino!)
- Tutte le tabelle necessarie - Tutte le tabelle necessarie (users, lessons, purchases, activity_log)
- Un utente amministratore di default - Un utente amministratore di default
- Alcune lezioni demo di esempio - Alcune lezioni demo di esempio
- Campi per reset password (reset_token, reset_expires)
**Credenziali Admin di Default:** **Credenziali Admin di Default:**
- Email: `admin@pilatesstudio.com` - Email: `admin@pilatesstudio.com`
- Password: `admin123` - Password: `admin123`
- ⚠️ **IMPORTANTE**: Cambia questa password subito dopo il primo accesso! - ⚠️ **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 ### Passo 3: Configura l'Applicazione
Apri il file `includes/config.php` e modifica: Apri il file `includes/config.php` e modifica:
#### Database #### Database
```php ```php
define('DB_HOST', 'localhost'); // Host del database define('DB_HOST', 'localhost'); // Host del database
define('DB_NAME', 'pilatesplatform'); // Nome database define('DB_NAME', 'pilates_platform'); // Nome database (usa underscore!)
define('DB_USER', 'root'); // Username (es: root per localhost) define('DB_USER', 'root'); // Username (es: root per localhost)
define('DB_PASS', ''); // Password database define('DB_PASS', ''); // Password database
``` ```
#### Sito #### Sito
@@ -209,6 +221,14 @@ La **Dashboard** mostra:
- Telefono - Telefono
- Password - 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 ## 🎨 Personalizzazione
@@ -329,7 +349,8 @@ Crea `.htaccess` nella cartella `includes/`:
### Errore: "Errore connessione database" ### Errore: "Errore connessione database"
- Verifica che MySQL sia avviato - Verifica che MySQL sia avviato
- Controlla credenziali in `config.php` - Controlla credenziali in `config.php`
- Assicurati che il database esista - Assicurati che il database `pilates_platform` esista (NON pilates-platform)
- MySQL non accetta trattini nei nomi database, usa underscore
### Le email non vengono inviate ### Le email non vengono inviate
- Configura SMTP in `config.php` - Configura SMTP in `config.php`
@@ -350,6 +371,18 @@ Crea `.htaccess` nella cartella `includes/`:
- Attiva `DEBUG_MODE` in `config.php` - Attiva `DEBUG_MODE` in `config.php`
- Controlla log errori PHP - Controlla log errori PHP
- Verifica permessi file (644) e cartelle (755) - 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 non funziona
- Verifica che le email vengano inviate correttamente
- Configura SMTP in `config.php` se `mail()` non funziona
- Il token scade dopo 1 ora per sicurezza
- Controlla che la tabella `users` abbia i campi `reset_token` e `reset_expires`
--- ---
@@ -359,12 +392,12 @@ Crea `.htaccess` nella cartella `includes/`:
pilates-platform/ pilates-platform/
├── admin/ # Area amministratore ├── admin/ # Area amministratore
│ ├── dashboard.php # Dashboard admin │ ├── dashboard.php # Dashboard admin con statistiche
│ ├── lessons.php # Gestione lezioni │ ├── lessons.php # Gestione lezioni (lista, elimina)
│ ├── lesson_create.php # Crea lezione │ ├── lesson_create.php # Crea nuova lezione
│ ├── lesson_edit.php # Modifica lezione (da creare se serve) │ ├── lesson_edit.php # Modifica lezione esistente
│ ├── users.php # Gestione utenti │ ├── users.php # Gestione utenti
│ └── purchases.php # Storico acquisti │ └── purchases.php # Storico acquisti e revenue
├── assets/ # Risorse statiche ├── assets/ # Risorse statiche
│ ├── css/ │ ├── css/
@@ -373,7 +406,8 @@ pilates-platform/
│ └── main.js # JavaScript │ └── main.js # JavaScript
├── database/ ├── database/
── schema.sql # Script creazione database ── schema.sql # Script creazione database
│ └── reset_admin_password.sql # Reset password admin
├── includes/ # File PHP condivisi ├── includes/ # File PHP condivisi
│ ├── config.php # Configurazione │ ├── config.php # Configurazione
@@ -389,13 +423,14 @@ pilates-platform/
│ ├── catalog.php # Catalogo lezioni │ ├── catalog.php # Catalogo lezioni
│ └── profile.php # Profilo utente │ └── profile.php # Profilo utente
├── index.php # Homepage ├── index.php # Homepage pubblica
├── login.php # Login ├── login.php # Login utenti e admin
├── register.php # Registrazione ├── register.php # Registrazione nuovi utenti
├── forgot_password.php # Recupero password (step 1) ├── forgot_password.php # Recupero password (richiesta token)
├── reset_password.php # Reset password (step 2) ├── reset_password.php # Reset password (con token)
├── lesson.php # Visualizza lezione ├── lesson.php # Visualizza lezione e acquisto
├── process_payment.php # Elabora pagamento PayPal ├── process_payment.php # Elabora pagamento PayPal
├── test_password.php # Utility test hash password (debug)
└── README.md # Questo file └── README.md # Questo file
``` ```
@@ -467,15 +502,19 @@ Questo progetto è stato creato come piattaforma custom. Sei libero di modificar
## ✅ Checklist Prossimi Passi ## ✅ Checklist Prossimi Passi
Dopo l'installazione: Dopo l'installazione:
- [ ] Cambia password admin - [ ] Cambia password admin (profilo o reset_admin_password.sql)
- [ ] Configura SMTP per invio email
- [ ] Testa recupero password
- [ ] Configura PayPal Sandbox - [ ] Configura PayPal Sandbox
- [ ] Carica almeno 3 lezioni demo - [ ] Carica almeno 3 lezioni demo
- [ ] Testa registrazione utente - [ ] Testa registrazione utente
- [ ] Testa acquisto lezione (in sandbox) - [ ] Testa acquisto lezione (in sandbox)
- [ ] Testa modifica lezioni esistenti
- [ ] Personalizza colori e logo - [ ] Personalizza colori e logo
- [ ] Configura backup automatici - [ ] Configura backup automatici database
- [ ] Passa a produzione PayPal - [ ] Passa a produzione PayPal
- [ ] Attiva HTTPS - [ ] Attiva HTTPS (certificato SSL)
- [ ] Testa tutti i flussi su produzione
- [ ] Lancia! 🚀 - [ ] Lancia! 🚀
--- ---