# π§ββοΈ 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 - **Form contatti** per richiesta lezioni live personalizzate - **Informazioni contatto** (email, telefono, WhatsApp opzionali) - **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 - **Profilo amministratore** con cambio password e test invio email - **Conversione video** automatica in formato web-compatible (MP4 H.264) ### 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 - β **Email benvenuto**: Invio automatico email alla registrazione - β **Test email**: Strumento test SMTP nell'area admin - β **Video protetti**: Streaming sicuro con protezione download - β **Conversione video**: Automatica in MP4 H.264 per compatibilitΓ browser ### Requisiti - **PHP** 7.4 o superiore (8.0+ raccomandato) - **MySQL** 5.7 o superiore (o MariaDB 10.3+) - **Python** 3.6 o superiore (per invio email SMTP) - **Web Server** (Apache, Nginx, o PHP built-in server per sviluppo) - **Account PayPal** Sandbox (per test) o Business (per produzione) - **FFmpeg** (opzionale, per conversione automatica video in MP4) ### 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'); // Riceve richieste contatti // Contatti opzionali (mostrati nella homepage) define('CONTACT_PHONE', '+39 123 456 7890'); // Telefono (lascia vuoto per nascondere) define('CONTACT_WHATSAPP', '+39 123 456 7890'); // WhatsApp (lascia vuoto per nascondere) ``` #### Sicurezza ```php // Genera una chiave casuale sicura (es: usando password_hash) define('SECRET_KEY', 'CAMBIA-QUESTA-CHIAVE-CON-STRINGA-CASUALE-LUNGA-E-SICURA'); ``` #### Email SMTP con Gmail β **IMPORTANTE** Per inviare email (recupero password, registrazione), configura Gmail SMTP: 1. **Abilita verifica 2 fattori** sul tuo account Gmail 2. Vai su [Password per le app](https://myaccount.google.com/apppasswords) 3. Seleziona "App: Posta" e "Dispositivo: Altro (nome personalizzato)" 4. Inserisci "Pilates Platform" e clicca **Genera** 5. Copia la password di 16 caratteri generata In `includes/config.php`: ```php define('USE_SMTP', true); // Attiva SMTP define('SMTP_HOST', 'smtp.gmail.com'); define('SMTP_PORT', 587); // 587 per TLS, 465 per SSL define('SMTP_USERNAME', 'tua-email@gmail.com'); // La tua Gmail define('SMTP_PASSWORD', 'abcd efgh ijkl mnop'); // Password app (16 caratteri) define('SMTP_ENCRYPTION', 'tls'); // tls (porta 587) o ssl (porta 465) ``` β οΈ **Non usare la password normale di Gmail**, usa solo la password applicazione! **Sistema di invio email:** - Le email vengono inviate tramite script Python (`send_email.py`) - Python 3.6+ deve essere installato sul server - Lo script legge automaticamente le credenziali da `config.php` - PiΓΉ affidabile e stabile rispetto a SMTP nativo PHP Verifica installazione Python: ```bash python3 --version ``` Se Python non Γ¨ installato: - **Ubuntu/Debian**: `sudo apt install python3` - **CentOS/RHEL**: `sudo yum install python3` - **Windows**: Scarica da [python.org](https://www.python.org/downloads/) #### 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: Installa getID3 (Opzionale - per durata video automatica) La piattaforma puΓ² estrarre automaticamente la durata dei video caricati usando getID3. #### Metodo 1: Con Composer (raccomandato) ```bash composer install ``` #### Metodo 2: Script Automatico ```bash # Linux/Mac bash install_getid3.sh # Windows PowerShell .\install_getid3.ps1 ``` #### Metodo 3: Manuale 1. Scarica getID3 da [GitHub](https://github.com/JamesHeinrich/getID3/releases) 2. Estrai in `vendor/getid3/getid3/` 3. Verifica che esista il file `vendor/getid3/getid3/getid3.php` **Nota:** Se getID3 non Γ¨ disponibile, la piattaforma proverΓ ad usare ffmpeg/ffprobe. Se anche questi non sono disponibili, dovrai inserire manualmente la durata. ### Passo 5: Configura i Permessi (Linux/Mac) ```bash # Rendi scrivibile la cartella uploads e sottocartelle chmod -R 755 uploads/ chmod -R 755 uploads/lessons/demo/ chmod -R 755 uploads/lessons/pay/ chmod -R 755 uploads/images/ ``` **Nota:** Le cartelle `demo/` e `pay/` vengono create automaticamente all'upload se non esistono. ### Passo 6: 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 4. Testa l'invio email usando il bottone "π¨ Invia Email di Test" nel profilo admin 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 e Foto Istruttrice β **AGGIORNATO** 1. **Logo**: Carica `logo.png` in `uploads/images/` - Dimensioni consigliate: 200x60px - Formato: PNG con sfondo trasparente - Il logo viene mostrato automaticamente nell'header se presente 2. **Foto Istruttrice**: Carica `instructor.jpg` in `uploads/images/` - Dimensioni consigliate: 400x400px - Formato: JPG o PNG - Viene mostrata nella sezione "Chi Sono" della homepage 3. **Hero Image**: Carica `hero-bg.jpg` in `uploads/images/` - Dimensioni: 1920x600px - Immagine di sfondo homepage ### Email con Gmail SMTP La piattaforma usa Gmail SMTP per inviare email in modo affidabile: 1. **Configurato di default** in `includes/config.php` 2. Inserisci le tue credenziali Gmail 3. Usa **Password per le app** (non la password Gmail normale) 4. Testa inviando una richiesta di reset password **Per disattivare SMTP** e usare `mail()` PHP: ```php define('USE_SMTP', false); // In config.php ``` --- ### Opzione 1: File Locali (Upload Diretto) β **RACCOMANDATO** 1. Nella creazione/modifica lezione, seleziona **File Locale** 2. Clicca su "Scegli file" e seleziona il video dal tuo PC 3. Il sistema carica automaticamente il file in: - `uploads/lessons/demo/` per lezioni gratuite - `uploads/lessons/pay/` per lezioni a pagamento 4. Formati supportati: MP4, WebM, OGG, MOV 5. β **Vantaggi**: - Upload automatico - Conversione automatica in MP4 se FFmpeg disponibile - Streaming protetto con divieto download - Controllo accessi basato su permessi utente 6. β οΈ Limiti: Dimensione massima upload dipende da `php.ini` (default ~2MB) **Per aumentare il limite di upload:** Modifica `php.ini`: ```ini upload_max_filesize = 500M post_max_size = 500M max_execution_time = 300 ``` **Conversione Automatica Video:** Se carichi video in formato diverso da MP4, il sistema: 1. Verifica se FFmpeg Γ¨ installato 2. Converte automaticamente il video in MP4 H.264 con codec AAC 3. Ottimizza per lo streaming web (fast start) 4. Sostituisce il file originale con quello convertito **Per installare FFmpeg:** ```bash # Ubuntu/Debian sudo apt-get install ffmpeg # CentOS/RHEL sudo yum install ffmpeg # Mac brew install ffmpeg ```t_max_size = 500M max_execution_time = 300 ``` ### Opzione 2: YouTube (Consigliato per Video Grandi) 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 3: Vimeo 1. Carica su Vimeo 2. Imposta privacy su "Nascosto" 3. Copia URL e usa come YouTube ### 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 --- ### 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 invio email con bottone nel profilo admin - [ ] Testa email di benvenuto alla registrazione - [ ] Converti tutti i video in MP4 H.264 (se necessario) - [ ] Testa streaming video protetto - [ ] Testa tutti i flussi di pagamento - [ ] Verifica che `includes/config.php` NON sia accessibile via web - [ ] **ELIMINA** `test_password.php` e `test_email.php` (rischio sicurezza!) 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/`: ### I video non si vedono - Verifica che l'URL sia corretto - Per YouTube/Vimeo: usa URL diretti al video - Per file locali caricati: controlla che esistano in `uploads/lessons/demo/` o `pay/` - Verifica permessi cartella uploads (755) - Per video grandi, verifica limiti upload in `php.ini` - **Se vedi schermo nero ma senti audio**: il video ha codec incompatibile - Vai su **Area Admin** β **π Converti Video** - Converti il video in MP4 H.264 - Oppure ricarica il video in formato MP4 giΓ codificato correttamente - Verifica nella console browser (F12) eventuali errori di caricamento --- ## π οΈ 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 - Verifica credenziali Gmail in `config.php` (SMTP_USERNAME e SMTP_PASSWORD) - Usa **Password per le app** Gmail (non la password normale) - Verifica che `USE_SMTP` sia `true` - Controlla la cartella spam del destinatario - Verifica log errori PHP per messaggi "SMTP Error" - Assicurati che il server permetta connessioni SMTP in uscita (porta 587) ### I video non si vedono - Verifica che l'URL sia corretto - Per YouTube/Vimeo: usa URL diretti al video - Per file locali caricati: controlla che esistano in `uploads/lessons/demo/` o `pay/` - Verifica permessi cartella uploads (755) - Per video grandi, verifica limiti upload in `php.ini` ### Errore durante upload video - Controlla `upload_max_filesize` e `post_max_size` in `php.ini` - Verifica che la cartella `uploads/lessons/` sia scrivibile - Assicurati che il formato sia supportato (MP4, WebM, OGG, MOV) - Le cartelle `demo/` e `pay/` vengono create automaticamente se non esistono ### La durata video non viene rilevata - Installa getID3 per estrazione automatica durata: - Con Composer: `composer install` - Manualmente (Linux/Mac): `bash install_getid3.sh` - Manualmente (Windows): `.\install_getid3.ps1` - Oppure usa ffmpeg/ffprobe (giΓ installato sulla maggior parte dei server) - Se non disponibile, inserisci manualmente la durata nel form ### 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 / Email non funzionano - Verifica che Python 3 sia installato: `python3 --version` - Controlla credenziali SMTP in `config.php` - Verifica che `send_email.py` abbia permessi esecuzione - Testa invio dal profilo admin: pulsante "π§ͺ Testa Invio Email" - Il token reset scade dopo 1 ora per sicurezza - Controlla log errori PHP per dettagli (`error_log()`) **Test manuale script Python:** ```bash cd /path/to/pilates-platform python3 send_email.py '{"to":"test@esempio.com","subject":"Test","html":"
Test email
"}' ``` **Errori comuni:** - `python3: command not found` β Installa Python 3 - `Authentication failed` β Verifica password applicazione Gmail - `Connection refused` β Controlla porta (587 per TLS, 465 per SSL) - `Script not found` β Verifica che `send_email.py` esista nella root del progetto - `Permission denied` β Su Linux: `chmod +x send_email.py` - Il token reset scade dopo 1 ora per sicurezza - Controlla log errori PHP per dettagli **Test manuale script Python:** ```bash cd /path/to/pilates-platform python3 send_email.py '{"to":"test@esempio.com","subject":"Test","html":"Test email
"}' ``` **Errori comuni:** - `python3: command not found` β Installa Python 3 - `Authentication failed` β Verifica password applicazione Gmail - `Connection refused` β Controlla porta (587 per TLS, 465 per SSL) --- ## π 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 β βββ process_payment.php # Elabora pagamento PayPal βββ stream_video.php # Streaming protetto video (verifica permessi) βββ convert_videos.php # Conversione batch video in MP4 H.264 βββ send_email.py # Script Python per invio email SMTP βββ test_password.php # Utility test hash password (debug) βββ test_email.php # Utility test invio email SMTP (debug) βββ README.md # Questo file βββ includes/ # File PHP condivisi β βββ config.php # Configurazione β βββ functions.php # Funzioni comuni β βββ logout.php # Script logout β βββ uploads/ # File caricati β βββ lessons/ # Video lezioni β β βββ demo/ # Video lezioni gratuite β β βββ pay/ # Video lezioni a pagamento β β βββ .htaccess # Protezione accesso diretto β βββ images/ # Logo e foto istruttrice β βββ thumbnails/ # Anteprime lezioni (future) β βββ user/ # Area utente β βββ dashboard.php # Dashboard utente β βββ catalog.php # Catalogo lezioni β βββ profile.php # Profilo utente β βββ index.php # Homepage pubblica con form contatti βββ contact.php # Gestione form richiesta lezioni live βββ 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) βββ test_email.php # Utility test invio email SMTP (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 ### Checklist Prossimi Passi Dopo l'installazione: - [ ] Cambia password admin (profilo o reset_admin_password.sql) - [ ] **Configura Gmail SMTP** (obbligatorio per recupero password) - [ ] Genera password applicazione Gmail - [ ] Inserisci credenziali SMTP in config.php - [ ] Testa invio email dal profilo admin - [ ] Testa recupero password - [ ] Testa email benvenuto registrazione - [ ] Installa FFmpeg (opzionale, per conversione video) - [ ] Configura PayPal Sandbox - [ ] Carica almeno 3 lezioni demo con video - [ ] Verifica che i video si vedano correttamente - [ ] Testa registrazione utente - [ ] Testa acquisto lezione (in sandbox) - [ ] Verifica streaming protetto video - [ ] Testa modifica lezioni esistenti - [ ] Personalizza colori e logo - [ ] Configura backup automatici database - [ ] Passa a produzione PayPal - [ ] Attiva HTTPS (certificato SSL) - [ ] Converti tutti i video in MP4 se necessario - [ ] **ELIMINA file di debug** (test_password.php, test_email.php) - [ ] Testa tutti i flussi su produzione - [ ] Lancia! π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 Gmail SMTP** (obbligatorio per recupero password) - [ ] Genera password applicazione Gmail - [ ] Inserisci credenziali SMTP in config.php - [ ] 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.