server - Recaptcha 将 Formmail 的“电子邮件”(发件人)字段替换为我的服务器地址。如果没有 Recaptcha,From 字段可以正常工作。为什么?
问题描述
多年来,我一直在使用 Tectite Formmail.php。最后添加了 Recaptcha ver 2(不可见模式)。它工作正常,除了它与derive_fields电子邮件字符串混淆。如果没有验证码,结果电子邮件的“发件人”字段会正确包含填写我的表单的人的姓名和电子邮件地址,这是从“实名”和“电子邮件”派生的值。
例如,拉尔夫沃尔多 <rwaldoexample@gmail.com
当我启用 ReCaptcha 时,结果电子邮件的From字段不希望地显示我的托管帐户用户名和服务器地址:
例如,*用户名@1a2b3c45.prod.phx1.example.net
如果我将表单恢复为标准标记并禁用 Recaptcha(通过将 $REQUIRE_CAPTCHA 和 $RECAPTCHA_PRIVATE_KEY 值清零,如下所示的代码),我会像以前一样获得所需的From内容。此行为与 Formmail v 9.15 和 9.19 相同。
如果这是 Recaptcha 的标准程序,它似乎没有记录。如果没有,解决方法是什么?
SNIPPETS, PER REQUEST:
In web page header:
<!-- CAPTCHA Ver2 Invisible -->
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<script>
function onSubmit(token) {
document.getElementById("Contact_Form").submit();
}
</script>
<!-- end CAPTCHA -->
In web page HTML
<form id="Contact_Form" action="https://www.example.com/formmail.php" method="post" name="Formtype 1">
<input name="good_url" value="https://www.example.com/tnxpg.html" type="hidden" />
<INPUT NAME="subject" TYPE="hidden" VALUE="~~FORM RECEIVED - Main mail form">
<!-- OTHER INFO TO APPEAR IN EMAIL -->
<input type="hidden" name="form_version" value="Visitor used Main Form">
<input type="hidden" name="mail_options" value="FromAddr=formmssg1@example.com" />
<!-- DON'T CHANGE THE FOLLOWING ... EXCEPT put actual field names after equals signs. -->
<!-- this derives (creates) "email" and "realname" special fields from the input fields -->
<input type="hidden" name="derive_fields" value="email=EmailAddr,realname=FullName" />
<!-- DON'T CHANGE THE FOLLOWING! -->
<!-- this excludes the "email" and "realname" special fields from the body of the email you receive -->
<input type="hidden" name="mail_options" value="Exclude=email;realname" >
<input name="env_report" value="REMOTE_HOST,REMOTE_ADDR,HTTP_USER_AGENT,AUTH_TYPE,REMOTE_USER" type="hidden" />
* * *
<input type="hidden" name="derive_fields" value="imgverify=g-recaptcha-response" />
<!-- with this simple Submit tag and the private key removed from Formmail.php, results email From is correct -->
<!--
<input type="submit" value=" Send message ">
-->
<input type="submit" value=" Send Message " class="g-recaptcha" data-callback="onSubmit" data-sitekey="PublicKeyGoesHere" / >
In formmail.php:
/* Help: http://www.tectite.com/fmdoc/require_captcha.php */
//// DO NOT USE CAPTCHA
//// $REQUIRE_CAPTCHA = ""; /* set to a message string if your forms */
//// USE CAPTCHA
$REQUIRE_CAPTCHA = "Confirm you are not a robot.";
/* set to a message string if your forms must provide a CAPTCHA string*/
/* Help: http://www.tectite.com/fmdoc/recaptcha_private_key.php */
//// DO NOT USE CAPTCHA
//$RECAPTCHA_PRIVATE_KEY = "";
//// USE CAPTCHA
$RECAPTCHA_PRIVATE_KEY = "myprivatekeygoeshere";
解决方案
推荐阅读
- php - 当 Laravel 上的 Json 数据种子时,试图获取非对象的属性
- c# - UWP 应用无法在“BluetoothCacheMode.Uncached”模式下工作,只能在“BluetoothCacheMode.Cached”模式下工作,为什么?
- javascript - 返回内部的Javascript if语句
- react-native - React Native - “您当前正在使用 NODE_ENV 之外的缩小代码 === “生产” “
- c++ - 输出之前给出字符串的输入以查找回文
- javascript - 使用 httr 包中的 Post() 在 R 中捕获 href
- docker - 当从 linux 样式路径转换时,Docker 安装的卷将 ;C 添加到 Windows 路径的末尾
- sas - 您能在 SAS EG 中命名报告吗?
- c - 通过指向其成员的指针获取指向结构的指针
- php - 如何从第二个或第三个字符串分隔符爆炸回字符串?