织梦Dedecms在用户注册后自动发送验证邮件的实现方法

新用户注册邮箱验证的功能,功能如此强大的dedecms有没有这一功能呢?回答肯定是有的,只是您不会用而已,现在看我的方法:1.修改/member/reg_new.php文件。查找 $dsql-Exec…

 

新用户注册邮箱验证的功能,功能如此强大的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′>http://www.XXXXX.com/member/reg_email.php?g=ok&userid=“.$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文件

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);
           exit();
          }

大家先找到这部分代码,看到了没有啊?嘿嘿,没看到我就没办法了。

 找到了,接着看我的代码,大家看着改,注意括号咯!

我的代码就是从这开始,一直到最底下有个

    //退出登录
       else if($dopost==”exit”)
    

这部分结束的。

        if($rs == 0)
          {
           ShowMsg(“用户名不存在!”,”-1″,0,2000);
           exit();
          }
          else if($rs == -1) {
           ShowMsg(“密码错误!”,”-1″,0,2000);
           exit();
          }
          else if($rs == -2) {
           ShowMsg(“管理员帐号不允许从前台登录!”,”-1″,0,2000);
           exit();
          }
          else
          {
          //验证邮件
          $rowemail = $dsql->GetOne(“SELECT `rank` FROM dede_member WHERE userid=’$userid’ “);
          if($rowemail['rank']==’0′) {
           $ucsynlogin = uc_user_synlogout();
           $cfg_ml->ExitCookie();
           ShowMsg(“您还未通过邮件验证,无法登陆!”,”-1″,0,2000);
           exit();
          }
           if(empty($gourl) || eregi(“action|_do”,$gourl))
           {
            ShowMsg(“成功登录,5秒钟后转向系统主页…”,”index.php”,0,2000);
           }
           else
           {
            ShowMsg(“成功登录,现在转向指定页面…”,$gourl,0,2000);
           }
           exit();
          }
         } //退出登录
         else if($dopost==”exit”)

OK,完成了。这里就不在演示了。注意里面的双引号,应该是半角的,复制完以后注意修改里面的全角双引号为半角双引号。

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

dedecms织梦默认的TAG标签不是很灵活。有时候我们的标签需要进行一个分类,能不能像{dede:arclist}标签的自定义属性(如:flag=c,h),这样全站调用的时候更灵活。 全站调用TAG标签方法一般是: {dede:tag row='100' sort='new' getall='1'}a target="_blank
未审核文档的TAG会显示在TAG列表页面, 固然点击进入TAG时, 相关的未审核文章不会显示出来, 这样对用户体验是很不好的. DEDECMS暂时没有提供这个功能,所以要解决这个问题, 让DEDECMS不显示未审核文档的TAG, 就要修改TAG的显示库文件 tag.lib.php。 方法一 打
我们都知道DEDECMS生成的文件夹是按天生成的,只要传了图片就会自动建立个年月日的文件,centos系统下,都是随便排序的,很难找到对应文件夹,如果要按顺序排列,要怎么操作呢? 一、文件管理器: 修改 /dede/templets/file_manage_main.html $dh = dir($inp
我们在用到织梦dedecms软件模型的时候,手动指定地址通常只能是引用其他网址或者链接,我们要实现直接选取站内的文件,这个要怎么操作呢?下面小编一步步为您解答,最终效果如下图所示: 实现教程 1、打开 /dede/templets/soft_add.htm 找到 input type=text
我们有时候需要对织梦文档的点击量进行批量维护,比如采集来的文章,点击量都为0,需要批量修改,可以用到如下方法1。 1、在数据库里运行下面的代码就可以了,文章的点击量变得随机从500到1000 UPDATE dede_archives SET click=FLOOR(500 + (RAND() * 1000))
用过dedecms的朋友都知道,织梦cms后台系统基本参数里是无法直接上传图片的,我们更换logo图只能到ftp里替换,非常的不方便,我们如果想直接在系统基本参数里上传,要怎么处理呢?在这里需要对代码进行修改,具体流程如下: 实现方法,打开/dede/templets/sy