CakePHP格式垃圾邮件

CakePHP格式垃圾邮件,php,cakephp,Php,Cakephp,在上的教程之后,我使用CakePHP构建了一个联系人表单 但是,我想添加一个垃圾邮件保护器,其中向用户显示一个5个字母字符的单词,如BB42A,这是随机的,用户必须在提交表单之前键入 我在谷歌上搜索了一下,但没有在网上找到合适的 有什么建议吗?谢谢 下面的一个很好:您需要的是验证码 谷歌搜索应该会提供一些cakePHP插件。我不是用cakePHP开发的,所以我不能说更多 当然,您可以制作自己的验证码,然后将其集成到您的网站中。 简而言之: 生成一个随机字符串 使用此字符串创建图像 (); 将字

在上的教程之后,我使用CakePHP构建了一个联系人表单

但是,我想添加一个垃圾邮件保护器,其中向用户显示一个5个字母字符的单词,如BB42A,这是随机的,用户必须在提交表单之前键入

我在谷歌上搜索了一下,但没有在网上找到合适的

有什么建议吗?谢谢


下面的一个很好:

您需要的是验证码

谷歌搜索应该会提供一些cakePHP插件。我不是用cakePHP开发的,所以我不能说更多

当然,您可以制作自己的验证码,然后将其集成到您的网站中。 简而言之:

  • 生成一个随机字符串
  • 使用此字符串创建图像 ();
  • 将字符串另存为会话 可变的
  • 将用户提交的内容与会话中保存的内容进行比较
代码:


我建议使用现有的验证码库或服务,而不是使用自己的验证码库或服务。重新发明轮子毫无意义


其中最好的一种是reCAPTCHA

你可以在2+3这样的简单数学问题上使用主动/被动验证码


它需要有多安全是你的决定。对于大多数网站来说,这已经足够了。

事实上,我发现击败垃圾邮件的最简单方法之一是在每个联系人表单中都有一个隐藏字段;通常,spambots会填满它,而人类,因为他们看不见,也看不见

尝试添加到您的视图中:

//call it something along the lines of 'name' or 'email', and the
//real form field 'x1' or 'x2' etc
$this-Form->input('aformfield', array('class' => 'aformfield');
确保将其隐藏在css中:

.aformfield{display:none;}
在发送电子邮件之前,请在控制器中检查隐藏字段是否已填充:

if(!empty($this->data['Model']['aformfield'])){
    $this->Session->setFlash('You shouldn\'t be able to fill out a hidden field');
    $this->redirect($this->referrer());
}

它不是防弹的,我相信spambots会找到解决办法,但如果你不想做验证码,这是一个很好的起点。

我不喜欢recaptcha,因为它的字眼晦涩难懂(是的,我知道更安全)但我更喜欢简单的方法,如OP中的链接所示。感谢被找到。我喜欢这种方法的声音,因为使用图像比显示简单的数学公式更安全。如果您可以展示一些从字符串创建此图像的代码,那将非常棒,我将尝试将其实现到CakePHP助手/组件中。谢谢你。我稍微修改了php.net中的两个示例。结果是带有5个随机字符/数字的100*40 png图像。
if(!empty($this->data['Model']['aformfield'])){
    $this->Session->setFlash('You shouldn\'t be able to fill out a hidden field');
    $this->redirect($this->referrer());
}