我使用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字段名称=“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的第一次“真实”接触,这对我来说并不容易。我知道这可以在一个小时内完成,如果我之前知道我需要的一切,那么我希望下次绝对清楚这一点。谢谢你
答案 0 :(得分:1)
1)move_uploaded_file是移动首次作为临时文件上传的文件所必需的,但在这种情况下用作bool,如果文件没有正确上传,则返回false!也许它不起作用,因为你忘了删除流控制语句中的其他内容。
你应该这样编辑:
//if (move_uploaded_file($_FILES['attachment']['tmp_name'], //$uploadfile)) {
// echo "Success\n";
//} else {
// echo "Failed.\n";
以这种方式你注释掉你不需要的东西!它应该工作正常
2)重定向取决于标题(检查出来),但它可能是在html表单中设置发送('action'值)
如果提交表单将您带到该脚本中的脚本“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" );
}
以便在2秒后强制页面返回第一个脚本
无论如何,完成工作的脚本是class.phpmailer.php脚本,你没有打包!看看这个:http://stackover1.comeze.com/1/
3)您使用的方法是正常的,if控制附件已上传,然后您只需使用
unlink(path_to_file);
这是使用php删除文件的标准方法(很多人查找delete()函数,他们还编写了一个虚拟手册页来重定向寻找unlink函数的人!))