2017-08-12 21 views
1

我在网上发现了这个代码,它的作用就像一个魅力只有一件事......我也在尝试添加一个电话号码,但每次都收到错误。 ..我会想象,我只是将它添加到身体,但每次我尝试,它失败。即时通讯不确定我做错了什么。我相当新的PHP,所以如果有人可以向我解释为什么会发生这种情况,那将不胜感激。内容被保存到一个文件夹,但它似乎没有该文件夹被刷新一旦发送电子邮件...:\当我刷新我的页面时,我的电子邮件正在重新发送

<?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

成功后,您需要重定向的页面。 –

+0

提交表单后,如果通过刷新按钮或“F5”键刷新页面,表单将再次提交,因为该时间页面的提交值由您提交的表单提供。 – GYaN

+1

问题标题与文中描述的内容之间的关系在哪里? – arkascha

回答

1

你必须重定向当前页面上的页面邮寄消息后,你的问题将得到解决。

使用

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

感谢您的及时回复。然而,我仍然有麻烦。我试着实现这个代码,我收到了同样的问题。 :(我试图取消链接(“附件/”。$ _FILES [“tmp_name”] [“name”]);但那不会工作以太文件仍然在我的附件文件夹:\ – Whatwhat

+0

尝试重定向其他页面,如标题('Location:abc.php'); –

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

我也试过这个,但是文件夹中仍然有附件,只要文件夹中还有附件,当页面刷新时,它就会生成一个电子邮件... :(四尝试删除它,但我似乎无法得到它的工作D: – Whatwhat

+0

好吧!我有这个方法工作!非常感谢你!我做了标题('Location:blahblahblah.php');谢谢你这么多!:D !!!! – Whatwhat

相关问题