PHP+jQuery带附件联系表单附件限制、新增字段、提交重置问题求助
解决方案
1. 附件上传超过2MB报错问题
排查与修改步骤:
- 确认服务器配置参数全部正确,需同时调整三个php.ini配置项:
upload_max_filesize = 32Mpost_max_size = 32M(需大于等于upload_max_filesize)memory_limit = 128M(需大于post_max_size)
可以在php文件中临时添加<?php phpinfo();?>查看实际生效的参数,如果参数未生效需要联系服务商确认调整是否成功。
- 如果使用Nginx服务器,需在站点配置中添加
client_max_body_size 32M;,Apache服务器需检查LimitRequestBody参数是否限制了上传大小。 - 在
contact_mail.php中添加上传错误判断,替换原有附件上传逻辑:
if(is_array($_FILES) && isset($_FILES['attachmentFile'])) { // 校验文件上传状态 if ($_FILES['attachmentFile']['error'] == UPLOAD_ERR_OK) { $mail->AddAttachment($_FILES['attachmentFile']['tmp_name'], $_FILES['attachmentFile']['name']); } }
- 可选:在前端表单
form标签内部添加最大上传大小限制的隐藏域,避免前端提前拦截,同时确认form标签有enctype="multipart/form-data"属性:
<form id="frmContact" action="" method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="33554432" /> <!-- 原有表单内容 --> </form>
2. 电话号码字段未出现在邮件中问题
原因是后端没有将电话号码字段拼接进邮件内容,修改contact_mail.php中邮件内容赋值部分,替换原有$mail->MsgHTML($_POST["content"]);:
// 拼接完整邮件内容 $mail_content = ' <p>姓名:'.htmlspecialchars($_POST['userName']).'</p> <p>邮箱:'.htmlspecialchars($_POST['userEmail']).'</p> <p>联系电话:'.htmlspecialchars($_POST['userPhone']).'</p> <p>留言内容:<br>'.nl2br(htmlspecialchars($_POST['content'])).'</p> '; $mail->MsgHTML($mail_content);
添加htmlspecialchars是为了避免XSS攻击,提升安全性。
3. 提交成功后自动清空表单问题
修改index.php中AJAX请求的success回调,新增表单重置代码:
success: function(data){ $("#mail-status").html(data); $('#loader-icon').hide(); // 新增表单重置逻辑 $("#frmContact")[0].reset(); },
内容的提问来源于stack exchange,提问作者Igor
相关产品推荐
相关产品推荐

