PHP邮件发件人详细信息+;JS弹出窗口

PHP邮件发件人详细信息+;JS弹出窗口,php,javascript,file-upload,phpmailer,unlink,Php,Javascript,File Upload,Phpmailer,Unlink,我使用PHPMailer为一个静态网站制作了一个带有附件的表单。它工作正常,几乎完美,但我仍然有一些怀疑。我想问你,你是否能很好地向我解释一些我不太懂的东西,并在最后一部分帮助我。提前谢谢 (一) 用于上载我使用的文件 $uploaddir = './'; $uploadfile = $uploaddir . basename($_FILES['attachment']['name']); if (move_uploaded_file($_FILES['attachment']['tmp_

我使用PHPMailer为一个静态网站制作了一个带有附件的表单。它工作正常,几乎完美,但我仍然有一些怀疑。我想问你,你是否能很好地向我解释一些我不太懂的东西,并在最后一部分帮助我。提前谢谢

(一) 用于上载我使用的文件

$uploaddir  = './'; 
$uploadfile = $uploaddir . basename($_FILES['attachment']['name']);

if (move_uploaded_file($_FILES['attachment']['tmp_name'], $uploadfile)) {
    echo "Success\n";
} else {
    echo "Failed.\n";
但我真的不明白。第一行是文件上传的目录,我知道了。是否第二次上载文件本身(到我在html字段name=“priloha”的第一行选择的目录)?我真的不理解第三(第四)行,这是必要的,我不知道为什么。我从PHP手册中得到了这段代码,只是对它进行了一些编辑。如果我删除第四行(整个move_上传的文件部分),表单就不起作用,我唯一能做的就是删除echos,留下空的{}。为什么?如果它只是移动一个文件,为什么我需要移动它?我在PHPManual这里读到了它,我不知道为什么需要使用这个函数。我怎样才能离开这个条件,让它只是移动上传的文件(…)

2) 还有一件事是这段代码

if(!$mail->Send()) {
     echo '<script type="text/javascript">alert("Error sending form!");</script>'; 
     } 
     else 
       {
       echo '<script type="text/javascript">alert("The form has been sent!");</script>';     
       }
谢谢你的回复,很抱歉浪费了你的时间。我的工作没有要求我的表格,我只是希望它几乎是完美的。我花了两天的时间做这个表单,这是我第一次“真正”接触PHP,对我来说并不容易。我知道这可以在一个小时内完成,如果我知道我以前需要的一切,所以我想绝对清楚这一点,以便下次快点。感谢您

1)移动作为临时文件首次上载的文件时,需要移动上载的文件,但在本例中,该文件用作bool,如果文件未正确上载,则返回false!可能它不起作用,因为您忘记删除流控制语句中的其他内容

您应该这样编辑它:

   //if (move_uploaded_file($_FILES['attachment']['tmp_name'], //$uploadfile)) {
   //    echo "Success\n";
   //} else {
   //    echo "Failed.\n";
这样你就可以把你不需要的东西都注释掉!它应该很好用

2) 重定向取决于标题(请检查),但它可能是在html表单send中设置的(“操作”值)

如果提交表单将您带到该脚本中的脚本“send.php”,您可以在其末尾添加以下行:

if(!$mail->Send()) {
  echo '<script type="text/javascript">alert("Došlo k chybě při odesílání formuláře!");</script>'; 
  echo '<script type="text/javascript">window.location ="./";</script>';
  header( "refresh:2;url=first_script_name.php" );
}

这是使用php删除文件的标准方法(许多人寻找delete()函数,他们还编写了一个虚拟的手动页面来重定向寻找取消链接函数的人!;)

谢谢,现在我得到了更好的结果。当我试图删除条件时,行看起来是这样的:move_upload_file($_FILES['attachment']['tmp_name'],$uploadfile);现在我已经编辑并回答了您提出的其他问题,我希望这会有所帮助!好的,谢谢:)如果我删除或注释掉你提到的所有内容,.php代码将停止运行,在单击“发送”按钮后,我将停留在空白页面上。2) HTML头看起来像这样,所以我真的不知道如何摆脱重定向,我看不到任何关于它的东西。在sendForm.php中没有标题,它是php邮件,因此不需要。只需上传文件$mail=X命令并取消word的链接。当然,在单击submit之后,表单将通过post方法(method=“post”)将数据发送到名为sendForm.php的脚本,该脚本将发送数据!(我猜它不是包含表单本身的同一个脚本…)如果您希望返回到带有表单的第一页,您可以在sendForm.php中放置一个标题,将您重定向到第一个脚本!(我将在一个新的编辑中编写代码!)我想要的是完全不让表单重定向我,但如果必须的话,可以。你的代码看起来不错,我想这就是我需要的。再问一个问题——具体放在哪里?我想应该是sendForm.php的某个地方,但我真的不明白在哪里。在if(!$mail->Send(){echo'something';?的结尾,请说得更具体一些,因为把它放在正确的位置是非常重要的。谢谢您的时间
   //if (move_uploaded_file($_FILES['attachment']['tmp_name'], //$uploadfile)) {
   //    echo "Success\n";
   //} else {
   //    echo "Failed.\n";
if(!$mail->Send()) {
  echo '<script type="text/javascript">alert("Došlo k chybě při odesílání formuláře!");</script>'; 
  echo '<script type="text/javascript">window.location ="./";</script>';
  header( "refresh:2;url=first_script_name.php" );
}
 unlink(path_to_file);