防止垃圾注册,在UCHOME注册页加入reCaptcha!

发表时间:2011-12-10 16:52 | 分类:生活八卦 | 浏览:2,384 次

前两天我在论坛里写了一篇有关如何在uchome批量删除垃圾日志,和如何在uchome批量删除垃圾用户的帖子。我提到删除垃圾注册不是也制止垃圾用户的最终办法。今天我就要和大家分享一招可以理论制止垃圾注册的方法 – 使用reCaptcha!
UCHOME的图片验证码防灌水功能很弱,根本挡不住那些注册机。这个我相信很多使用UChome的站长都深有同感吧?这就是为什么我要用到reCaptcha。2009年reCapcha被Google收购(2009年9月16日Google收购了reCaptcha)。reCaptcha用到的图片是来自一些破损难辨的典籍,使用者在识别它的过程中也给这些典籍的数字化做贡献。本文要介绍的是如何在UCHome注册页里加入reCaptcha。

注册reCaptcha

你需要先注册一个帐号,因为Google收购了reCaptcha,所以你可以使用Google的邮箱登入。之后你要输入你的域名,就可以得到一个public key和private key, 这两个密钥将要用在下面的代码里。

下载reCaptcha PHP库

这里下载。下载后把recaptchalib.php文件上传到UCHOME根目录下的source文件夹里。

修改do_register.php

这个文件在UCHOME根目录下的source文件夹里,打开这个文件,加入下面的代码。注意:修改部分用“####BY sijitao.net”标识

?php
/*
	[UCenter Home] (C) 2007-2008 Comsenz Inc.
	$Id: do_register.php 13111 2009-08-12 02:39:58Z liguode $
*/
####BY sijitao.net - 这里加入三行
require_once('recaptchalib.php');
$publickey = "xxx"; //替换为第一步里获取的public key
$privatekey = "yyy"; //替换为第一步里获取的private key
......
......
if(!$_POST['password'] || $_POST['password'] != addslashes($_POST['password'])) {
	showmessage('profile_passwd_illegal');
}
####BY sijitao.net - 在这里加入下面几行
$resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);
if (!$resp-is_valid) {
  showmessage('incorrect_code');
}

修改do_register.html

此文件位于UCHome根目录下template/default/文件夹里。打开这个文件做如下更改。注意:修改部分用“####BY sijitao.net”标识

script type="text/javascript"// ![CDATA[
	function register(id, result) {
		if(result) {
			$('registersubmit').disabled = true;
			window.location.href = "$jumpurl";
		} else {
#### BY sijitao.net, 加入下面这句,目的是在提交出现错误时,重刷验证代码
			Recaptcha.reload();
			updateseccode();
		}
	}
// ]]/script
......
......
!--{else}--
	tr
		th style="vertical-align: top;"验证码/th
		td
			scriptseccode();/script
p请输入上面的4位字母或数字,看不清可a href="javascript:updateseccode()"更换一张/a/p
input type="text" id="seccode" name="seccode" value="" onBlur="checkSeccode()"
 tabindex="1" autocomplete="off" / span id="checkseccode" /span
		/td
	/tr
	!--{/if}--
	!--{/if}--
####By sijitao.net - 这里加入以下代码
	tr
		th style=style="vertical-align: top;"超强验证码/td
		td
			!--{eval echo recaptcha_get_html($publickey);}--
		/td
	/tr

取消UCHOME自带验证

登入高级管理 - 防灌水设置 - 取消注册页面开启验证码功能,最后更新一下系统的缓存。

貌似有点麻烦,但是请相信我,这绝对是一劳永逸!

本文标签:

本文链接:https://www.sijitao.net/656.html

欢迎您在本博客中留下评论,如需转载原创文章请注明出处,谢谢!

一键脚本 博客历程 留言联系 文章归档 网站地图 谷歌地图
Copyright © 2010-2024 章郎虫博客 All Rights Reserved.