PHP联系表单AJAX提交后JS页面重定向实现方案
AJAX提交联系表单(带reCAPTCHA验证+PHP发信)实现
这段PHP代码可将表单内容发送至预设的收件人邮箱。在脚本标注“DO SOMETHING AFTER FORM SUBMISSION”的位置插入表单提交后的处理逻辑(例如JS页面跳转),经测试该方案可正常运行。
前端AJAX提交逻辑
<!-- (B) AJAX 提交模块 --> <script> function doajax () { // (B1) 获取表单数据 var data = new FormData(document.getElementById("cform")); // 附加reCAPTCHA验证响应参数 data.append("g-recaptcha-response", grecaptcha.getResponse()); // (B2) 发起AJAX请求 fetch("process.php", { method: "POST", body: data }) .then((res) => { alert('消息已发送'); window.location.href = "index.php"; }) return false; } </script>
表单HTML结构
<form id="cform" method="post" onsubmit="return doajax();"> <input type="text" name="name" required/> <input type="email" name="email" required/> <textarea name="message" required></textarea> <div class="g-recaptcha" data-sitekey="--- 替换为你的reCAPTCHA站点KEY ---"></div> <input type="submit" id="submit" value="提交"/> </form>
后端发信处理脚本 process.php
<?php // (B) 校验reCAPTCHA有效性 $secret = "--- 替换为你的reCAPTCHA服务端密钥 ---"; $url = "https://www.google.com/recaptcha/api/siteverify?secret=$secret&response=".$_POST["g-recaptcha-response"]; $verify = json_decode(file_get_contents($url)); if (!$verify->success) { $error = "验证码无效"; } // (C) 构造并发送邮件 $mailTo = "me@gmail.com"; // 替换为实际收件邮箱 $mailSubject = "联系表单新提交"; $mailBody = ""; foreach ($_POST as $k=>$v) { if ($k != "g-recaptcha-response") { $mailBody .= "$k: $v\r\n"; } } if (!@mail($mailTo, $mailSubject, $mailBody)) { $error = "邮件发送失败"; } ?>
内容的提问来源于stack exchange,提问作者verlager
相关产品推荐
相关产品推荐

