Francesco Picone adf6b95444 fix schema.sql
2025-12-06 17:05:43 +01:00
fix
2025-12-03 18:35:21 +01:00
fix
2025-12-03 18:35:21 +01:00
2025-12-06 17:05:43 +01:00
2025-12-06 15:25:52 +01:00
fix
2025-12-03 18:35:21 +01:00
fix
2025-12-03 18:35:21 +01:00
fix
2025-12-03 18:35:21 +01:00
fix
2025-12-03 18:35:21 +01:00
fix
2025-12-03 18:35:21 +01:00
fix
2025-12-03 18:35:21 +01:00
fix
2025-12-03 18:35:21 +01:00
fix
2025-12-03 18:35:21 +01:00
fix
2025-12-03 18:35:21 +01:00

🧘‍♀️ 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

# 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

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

define('SITE_URL', 'http://localhost/pilates-platform'); // URL del sito
define('ADMIN_EMAIL', 'tua-email@esempio.com');          // Tua email

Sicurezza

// 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
  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
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)

# Rendi scrivibile la cartella uploads
chmod 755 uploads/

Passo 5: Avvia il Server

Con PHP Built-in (per sviluppo)

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 AdminGestione LezioniNuova 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 AdminGestione 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
  1. Dashboard UtenteCatalogo
  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. DashboardLe Mie Lezioni
  2. Clicca su Guarda (per video) o Partecipa (per live)
  3. Accesso illimitato per sempre!

Modificare il Profilo

  1. DashboardProfilo
  2. Puoi cambiare:
    • Nome e Cognome
    • Email
    • Telefono
    • Password

🎨 Personalizzazione

Colori

Apri assets/css/style.css e modifica le variabili CSS:

:root {
    --primary-color: #4A90E2;        /* Celeste principale */
    --primary-light: #7AB8F5;        /* Celeste chiaro */
    --primary-dark: #357ABD;         /* Celeste scuro */
    --secondary-color: #E8F4F8;      /* Celeste molto chiaro */
}

Sostituisci il testo "Pilates Studio" in index.php e negli altri file con:

<img src="assets/images/logo.png" alt="Logo" class="logo">

Email

Per usare SMTP invece di mail() PHP, decomenta in includes/config.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:
define('AWS_ACCESS_KEY', 'tua-key');
define('AWS_SECRET_KEY', 'tua-secret');
define('AWS_REGION', 'eu-west-1');
define('AWS_BUCKET', 'pilates-videos');
  1. Carica video su S3
  2. Usa URL S3 nelle lezioni

💳 Configurare PayPal

Modalità Test (Sandbox)

  1. Vai su 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
  2. Crea app Live
  3. Copia credenziali Live
  4. In config.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/:

# 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):

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.

Description
No description provided
Readme 140 KiB
Languages
PHP 90.2%
CSS 6.8%
Python 2.3%
JavaScript 0.7%