之前网站被注册机盯上了,像uchome这样的SNS网站,批量注册一大堆用户,全部发些垃圾内容,整个网站一会就被弄的不成样。
解决这个问题的办法,直接采用的就是邮箱验证,为的就是提高用户质量,如果一个真正想注册用的户是不会在意去打开邮箱,拿到验证码的。
解决的过程很简单,这里就简单公布下代码和一个通用的邮件程序,即使你的服务器没装或没开通邮件服务,也可以借助像qq mail这样的第三方发送邮件,好了,废话不多说了,详细内容看下面:
1.首先建一个验证邮箱的数据表,在mysql client 或者 phpmyadmin 里执行,注意你自己的版本编码和数据库表前缀
1
2
3
4
5
6
7
8
9
|
CREATE TABLE IF NOT EXISTS `uh_checkusermail` ( `id` int (10) unsigned NOT NULL auto_increment, `uid` int (10) unsigned NOT NULL default ‘0′, `mail` varchar (100) NOT NULL , `checknum` varchar (20) NOT NULL , `statu` tinyint(1) unsigned NOT NULL default ‘0′, `dateline` int (10) unsigned NOT NULL , PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=1 ; |
2.打开uchome根目录下的template\default\do_register.htm文件
在里面找到下面这句代码
1
2
|
< tr >< th >邮箱</ th >< td >< input type=”text” id=”email” name=”email” value=”@” tabindex=”5″ /> < br >请准确填入您的邮箱,在忘记密码,或者您使用邮件通知功能时,会发送邮件到该邮箱。</ td ></ tr > |
替换为
1
2
|
< tr >< th >邮箱</ th >< td >< input type = "text" id = "email" name = "email" value = "@" tabindex = "5" /> < input type = "button" onclick = "sendcode()" value = "发送邮箱验证码" /> < span id = "sendmsg" ></ span ></ td ></ tr > < tr >< th >邮箱验证码</ th >< td >< input type = "text" id = "mailcode" name = "mailcode" value = "" tabindex = "6" /></ td ></ tr > |
3.再在上面那个文件里找到
1
2
3
4
5
6
7
8
9
10
|
< script > function register(id, result) { if(result) { $(’registersubmit’).disabled = true; window.location.href = “$jumpurl”; } else { updateseccode(); } } </ script > |
替换为
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
< script > function register(id, result) { if(result) { $(’registersubmit’).disabled = true; window.location.href = “$jumpurl”; } else { updateseccode(); } } function sendcode() { var mail = $(’email’).value; ajaxget(’r_checkmail.php?mail=’+mail+’&time=’+new Date().getTime()+’&ajaxdiv=sendmsg’, ’sendmsg’); } </ script > |
4.打开uchome根目录下的source\do_register.php文件
在里面找到下面这句代码
1
2
3
4
5
6
|
//检查邮件 if ( $_SCONFIG [ 'checkemail' ]) { if ( $count = getcount(’spacefield’, array (’email’=> $email ))) { showmessage(’email_has_been_registered’); } } |
在这段代码下面加上
1
2
3
4
|
$query = $_SGLOBAL [ 'db' ]->query(”SELECT * FROM “.tname(’checkusermail’).” where mail=’”. $email .”‘ and checknum=’”. $_POST [ 'mailcode' ].”‘ and statu=0″); if (! $value = $_SGLOBAL [ 'db' ]->fetch_array( $query ,1)) { showmessage(’邮箱验证码错误’); } |
5.再在上面那个文件里找到
1
2
3
|
//开通空间 include_once (S_ROOT.’./source/function_space.php’); $space = space_open( $newuid , $username , 0, $email ); |
在这段代码下面加上
1
2
|
//更新邮箱状态 $_SGLOBAL [ 'db' ]->query(”update “.tname(’spacefield’).” set emailcheck=1 where uid=’”. $newuid .”‘”); |
5.下载压缩包,解压后打开里面的r_checkmail.php文件
找到如下代码
1
2
3
4
5
6
|
$mail ->Host = “smtp.qq.com”; //邮件服务器 $mail ->Port = “25″; //邮件服务器端口 $mail ->SMTPAuth = true; $mail ->Username = “ //邮件帐号 $mail ->Password = “123456789″; //邮件帐号密码 $mail ->From = “ //发送邮件帐号 |
参考说明配置你的邮件发送程序,如果你选用的是qq mail的话,一定要在你的qq mail设置里开启smtp。
6.修改完以上步骤后,把压缩包的r_checkmail.php和phpmailer全都放到你的uchome根目录下