+ Rispondi alla Discussione
Risultati da 1 a 5 di 5

Rimuovere "dati in memoria" dopo invio mail

Ultimo Messaggio di eleumas il:
  1. #1
    User
    Data Registrazione
    Mar 2014
    Località
    Siena
    Messaggi
    181

    Rimuovere "dati in memoria" dopo invio mail

    Ciao a tutti.
    Ho preparato un form e faccio l'invio della mail tramite php. Fino a qui nulla di strano.
    Ho notato però che ogni volta che ricarico la pagina la mail viene inviata nuovamente, come se i dati inseriti nel form rimanessero in memoria.
    Come faccio a risolvere questo problema? Qualcuno potrebbe aiutarmi per favore? Grazie.

  2. #2
    User L'avatar di DashmaL
    Data Registrazione
    Dec 2016
    Località
    Londra
    Messaggi
    22
    Aggiungi DashmaL su Linkedin
    Ciao,

    Potresti darci un esempio del code per favore? L'ipotesi piu' probabile e' che tu stia utilizzando la stessa pagina per compilare il form ed inviare l'email, e che i dati siano cached dal browser.
    Yorkshire.

  3. #3
    User
    Data Registrazione
    Mar 2014
    Località
    Siena
    Messaggi
    181
    Ciao e grazie per avermi risposto. la tua diagnosi mi sembra esatta!L'unica cosa che ho notato è che se cancello la cache del browser il problema rimane. Ti posto il mio codice.
    Codice PHP:
    <?php
    if(isset($_POST['submit'])){

      
    $name = !empty($_POST['name'])?$_POST['name']:'';
      
    $email = !empty($_POST['email'])?$_POST['email']:'';
      
    $city = !empty($_POST['city'])?$_POST['city']:'';
      
    $nationality = !empty($_POST['nationality'])?$_POST['nationality']:'';
      
    $location = !empty($_POST['location'])?$_POST['location']:'';
      
    $pax = !empty($_POST['pax'])?$_POST['pax']:'';
      
    $message = !empty($_POST['message'])?$_POST['message']:'';
      
    $checkbox = !empty($_POST['checkbox'])?$_POST['checkbox']:'no';

      
    // corpo della mail
      
    $to 'info@xxxxxx.com'// <--- inserire e-mail destinatario
      
    $subject "Ti ha scritto dal tuo sito:  $name";
      
    $htmlContent "
      <ul style='list-style: none; padding-left: 0;'>
      <li style='margin: 0 0 15px 0;'>Questi sono i dettagli del messaggio:</li>
      <li style='margin: 0 0 5px 0;'><b>Nome:</b> "
    .$name."</li>
      <li style='margin: 0 0 5px 0;'><b>E-mail:</b> "
    .$email."</li>
      <li style='margin: 0 0 5px 0;'><b>Città:</b> "
    .$city."</li>
      <li style='margin: 0 0 5px 0;'><b>Nazionalità:</b> "
    .$nationality."</li>
      <li style='margin: 0 0 5px 0;'><b>Luogo in Italia:</b> "
    .$location."</li>
      <li style='margin: 0 0 5px 0;'><b>Persone:</b> "
    .$pax."</li>
      <li style='margin: 0 0 5px 0;'><b>Messaggio:</b> "
    .$message."</li>
      <li style='margin: 0 0 5px 0;'><b>Accettazione Privacy:</b> "
    .$checkbox."</li>
      </ul>
      "
    ;

      
    // impostare sempre content-type quando si invia una mail in HTML
      
    $headers "MIME-Version: 1.0" "\r\n";
      
    $headers .= "Content-type:text/html;charset=UTF-8" "\r\n";

      
    // headers
      
    $headers .= 'From:'.$name.' <'.$email.'>' "\r\n";

      
    // invio mail
      
    @mail($to,$subject,$htmlContent,$headers);

      
    $succMsg '<script>
      UIkit.notify({
        message : "Message sent!",
        status  : "success",
        timeout : 0,
        pos     : "top-center"
      });
      </script>'
    ;

      
    $name '';
      
    $email '';
      
    $city '';
      
    $nationality '';
      
    $location '';
      
    $pax '';
      
    $message '';
      
    $checkbox '';
    }

    else {
      
    $errMsg '<script>
      UIkit.notify({
        message : "Message not sent!",
        status  : "danger",
        timeout : 0,
        pos     : "top-center"
      });
      </script>'
    ;
    }

    ?>

    <?php if(!empty($errMsg)): ?><div class="errMsg"><?php echo $errMsg?></div><?php endif; ?>
    <?php 
    if(!empty($succMsg)): ?><div class="succMsg"><?php echo $succMsg?></div><?php endif; ?>

    Grazie per l'aiuto che mi stai dando.
    Ultima modifica di eleumas; 25-01-17 alle 14:35

  4. #4
    User L'avatar di DashmaL
    Data Registrazione
    Dec 2016
    Località
    Londra
    Messaggi
    22
    Aggiungi DashmaL su Linkedin
    Ciao,

    if(isset($_POST['submit'])){
    Quando ricarichi la pagina, di fatto re-invii una richiesta identica. Quindi, re-invii una richiesta di tipo POST che viene catturata in $_POST, eseguendo quindi lo script php.

    La soluzione piu' semplice e' di re-indirizzare l'utente verso un'altra pagina.

    Ps: Io leverai licenseKey e applicationId dal post.
    Yorkshire.

  5. #5
    User
    Data Registrazione
    Mar 2014
    Località
    Siena
    Messaggi
    181
    Ti ringrazio per l'avvertimento. La licenseKey e applicationId non è roba mia. Me li ha inseriti in automatico il forum. Ho eliminato la parte HTML altrimenti non me li toglieva.

    Tornando a noi. Dovrei creare una pagina apposita solo per scriverci: "complimenti hai inviato il tuo messaggio!". E' una cosa che non amo fare particolarmente.

    Soluzioni migliori non ce ne sono? Lo script originale faceva anche la verifica del re-captcha di google e non mi faceva "questo verso".

+ Rispondi alla Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.