You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP+jQuery带附件联系表单附件限制、新增字段、提交重置问题求助

解决方案

1. 附件上传超过2MB报错问题

排查与修改步骤:

  • 确认服务器配置参数全部正确,需同时调整三个php.ini配置项:
    • upload_max_filesize = 32M
    • post_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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:06:10