403Webshell
Server IP : 54.37.205.81  /  Your IP : 216.73.216.76
Web Server : nginx/1.22.1
System : Linux vps-249481fa 6.1.0-50-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.176-1 (2026-07-02) x86_64
User : debian ( 1000)
PHP Version : 8.2.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/cameramodaitalia.it/public/wp-content/themes/camera-regionale-moda/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/cameramodaitalia.it/public/wp-content/themes/camera-regionale-moda/contatti.php
<?php
/**
 * Template Name: Contatti (tema blu/bianco) + CV & marketing
 * Description: Pagina contatti con header/footer del tema, layout pulito (no conflitti), upload PDF, consenso marketing, invio a info@cameramodaitalia.it
 */
defined('ABSPATH') || exit;

get_header();

// ===== Config =====
$recipient_email = 'info@cameramodaitalia.it';
$max_file_size   = 5 * 1024 * 1024; // 5MB
$allowed_mimes   = ['pdf' => 'application/pdf'];

// ===== Logica invio =====
$sent_ok = false;
$errors  = [];
$old     = ['nome'=>'','email'=>'','telefono'=>'','oggetto'=>'','messaggio'=>'','privacy'=>'','marketing'=>''];
$uploaded_path = null;

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  // Honeypot
  if (!empty($_POST['company'])) {
    $errors[] = 'Richiesta non valida.';
  } else {
    // Nonce
    if (!isset($_POST['_crmi_nonce']) || !wp_verify_nonce($_POST['_crmi_nonce'], 'crmi_contatti')) {
      $errors[] = 'Token non valido. Ricarica la pagina.';
    }

    // Sanitize
    $old['nome']      = sanitize_text_field($_POST['nome'] ?? '');
    $old['email']     = sanitize_email($_POST['email'] ?? '');
    $old['telefono']  = sanitize_text_field($_POST['telefono'] ?? '');
    $old['oggetto']   = sanitize_text_field($_POST['oggetto'] ?? '');
    $old['messaggio'] = sanitize_textarea_field($_POST['messaggio'] ?? '');
    $old['privacy']   = isset($_POST['privacy']) ? '1' : '';
    $old['marketing'] = isset($_POST['marketing']) ? '1' : '';

    // Validazioni base
    if ($old['nome'] === '')                         $errors[] = 'Inserisci il nome.';
    if ($old['email'] === '' || !is_email($old['email'])) $errors[] = 'Email non valida.';
    if ($old['messaggio'] === '')                    $errors[] = 'Scrivi un messaggio.';
    if ($old['privacy'] !== '1')                     $errors[] = 'Accetta l’informativa privacy.';

    // Validazione upload (opzionale)
    if (!empty($_FILES['cv']['name'] ?? '')) {
      $file = $_FILES['cv'];

      if (!empty($file['error']) && $file['error'] !== UPLOAD_ERR_OK) {
        $errors[] = 'Errore durante il caricamento del file (codice '.$file['error'].').';
      } else {
        if ((int)$file['size'] > $max_file_size) {
          $errors[] = 'Il file supera la dimensione massima di 5MB.';
        } else {
          $check = wp_check_filetype_and_ext($file['tmp_name'], $file['name'], $allowed_mimes);
          if (!$check['ext'] || !$check['type'] || $check['ext'] !== 'pdf') {
            $errors[] = 'Carica un PDF valido.';
          }
        }
      }
    }

    // Se ok, prepara upload e invio
    $attachments = [];
    if (!$errors && !empty($_FILES['cv']['name'])) {
      require_once ABSPATH . 'wp-admin/includes/file.php';
      $uploaded = wp_handle_upload($_FILES['cv'], [
        'test_form' => false,
        'mimes'     => $allowed_mimes,
      ]);
      if (!empty($uploaded['error'])) {
        $errors[] = 'Errore upload: ' . $uploaded['error'];
      } elseif (!empty($uploaded['file'])) {
        $uploaded_path = $uploaded['file'];
        $attachments[] = $uploaded_path;
      } else {
        $errors[] = 'Impossibile completare l’upload del file.';
      }
    }

    if (!$errors) {
      $subject = $old['oggetto'] !== '' ? $old['oggetto'] : 'Nuovo messaggio dal form contatti';
      $body  = "Hai ricevuto un nuovo messaggio dal form contatti:\n\n";
      $body .= "Nome: {$old['nome']}\n";
      $body .= "Email: {$old['email']}\n";
      $body .= "Telefono: {$old['telefono']}\n";
      $body .= "Oggetto: {$old['oggetto']}\n";
      $body .= "Consenso marketing: " . ($old['marketing'] === '1' ? 'Sì' : 'No') . "\n\n";
      $body .= "Messaggio:\n{$old['messaggio']}\n\n";
      $body .= "Pagina: " . get_permalink() . "\n";

      $headers = [
        'Content-Type: text/plain; charset=UTF-8',
        'Reply-To: ' . $old['nome'] . ' <' . $old['email'] . '>',
        'From: Camera Moda Italia <' . $recipient_email . '>',
      ];

      $sent_ok = wp_mail($recipient_email, $subject, $body, $headers, $attachments);

      // Pulizia file temporaneo (GDPR-friendly)
      if ($uploaded_path && file_exists($uploaded_path)) {
        @unlink($uploaded_path);
      }

      if ($sent_ok) {
        $old = ['nome'=>'','email'=>'','telefono'=>'','oggetto'=>'','messaggio'=>'','privacy'=>'','marketing'=>''];
      } else {
        $errors[] = 'Errore durante l’invio. Riprova più tardi.';
      }
    }
  }
}

