我使用 PHPMailer 为静态网站制作了一个带有附件的表单。它工作正常,几乎完美,但我仍然对它有一些疑问。我想问你是否会这么好心,向我解释一些我不太明白的事情,并在最后一部分帮助我。提前致谢
1)用于上传我使用的文件
$uploaddir = './';
$uploadfile = $uploaddir . basename($_FILES['attachment']['name']);
if (move_uploaded_file($_FILES['attachment']['tmp_name'], $uploadfile)) {
echo "Success\n";
} else {
echo "Failed.\n";
但我真的不明白。第一行是上传文件的目录,我明白了。是文件本身的第二次上传(到我在第一行从 html field name="priloha" 选择的目录)?而且我并不真正理解第三(第四)行,这是必要的,我不知道为什么。我从 PHP 手册http://www.php.net/manual/en/features.fi...method.php得到这段代码,只是稍微编辑了一下。如果我删除第四行(整个 move_uploaded_file 部分),表单将不起作用,我唯一能做的就是删除回声,留下空的 {}。为什么?如果它只是移动一个文件,为什么我需要移动它?我在 PHPManual 上读到了它,但我不知道为什么必须使用这个函数。我怎样才能离开条件,让只有 move_uploaded_file(...); ?
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>';
}
我只使用了 echo "string",但在发送表单后,我出现在一个新页面上,该页面是写消息的地方。我不想被重定向到任何地方。我也很高兴没有弹出消息,只是显示在表单上方。
所以我尝试了
else
{
echo '<script type="text/javascript">window.location = "./";</script>';
echo '<script type="text/javascript">alert("The form has been sent!");</script>';
}
在这种情况下,关于成功的弹出窗口不会弹出。如果我切换顺序,仍然存在一个问题,即当弹出有关成功的弹出窗口弹出时后台有一个空的网站页面,并且在弹出窗口中单击“确定”后我被重定向:/
3)最后一件事是上传后删除文件,我的方法似乎有点尴尬或什么,但它有效。我怎样才能让这个“更轻”?
if ($mail->AddEmbeddedImage("$uploadfile", "attachment") !="")
{
unlink("$uploadfile");
}
感谢您的回复,很抱歉浪费您的时间。我没有问就让我的表格工作,我只是希望它几乎完美。我花了两天时间才完成这个表格,这是我第一次“真正”接触 PHP,这对我来说并不容易。我知道这可以在一个小时内完成,如果我以前知道我需要的一切,所以我想绝对清楚这一点,以便下次快速。谢谢