2017-08-12 1 views
1

J'ai trouvé ce code en ligne, et ça fonctionne comme un charme seulement pour une chose ... J'essayais aussi d'ajouter un numéro de téléphone mais je continue à recevoir une erreur à chaque fois. .. J'imagine que je voudrais juste l'ajouter au corps mais chaque fois que j'essaye de, il échoue. Je ne suis pas vraiment sûr de ce que je fais mal. Im assez nouveau à PHP, donc si quelqu'un pouvait m'expliquer pourquoi cela se passe, ce serait grandement apprécié. Le contenu est stocké dans un dossier, mais il ne semble pas que le dossier est actualisé une fois que le message est envoyé ...: \Mon e-mail envoie à nouveau quand j'actualise ma page

<?php 
$msg = ""; 

if (isset($_POST['submit'])) { 

    require 'phpmailer/PHPMailerAutoload.php'; 

    function sendemail($to, $from, $fromName, $body, $attachment = "") { 
     $mail = new PHPMailer(); 
     $mail->setFrom($from, $fromName); 
     $mail->addAddress($to); 
     $mail->addAttachment($attachment); 
     $mail->Subject = 'Contact Form - Email'; 
     $mail->Body = $body; 
     $mail->isHTML(false); 

     return $mail->send(); 
    } 

    $name = $_POST['username']; 
    $email = $_POST['email']; 
    $body = $_POST['body']; 

    $file = "attachment/" . basename($_FILES['attachment']['name']); 
    if (move_uploaded_file($_FILES['attachment']['tmp_name'], $file)) { 
     if (sendemail('[email protected]', $email, $name, $body, $file)) { 
      $msg = 'Email sent!'; 

     } else 
      $msg = 'Email failed!'; 
    } else 
     $msg = "Please check your attachment!"; 
} 
?> 
<html> 
<head> 
    <title>Contact</title> 
</head> 
<style type="text/css"> 
    input, textarea { 
     width:250px; 
     height: 27px; 
     margin-bottom: 10px; 
    } 

    textarea { 
     height: 200px; 
     width: 100%; 
     resize: vertical; 
    } 

    body { 
     text-align: center; 
     margin-top: 250px; 
    } 
</style> 
<body> 
    <img src="images/logo.png"><br><br> 
    <form method="post" action="index.php" enctype="multipart/form-data"> 
     <input type="text" name="username" placeholder="Name..." required><br> 
     <input type="email" name="email" placeholder="Email..." required><br> 
     <textarea name="body" placeholder="Message..." required></textarea><br> 
     <input type="file" name="attachment" required><br> 
     <input type="submit" name="submit" value="Send Email"> 
    </form> 
    <br><br> 
    <?php echo $msg; ?> 
</body> 

+0

Après le succès, vous avez besoin de rediriger la page. –

+0

Après la soumission du formulaire, si vous actualisez la page par le bouton d'actualisation ou la touche "F5", le formulaire sera à nouveau envoyé, car les valeurs de la page sont fournies par le formulaire que vous avez envoyé. – GYaN

+1

Où se situe le lien entre le titre de vos questions et ce que vous décrivez dans le texte? – arkascha

Répondre

1

Après un message envoyé de courrier que vous devez rediriger votre page sur la page en cours , votre problème sera résolu.

utilisation

header('Location: '.$_SERVER['REQUEST_URI']); 
+0

Merci pour la réponse rapide. J'ai toujours des problèmes cependant. J'ai essayé d'implémenter ce code et je reçois le même problème. :(J'ai essayé unlink ("pièce jointe /". $ _FILES ["tmp_name"] ["nom"]), mais cela ne fonctionnera pas.Les fichiers sont toujours dans mon dossier de pièces jointes: \ – Whatwhat

+0

essayer de rediriger sur une autre page comme en-tête ('Location: abc.php'); –

0
header("Location: http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"); 
exit; 
+0

J'ai également essayé ceci, mais le dossier contient toujours les pièces jointes, donc tant qu'il y a encore une pièce jointe dans le dossier, quand la page est rafraichie, elle génère un email ... :(iv essayé de le supprimer, mais je ne peux pas sembler le faire fonctionner D: – Whatwhat

+0

OK! J'ai obtenu cette méthode pour travailler! merci beaucoup! Je l'ai fait en-tête ('Location: blahblahblah.php'); TU AS TELLEMENT!: D !!!! – Whatwhat