表单提交后页面重载、显示PHP源码且无法发送邮件如何修复?
问题修复方案
1. 修复PHP文件被当作纯文本展示的问题
这是优先级最高的故障,只有PHP正常解析后其余功能才能正常运行:
- 确认你的运行环境已安装PHP服务,且使用的Web服务器(Apache/Nginx/IIS)已开启PHP解析模块
- 确认你是通过http/https协议访问站点,而非直接双击打开本地HTML文件(file://本地协议无法解析PHP)
- 检查站点根目录配置,确保
.php后缀的文件会被转发到PHP处理器执行,而非直接返回静态文本内容
2. 修复现有代码中的语法&逻辑错误
HTML代码问题
你的提交按钮存在标签不匹配错误,同时多余的</input>闭合标签可能导致渲染异常:
<!-- 错误写法 --> <input type="submit" class="btn btn-primary btn-purchase" name="submit">להזמנה</button> <!-- 修复写法 --> <button type="submit" class="btn btn-primary btn-purchase" name="submit">להזמנה</button>
所有<input>标签为自闭合标签,可直接删掉多余的</input>。
PHP代码问题
首先存在致命语法错误:isset(_POST['submit'])中_POST前缺失$符号,会导致代码直接终止运行,其次邮件头格式不符合规范,会被邮件服务商拒收,修复后代码如下:
<?php // 修复POST变量缺失$的语法错误 if (isset($_POST['submit'])) { $subject = "הזמנה חדשה"; $name = $_POST['inpName']; $phone = $_POST['inpPhone']; $city = $_POST['inpCity']; $address = $_POST['inpAddress']; // 补充你遗漏的日期字段取值 $delivery_date = $_POST['inpDate']; $mailTo = "sappati@outlook.com"; // 修复From头格式,必须为合法邮箱,建议使用你站点域名下的官方发件邮箱 $headers = "From: 站点订单通知 <noreply@你的域名.com>\r\n"; // 新增UTF-8编码声明,避免希伯来文内容乱码 $headers .= "Content-Type: text/plain; charset=utf-8\r\n"; $txt = "התקבלה הזמנה חדשה! אלו פרטי ההזמנה:\n". "שם: ".$name."\n". "טלפון: ".$phone."\n". "עיר: ".$city."\n". "כתובת: ".$address."\n". "תאריך אספקה: ".$delivery_date."\n"; // 新增发送状态判断,提交完成后跳转回表单页避免重复提交 if(mail($mailTo, $subject, $txt, $headers)){ header("Location: 你的表单页面地址?status=success"); exit(); }else{ header("Location: 你的表单页面地址?status=fail"); exit(); } } ?>
3. 修复页面提交重载的问题
如果不需要页面跳转刷新,可通过AJAX提交表单,阻止默认提交行为即可:
const form = document.querySelector('form'); form.addEventListener('submit', function(e) { // 阻止表单默认提交行为,不会触发页面重载 e.preventDefault(); const formData = new FormData(form); fetch('mail.php', { method: 'POST', body: formData }).then(res => res.text()).then(data => { // 自定义提交成功提示逻辑 alert('订单提交成功,我们会尽快联系您'); form.reset(); }).catch(err => { alert('提交失败,请稍后重试'); }) })
4. 邮件发送失败额外排查点
- 确认服务器已开启
mail()函数,多数虚拟主机会默认禁用该函数,若禁用可改用PHPMailer等第三方邮件库,通过SMTP协议关联你的邮箱账号发信,成功率更高 - 检查收件邮箱的垃圾邮件文件夹,未配置SPF/DKIM的发件人发送的邮件大概率会被归为垃圾邮件
- 建议给你的站点域名配置SPF、DKIM解析记录,可大幅降低邮件被拒收的概率
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

