Discuz教程网

[代码修改] Discuz X2防注册机加入reCAPTCHA验证码

[复制链接]
authicon dly 发表于 2011-12-30 16:36:37 | 显示全部楼层 |阅读模式
之前用Discuz弄了一个物理学论坛,但是郁闷的是冒出来注册机,然后一大堆的垃圾注册。又不发贴啊什么的,然后到现在为止,只有一个邮箱验证的~然后就立马把那些注册的id给删了~~可是,又冒出来了~~
于是就找防注册,但是事实上DZ自带的那些是没效果的~~后来就想到某个很有名的验证码,找了下,就是reCAPTCHA。
133724sxw.jpg
首先在http://www.google.com/recaptcha申请账号,注册你的网站,获取Public Key和Private Key
下载recaptcha-php-1.11
在/source/include文件夹下新建一个recaptcha文件夹,将下载的recaptchalib.php文件复制到该文件夹内。
打开/source/class/class_member.php
查找409行:
  1. $username = dhtmlspecialchars($username);
复制代码


在上面添加:
  1. // recaptcha hack start
  2. require_once DISCUZ_ROOT.'./source/include/recaptcha/recaptchalib.php';
  3. $recaptcha_publickey = '这里替换为你申请到的Public Key';
  4. $recaptcha_show = recaptcha_get_html($recaptcha_publickey);
  5. // recaptcha hack end
复制代码


查找460行:
  1. $username = addslashes(trim(dstripslashes($username)));
复制代码


在上面添加:
  1. // recaptcha hack start
  2. require_once DISCUZ_ROOT.'./source/include/recaptcha/recaptchalib.php';
  3. $recaptcha_privatekey = '这里替换为你申请到Private Key';
  4. $resp = recaptcha_check_answer ($recaptcha_privatekey,
  5. $_SERVER["REMOTE_ADDR"],
  6. $_POST["recaptcha_challenge_field"],
  7. $_POST["recaptcha_response_field"]);
  8. if (!$resp->is_valid) {
  9. // What happens when the CAPTCHA was entered incorrectly
  10. if ($resp->error = 'incorrect-captcha-sol') {
  11. $resp->error = "验证码输入不正确,请按"刷新"按钮重新获取验证码并再试一次。";
  12. }
  13. showmessage('reCAPTCHA failed. reCAPTCHA said: ' . trim($resp->error));
  14. }
  15. // recaptcha hack end
复制代码


打开template/default/member/register.htm
查找186行:
  1. <div id="layer_reginfo_b">
复制代码


在上面添加:
  1. <!--{if $recaptcha_show}-->
  2. <label>
  3. <script type="text/javascript">
  4. var RecaptchaOptions = {
  5. theme: 'custom',
  6. lang: 'en',
  7. callback: 'Recaptcha.focus_response_field',
  8. custom_theme_widget: 'recaptcha_widget',
  9. custom_translations: {
  10. play_again: "重播",
  11. cant_hear_this: "下载MP3"} };
  12. </script>
  13. <div id="recaptcha_widget" style="display:none">
  14. <div id="recaptcha_image"></div>
  15. <div class="recaptcha_only_if_incorrect_sol" style="color:red">输入验证码错误,请重试一次。</div>
  16. <span class="recaptcha_only_if_image">验证码:</span>
  17. <span class="recaptcha_only_if_audio">输入您听到数字:</span>
  18. <input type="text" id="recaptcha_response_field" name="recaptcha_response_field" /> *
  19. <span><a href="javascript:Recaptcha.reload()">刷新</a></span>
  20. <span class="recaptcha_only_if_image"><a href="javascript:Recaptcha.switch_type('audio')">声音</a></span>
  21. <span class="recaptcha_only_if_audio"><a href="javascript:Recaptcha.switch_type('image')">文字</a></span>
  22. <span><a href="javascript:Recaptcha.showhelp()">?</a></span>
  23. <p>$recaptcha_show</p>
  24. </label>
  25. <p style="color: blue;">提示: 为提高输入验证码成功率,当您感到验证码辨识困难时,</p>
  26. <p style="color: blue;">请按上面的刷新按钮重新获取新的验证码,直到您满意为止。</p>
  27. <!--{/if}-->
复制代码


进入管理后台,全局——防灌水设置——验证码设置,取消新用户注册验证;
界面——界面设置——启用浮动窗口——取消注册窗口浮动
更新缓存,OK。
icon_cry.gif



上一篇:防暴力注册、发帖回帖:开卷随机变量v2.0
下一篇:杭电数据库模拟试题及答案
authicon 魔じ☆ve恋 发表于 2012-2-2 20:35:20 | 显示全部楼层
提示楼主 X2 的后台根本找不到
进入管理后台,全局——防灌水设置——验证码设置,取消新用户注册验证;
界面——界面设置——启用浮动窗口——取消注册窗口浮动
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 18:22

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表