我很高兴地使用https://github.com/PHPMailer/PHPMailer运行了一个联系人表单,最近添加了https://friendlycaptcha.com,以最大限度地减少机器人通过该表单发送的垃圾邮件数量。我喜欢没有用户交互的圆滑的实现。一旦您单击表单中的第一个输入字段,验证码就会被激活,并自动求解。不幸的是,验证码的解决方案(隐藏输入字段)向电子邮件中添加了一个我想要排除的巨大字符串。
如何告诉foreach循环不要在编写的邮件中包含frc-captcha-解决方案?
private function compose_mail($post)
{
$content = "The following message has been received via contact form:\n\n";
foreach($post as $name=>$value)
{
$content .= ucwords($name).": \t";
$content .= "$value\n\n";
}
$this->mailer->Body = $content;
}这是表单中的输入字段,生成的是长字符串。
<input name="frc-captcha-solution" class="frc-captcha-solution" type="hidden" value=".UNSTARTED">我得到的一个例子是:
姓名: Joe -mail: joe@miller.com地址: 100街邮政编码: 10100地点:城市电话: 0123456789留言:这是一条测试信息Frc-captcha-解决方案: f5e6874becd6758f456b78f6f1726e1d.YadsJVSp+/j0pyBNAQwtjQAAAAAAAAAA+eFoDacaj3c=.AAAAAJZoAQABAAAAQ5YAAAIAAADCJAUAAwAAAF9IAQAEAAAAj5cEAAUAAACwkQMABgAAAFcaAAAHAAAAfvIEAAgAAADvUwIACQAAAK/MAQAKAAAAm+MBAAsAAACU6AAADAAAAJZUAAANAAAA/dAEAA4AAABrSwEADwAAAC7mAAAQAAAAXFoDABEAAAD4UAEAEgAAACMEAAATAAAA3xcCABQAAABBHwMAFQAAAE6LAQAWAAAA1mwAABcAAAAmwwAAGAAAACIZBwAZAAAA6p4AABoAAADovwIAGwAAAFE/AAAcAAAA+d8BAB0AAACQ8gAAHgAAAO1fAgAfAAAAbtwCACAAAAA7EgEAIQAAABmWAQAiAAAA/ysAACMAAAAx0wIAJAAAAJsyBAAlAAAA6acBACYAAACATwAAJwAAAM/wBQAoAAAATLYJACkAAABT1AIAKgAAAMWWAwArAAAAzIAGACwAAAA3fwAA.AgAA
发布于 2021-12-01 13:54:46
有很多方法可以做到这一点,但一种方法是当该名称出现在循环中时跳过它:
private function compose_mail($post)
{
$content = "The following message has been received via contact form:\n\n";
foreach($post as $name => $value) {
if ($name !== 'frc-captcha-solution') {
$content .= ucwords($name).": \t";
$content .= "$value\n\n";
}
}
$this->mailer->Body = $content;
}https://stackoverflow.com/questions/70184578
复制相似问题