Dede新用户注册发送验证邮件的办法
发布时间:2022-05-20 14:35:00 所属栏目:建站 来源:互联网
导读:在discuz和phpwind等知名论坛中,都有新用户注册邮箱验证的功能,那么功能如此强大的dedecms有没有这一功能呢?回答肯定是有的,只是您不会用而已,现在看我的方法: 1.修改/member/reg_new.php文件。 查找 $dsql-ExecuteNoneQuery($infosquery); 复制代码
在discuz和phpwind等知名论坛中,都有新用户注册邮箱验证的功能,那么功能如此强大的dedecms有没有这一功能呢?回答肯定是有的,只是您不会用而已,现在看我的方法: 1.修改/member/reg_new.php文件。 查找 $dsql->ExecuteNoneQuery($infosquery); 复制代码 在下面插入 //写入邮件验证内容 $keyums = md5($userid.$email."dedecmslove"); //这里的7就是有效期7天的时间。上面的dedecmslove就是给发送的URL加密用的KEY $emldatetime = time()+7*24*3600; $emailyz = "INSERT INTO `dede_sj_emailyz`(`userid`,`keyums`,`datetime`) VALUES ('{$userid}','{$keyums}','{$emldatetime}'); "; $dsql->ExecuteNoneQuery($emailyz); 复制代码 再找到 //---------------------------------------------- //模拟登录 //--------------------------- 复制代码 在其上面插入: //发送验证邮件 if($cfg_md_mailtest=='Y') { $msg ="<html><head></head><body>"; $msg .= "<b><font color='#ff0000'>".$uname."</font></b> 恭喜您注册成为XXXXX的会员了!<br>"; $msg .= " 您的登陆帐号:<b>".$userid."</b><br><br>";//这里,做了个小判断,如果是企业用户注册,则给多送条信息去。 if($mtype=='企业'){ $msg .= " 活动公告:<b><font color='#ff0000'>马上完善您的企业信息,免费开通3个月体验会员,享受更多无限制服务体验!</font></b><br>"; } $msg .= " 注意!该验证有效期为1周,请尽快进行您的帐户验证。<br>"; $msg .= "还有一步您就成功了,请点击下面的链接进行最后一步验证。(如果无法点击链接,请将下面红色部分的链接地址全部复制,然后粘贴到浏览器地址中打开!)<br><br>"; $msg .= "<a href='http://www.XXXXX.com/member/reg_email.php?g=ok&userid=".$userid."&u=".$keyums."' target=_blank><font color='#FF0000'>[url]http://www.XXXXX.com/member/reg_email.php?g=ok&userid=[/url]".$userid."&u=".$keyums."</font></a><br><br>"; $msg .= "请点击打开上面的连接地址或复制到浏览器地址中打开。如需帮助,请联系XXXXX管理员!<br><br><br>"; $msg .= "<span style='font-size:12px; color:#CCCCCC'>这是一封由XXXXX网站系统自动发送的邮件,请不要回复邮件!</span><br>"; $msg .= "<a href=http://www.XXXXXXX.com/>XXXXXX</a> <span style='font-size:12px; color:#CCCCCC'>--XXXXXXXXX的门户网站。</span><br>"; $msg .= "</body></html>"; $mailbody = ''; //下面这个是邮件标题,上面的是邮件正文部分。 $mailtitle = "XXXXXXXX会员注册验证邮件"; $mailbody .= "$msg /r/n/r/n"; $headers = "From: ".$cfg_adminemail."/r/nReply-To: ".$cfg_adminemail; if($cfg_sendmail_bysmtp == 'Y' && !empty($cfg_smtp_server)) { //下面这里选择HTML网页方式发送,如果邮箱不支持HTML,就改为TXT,不过现在好像都支持HTML了吧。 $mailtype = 'HTML'; require_once(DEDEINC.'/mail.class.php'); $smtp = new smtp($cfg_smtp_server,$cfg_smtp_port,true,$cfg_smtp_usermail,$cfg_smtp_password); $smtp->debug = false; $smtp->sendmail($email, $cfg_smtp_usermail, $mailtitle, $mailbody, $mailtype); } else { @mail($email, $mailtitle, $mailbody, $headers); } ShowMsg("恭喜您注册成为XXXXXXXXXX的会员了,现在需要对您的电子邮件( ".$email." )进行验证(有效期1周),请登陆您的邮箱查收!如果无法查收到邮件,请马上联系管理员!","index.php",0,20000); exit(); } 复制代码 最后修改如下代码: //---------------------------------------------- //模拟登录 //--------------------------- //$ml = new MemberLogin(7*3600); //$rs = $ml->CheckUser($userid,$userpwd); //ShowMsg("注册成功,3秒钟后转向系统主页...","index.php",0,2000); //exit(); 复制代码 2.写个邮件验证的文件吧。代码全贴出来了。 保存为 member文件夹下面 reg_email.php文件 <?php require_once(dirname(__FILE__)."/config.php"); if(!isset($userid)) { $userid = ''; }if($g=='ok') { $userid = trim($userid); $keyums = trim($u); $logintimes = time(); //检测会员帐号是否存在 $row = $dsql->GetOne("Select id From `dede_sj_emailyz` where userid='$userid' and datetime>'$logintimes' "); if(!is_array($row)) { ShowMsg("对不起!您已经通过邮件验证了,或者您的验证有效期已过!","-1"); exit(); } $updatembs = "Update `dede_member` set rank='10' where userid='$userid';"; $dsql->ExecuteNoneQuery($updatembs); if($dsql->ExecuteNoneQuery($updatembs)) { $dsql->ExecuteNoneQuery("Delete From `dede_sj_emailyz` where userid='$userid' "); }else{ ShowMsg("对不起!您的帐户异常,请联系管理员为您处理!","-1"); exit(); } ShowMsg("验证成功,6秒钟后转向系统主页...","index.php",0,5000); exit(); } else { ShowMsg("验证失败,请检查资料是否有误或与管理员联系!","-1"); exit(); }?> 复制代码 3.把数据表贴出来。 -- Table "dede_sj_emailyz" DDLCREATE TABLE `dede_sj_emailyz` ( `id` mediumint(8) unsigned NOT NULL auto_increment, `userid` char(20) character set gbk NOT NULL, `keyums` varchar(100) NOT NULL, `datetime` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=358 DEFAULT CHARSET=latin1; 复制代码 最后大家需要在登陆的地方判断下,免得验证白费了。 4.修改/member/index_do.php这个文件。因为我的有程序整合和二次开发,所以代码和大家都不一样。就不贴全部,给个提示。不过判断是否验证部分代码是全的。 if($rs == 0) { ShowMsg("用户名不存在!","-1",0,2000); exit(); } else if($rs == -1) { ShowMsg("密码错误!","-1",0,2000); (编辑:宿州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