如何移除在线表单提交邮件中的g-recaptcha-response字段
解决方法
邮件里出现g-recaptcha-response字段的原因很简单:reCAPTCHA验证通过后会自动往表单注入同名隐藏参数提交到后端,你当前生成邮件内容时是遍历全量$_POST参数输出,且没有提前把这个仅用于验证码校验的系统字段排除掉。
操作步骤
找到后端代码里批量清理不需要展示字段的unset代码块,在现有unset列表最后加一行即可:
unset($_POST['g-recaptcha-response']);
修改后对应代码段如下:
# FORM MAIL TO SENT unset($_POST['title']); unset($_POST['form_subject']); unset($_POST['email_var']); unset($_POST['hotel_var']); unset($_POST['language']); unset($_POST['lbl_privacy_policy']); unset($_POST['lbl_form_confirmation']); unset($_POST['submit']); // 排除reCAPTCHA返回字段,避免出现在邮件中 unset($_POST['g-recaptcha-response']);
注意事项
- 这行代码必须放在reCAPTCHA校验逻辑执行完成之后、两个邮件表格(管理员通知
$table、用户回执$table_u)的遍历生成逻辑之前,否则会导致验证码校验拿不到参数失效。 - 改完之后两个表格的遍历逻辑都读不到这个字段,管理员收的通知邮件和用户收的确认邮件里都会自动隐藏这一项,不需要单独修改两处表格生成代码。
- 后续如果还有其他仅用于业务逻辑、不需要展示在邮件里的表单字段,都可以用同样的方式在遍历前unset排除。
内容的提问来源于stack exchange,提问作者Rob
相关产品推荐
相关产品推荐

