diff --git a/README.md b/README.md index 476415b..f941bcf 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ Piattaforma completa per vendere videolezioni e lezioni live di Pilates. Svilupp ### 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 @@ -92,7 +94,11 @@ 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 +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 @@ -486,7 +492,8 @@ pilates-platform/ │ ├── catalog.php # Catalogo lezioni │ └── profile.php # Profilo utente │ -├── index.php # Homepage pubblica +├── 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) @@ -494,6 +501,7 @@ pilates-platform/ ├── 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 ``` diff --git a/assets/css/style.css b/assets/css/style.css index a7c41bc..fb982d3 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -676,6 +676,101 @@ select.form-control { margin-top: var(--spacing-md); } +/* ============================================ + SEZIONE CONTATTI + ============================================ */ + +.contact-section { + padding: var(--spacing-2xl) 0; + background: var(--white); +} + +.contact-content { + display: grid; + grid-template-columns: 1fr 1fr; + gap: var(--spacing-2xl); + align-items: start; +} + +.contact-text h2 { + margin-bottom: var(--spacing-md); +} + +.contact-text p { + color: var(--gray-700); + font-size: 1.1rem; + margin-bottom: var(--spacing-xl); +} + +.contact-info { + display: flex; + flex-direction: column; + gap: var(--spacing-lg); +} + +.contact-item { + display: flex; + align-items: center; + gap: var(--spacing-md); + padding: var(--spacing-md); + background: var(--secondary-color); + border-radius: var(--radius-md); + transition: all var(--transition-base); +} + +.contact-item:hover { + background: var(--primary-light); + transform: translateX(5px); +} + +.contact-icon { + font-size: 2rem; + flex-shrink: 0; +} + +.contact-item div { + flex: 1; +} + +.contact-item strong { + display: block; + color: var(--primary-color); + margin-bottom: 0.25rem; + font-size: 0.875rem; +} + +.contact-item a { + color: var(--gray-800); + text-decoration: none; + font-weight: 500; +} + +.contact-item a:hover { + color: var(--primary-color); +} + +.contact-form-wrapper { + background: var(--gray-100); + padding: var(--spacing-xl); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-md); +} + +.contact-form h3 { + color: var(--primary-color); + margin-bottom: var(--spacing-lg); + text-align: center; +} + +.contact-form .form-group { + margin-bottom: var(--spacing-md); +} + +.contact-form textarea { + resize: vertical; + min-height: 120px; +} + /* ============================================ RESPONSIVE ============================================ */ @@ -750,6 +845,16 @@ select.form-control { max-width: 300px; } + /* Sezione contatti */ + .contact-content { + grid-template-columns: 1fr; + gap: var(--spacing-xl); + } + + .contact-form-wrapper { + padding: var(--spacing-lg); + } + /* Tabelle responsive */ .table-container { overflow-x: auto; diff --git a/contact.php b/contact.php new file mode 100644 index 0000000..cf9f234 --- /dev/null +++ b/contact.php @@ -0,0 +1,161 @@ + + + + + +
+
+

📅 Nuova Richiesta Lezione Live

+
+
+

Hai ricevuto una nuova richiesta di contatto per una lezione live:

+ +
+ 👤 Nome: " . htmlspecialchars($name) . " +
+ + + + " . (!empty($phone) ? " + + " : "") . " + +
+

💬 Messaggio:

+

" . nl2br(htmlspecialchars($message)) . "

+
+ +

+ Azioni suggerite:
+ • Rispondi direttamente via email
+ " . (!empty($phone) ? "• Contatta telefonicamente al numero indicato
" : "") . " + • Verifica disponibilità sul calendario +

+
+ +
+ + +"; + +// Invia email all'amministratore +if (send_email(ADMIN_EMAIL, $subject, $email_body)) { + // Email di conferma al mittente (opzionale) + $confirm_subject = "Richiesta Ricevuta - " . SITE_NAME; + + $confirm_body = " + + + + + +
+
+

✅ Richiesta Ricevuta

+
+
+

Ciao " . htmlspecialchars($name) . ",

+ +

Grazie per aver richiesto informazioni sulle nostre lezioni live!

+ +

Ho ricevuto il tuo messaggio e ti risponderò il prima possibile, generalmente entro 24 ore.

+ +

+ Il tuo messaggio:
+ " . nl2br(htmlspecialchars($message)) . " +

+ +

Nel frattempo, puoi esplorare le nostre videolezioni disponibili sul sito.

+ +

A presto,
+ " . SITE_NAME . "

+
+
+ + + "; + + send_email($email, $confirm_subject, $confirm_body); + + // Log attività + log_activity(null, 'contact_form', "Richiesta contatto da: $name ($email)"); + + set_flash_message('success', '✅ Messaggio inviato con successo! Ti risponderemo al più presto.'); +} else { + set_flash_message('error', '❌ Errore durante l\'invio del messaggio. Riprova più tardi o contattaci direttamente via email.'); +} + +header('Location: index.php#contact'); +exit; +?> diff --git a/includes/config.php b/includes/config.php index 972b2f6..586e0c4 100644 --- a/includes/config.php +++ b/includes/config.php @@ -24,6 +24,10 @@ define('SITE_NAME', 'Pilates Studio'); define('SITE_URL', 'http://localhost/pilates-platform'); // Modifica con il tuo dominio in produzione define('ADMIN_EMAIL', 'admin@pilatesstudio.com'); // Email amministratore +// Contatti opzionali (lascia vuoto se non vuoi mostrarli) +define('CONTACT_PHONE', ''); // Es: '+39 123 456 7890' +define('CONTACT_WHATSAPP', ''); // Es: '+39 123 456 7890' (numero con prefisso internazionale) + // ============================================ // CONFIGURAZIONE SICUREZZA // ============================================ diff --git a/index.php b/index.php index d48999b..159c4d9 100644 --- a/index.php +++ b/index.php @@ -38,6 +38,7 @@ $demo_lessons = get_demo_lessons();

Pilates Studio