# πŸ§˜β€β™€οΈ 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** 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 ### 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 --- ## πŸš€ 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` (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'); // 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 #### 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 Sostituisci il testo "Pilates Studio" in `index.php` e negli altri file con: ```html ``` ### 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 Require all denied ``` --- ## πŸ› οΈ 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 - 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) - 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` --- ## πŸ“ 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 β”‚ β”œβ”€β”€ database/ β”‚ β”œβ”€β”€ schema.sql # Script creazione database β”‚ └── reset_admin_password.sql # Reset password admin β”‚ β”œβ”€β”€ 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 pubblica β”œβ”€β”€ 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) └── 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 pilatesplatform > 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 (profilo o reset_admin_password.sql) - [ ] Configura SMTP per invio email - [ ] 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.