// ID univoco form
$form_id = 'crmi-form-' . wp_generate_password(6, false, false);
?>

<style>
  /* ===== Layout scoped: NIENTE classi generiche per evitare sfasamenti ===== */
  .crmi-contact { --brand: var(--wp--preset--color--primary, #0d47a1); --ink:#0f172a; --muted:#64748b; --card:#fff; --ring:#e5e7eb; }
  .crmi-contact * { box-sizing: border-box; }
  .crmi-shell { max-width: 1140px; margin: 0 auto; padding: 20px; }
  .crmi-hero {
    background: linear-gradient(135deg, var(--brand), #0b3a85);
    color: #fff; border-radius: 18px; padding: 32px 24px; margin: 10px 0 22px; }
  .crmi-hero h1 { margin: 0 0 6px; font-size: clamp(26px, 4vw, 40px); }
  .crmi-hero p { margin: 0; opacity: .95; }

  .crmi-grid { display: grid; gap: 22px; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); align-items: start; }
  .crmi-card { background: var(--card); border: 1px solid var(--ring); border-radius: 14px; padding: 22px; }
  .crmi-card h2 { margin: 0 0 12px; color: var(--brand); font-size: 20px; }

  .crmi-form { display: grid; gap: 14px; }
  .crmi-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; } /* niente .row del tema */
  .crmi-label { font-weight: 600; font-size: 14px; color: var(--ink); display:block; margin-bottom:6px; }
  .crmi-input, .crmi-textarea, .crmi-file {
    width: 100%; padding: 12px 14px; font-size: 16px; color: var(--ink);
    border: 1px solid var(--ring); border-radius: 10px; background: #fff;
    outline: none; transition: border-color .2s, box-shadow .2s;
  }
  .crmi-input:focus, .crmi-textarea:focus, .crmi-file:focus { border-color: var(--brand); box-shadow: 0 0 0 4px rgba(13,71,161,.15); }
  .crmi-textarea { min-height: 140px; resize: vertical; }

  .crmi-actions { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
  .crmi-btn {
    appearance: none; border: none; cursor: pointer; background: var(--brand); color: #fff; font-weight: 700;
    padding: 12px 18px; border-radius: 10px; transition: filter .2s, transform .05s; }
  .crmi-btn:hover { filter: brightness(1.05); }
  .crmi-btn:active { transform: translateY(1px); }
  .crmi-muted { color: var(--muted); font-size: 14px; }
  .crmi-help { font-size: 13px; color: var(--muted); margin-top: -4px; }

  .crmi-alert { padding: 12px 14px; border-radius: 10px; margin-bottom: 14px; font-weight: 600; }
  .crmi-alert-ok { background: #e6f2ff; color: #0b3a85; border: 1px solid #bfd7ff; }
  .crmi-alert-err { background: #fff2f2; color: #8a1320; border: 1px solid #ffd6d6; }

  .crmi-list { list-style: none; margin: 0; padding: 0; }
  .crmi-list li { padding: 10px 0; border-bottom: 1px dashed #eaeaea; display: grid; grid-template-columns: 140px 1fr; gap: 10px; }
  .crmi-list li:last-child { border-bottom: none; }

  .crmi-map { border-radius: 12px; overflow: hidden; border: 1px solid var(--ring); margin-top: 12px; }
  .crmi-map iframe { width: 100%; height: 240px; border: 0; display:block; }

  /* Honeypot nascosto */
  .crmi-hp { position: absolute !important; left: -50000px !important; }

  @media (max-width: 980px) {
    .crmi-grid { grid-template-columns: 1fr; }
    .crmi-list li { grid-template-columns: 1fr; }
    .crmi-row { grid-template-columns: 1fr; }
  }
</style>

<main class="crmi-contact">
  <div class="crmi-shell">
    <section class="crmi-hero" role="banner" aria-label="Contattaci">
      <h1><?php echo esc_html(get_the_title() ?: 'Contattaci'); ?></h1>
      <p>Per informazioni su eventi, corsi e partnership scrivici: rispondiamo il prima possibile.</p>
    </section>

    <div class="crmi-grid" role="region" aria-label="Contatti e modulo">
      <div class="crmi-card" aria-labelledby="form-title">
        <h2 id="form-title">Scrivici</h2>

        <?php if ($sent_ok): ?>
          <div class="crmi-alert crmi-alert-ok" role="status" aria-live="polite">✅ Messaggio inviato con successo.</div>
        <?php endif; ?>

        <?php if ($errors): ?>
          <div class="crmi-alert crmi-alert-err" role="alert" aria-live="assertive">
            ❌ Controlla i seguenti errori:
            <ul>
              <?php foreach ($errors as $e): ?>
                <li><?php echo esc_html($e); ?></li>
              <?php endforeach; ?>
            </ul>
          </div>
        <?php endif; ?>

        <form class="crmi-form" id="<?php echo esc_attr($form_id); ?>" method="post" action="<?php echo esc_url(get_permalink()); ?>" enctype="multipart/form-data" novalidate>
          <?php wp_nonce_field('crmi_contatti', '_crmi_nonce'); ?>

          <!-- Honeypot -->
          <div class="crmi-hp">
            <label>Company <input type="text" name="company" tabindex="-1" autocomplete="off"></label>
          </div>

          <div class="crmi-row">
            <div>
              <label class="crmi-label" for="nome">Nome e cognome *</label>
              <input class="crmi-input" id="nome" name="nome" type="text" required autocomplete="name" value="<?php echo esc_attr($old['nome']); ?>">
            </div>
            <div>
              <label class="crmi-label" for="email">Email *</label>
              <input class="crmi-input" id="email" name="email" type="email" required autocomplete="email" value="<?php echo esc_attr($old['email']); ?>">
            </div>
          </div>

          <div class="crmi-row">
            <div>
              <label class="crmi-label" for="telefono">Telefono</label>
              <input class="crmi-input" id="telefono" name="telefono" type="tel" inputmode="tel" autocomplete="tel" value="<?php echo esc_attr($old['telefono']); ?>">
            </div>
            <div>
              <label class="crmi-label" for="oggetto">Oggetto</label>
              <input class="crmi-input" id="oggetto" name="oggetto" type="text" value="<?php echo esc_attr($old['oggetto']); ?>">
            </div>
          </div>

          <div>
            <label class="crmi-label" for="messaggio">Messaggio *</label>
            <textarea class="crmi-textarea" id="messaggio" name="messaggio" required placeholder="Raccontaci come possiamo aiutarti..."><?php echo esc_textarea($old['messaggio']); ?></textarea>
          </div>

          <div>
            <label class="crmi-label" for="cv">Allega CV (PDF, max 5MB)</label>
            <input class="crmi-file" id="cv" name="cv" type="file" accept="application/pdf">
            <p class="crmi-help">Carica solo file in formato PDF. Il file viene eliminato dopo l’invio.</p>
          </div>

          <div class="crmi-actions">
            <label class="crmi-muted">
              <input type="checkbox" name="marketing" value="1" <?php checked($old['marketing'], '1'); ?>>
              Acconsento a ricevere comunicazioni marketing (eventi, corsi, novità).
            </label>
          </div>

          <div class="crmi-actions">
            <label class="crmi-muted">
              <input type="checkbox" name="privacy" value="1" <?php checked($old['privacy'], '1'); ?> required>
              Ho letto l’<a href="<?php echo esc_url(home_url('/privacy-policy')); ?>" target="_blank" rel="noopener">informativa privacy</a>.
            </label>
          </div>

          <div class="crmi-actions">
            <button class="crmi-btn" type="submit">Invia</button>
            <span class="crmi-muted">* campi obbligatori</span>
          </div>
        </form>
      </div>

      <aside class="crmi-card">
        <h2>Contatti</h2>
        <ul class="crmi-list" aria-label="Informazioni di contatto">
          <li><strong>Email</strong><span><?php echo esc_html($recipient_email); ?></span></li>
          <li><strong>Telefono</strong><span>+39 055 747 8076</span></li>
          <li><strong>Indirizzo</strong><span>Via Pier Capponi,42 Firenze Italia</span></li>
        </ul>

        <div class="crmi-map">
          <!-- Sostituisci src con la tua mappa -->
          <iframe loading="lazy" referrerpolicy="no-referrer-when-downgrade"
                  src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d11586.0!2d10.0!3d43.9!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!5e0!3m2!1sit!2sit!4v1699999999"></iframe>
        </div>
      </aside>
    </div>
  </div>
</main>

<?php get_footer(); ?>

Youez - 2016 - github.com/yon3zu
LinuXploit