之前网站被注册机盯上了,像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" />&nbsp;&nbsp;<input type="button" onclick="sendcode()" value="发送邮箱验证码" />&nbsp;<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 = “该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。“; //邮件帐号
 $mail->Password = “123456789″; //邮件帐号密码
 $mail->From = “该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。“; //发送邮件帐号

参考说明配置你的邮件发送程序,如果你选用的是qq mail的话,一定要在你的qq mail设置里开启smtp。

6.修改完以上步骤后,把压缩包的r_checkmail.php和phpmailer全都放到你的uchome根目录下

codefile

Recent Posts