分享

实现ecshop注册必须邮箱验证

 昵称20324350 2015-01-29

 ecshop模板做二次开发要注册后自动发送邮件验证,验证成功才能登录:

一、可以提示用户立即去验证注册的邮件
二、方验以后推广筛选有效邮箱
 
现在以下如何注册自动发送邮件验证,验证成功才能登录:
1、注册成功自动发邮件并退出登录状态,提示需要验证邮件才能登录。
在user.php大约233行-234行
把:
            $ucdata = empty($user->ucdata)? "" : $user->ucdata;
            show_message(sprintf($_LANG['register_success'], $username . $ucdata), array($_LANG['back_up_page'], $_LANG['profile_lnk']), array($back_act, 'user.php'), 
 
'info');
 
替换成:
          $cfg = $_CFG['smtp_user'];
          if(!empty($cfg) )
          {
              $sql="select user_id from ".$GLOBALS['ecs']->table('users') ."where user_name = '$username'";
              $user_id=$db->getOne($sql);
              send_regiter_hash ($user_id);
   }
   $user->logout();
             show_message('需要验证邮件才能登录', array($_LANG['back_up_page'], $_LANG['back_home_lnk']), array('user.php', 'index.php'), 'info');
 
购物流程时注册也要相应的修改
打开flow.php大约282行
查找:
            if (register(trim($_POST['username']), trim($_POST['password']), trim($_POST['email'])))
将下面代码:
                /* 用户注册成功 */
                ecs_header("Location: flow.php?step=consignee\n");
                exit;
替换成:
  $cfg = $_CFG['smtp_user'];
  if(!empty($cfg) )
  {
  $sql="select user_id from ".$GLOBALS['ecs']->table('users') ."where user_name = '".trim($_POST['username'])."'";
  $user_id=$db->getOne($sql);
  send_regiter_hash ($user_id);
   }
   $user->logout();
                show_message('需要验证邮件才能登录', array($_LANG['back_up_page'],     $_LANG['back_home_lnk']), array('flow.php?step=login', 'index.php'), 'info');

2、登录时判断是否通过邮件验证,没通过提示需要验证邮件才能登录。
在includes/lib_mian.php里面php文件结束标签前添加
function  is_validated_emil($username)
{
  $sql = "SELECT  is_validated" .
   " FROM ". $GLOBALS['ecs']->table('users').
   " WHERE  user_name='" . $username."'";
 
   return $GLOBALS['db']->getOne($sql);
}
用于检测邮箱验证状态!。
修改user.php大约349行
也可查找:
    if ($user->login($username, $password,isset($_POST['remember'])))
在下面把:
        update_user_info();
        recalculate_price();
 
        $ucdata = isset($user->ucdata)? $user->ucdata : '';
        show_message($_LANG['login_success'] . $ucdata , array($_LANG['back_up_page'], $_LANG['profile_lnk']), array($back_act,'user.php'), 'info');
改成:
 if(is_validated_emil($username) > 0)
 {
        update_user_info();
        recalculate_price();
 
        $ucdata = isset($user->ucdata)? $user->ucdata : '';
        show_message($_LANG['login_success'] . $ucdata , array($_LANG['back_up_page'], $_LANG['profile_lnk']), array('user.php','user.php'), 'info');
 }
 else
   {
         $user->logout();
         show_message('需要验证邮件才能登录', array($_LANG['back_up_page'], $_LANG['back_home_lnk']), array('user.php', 'index.php'), 'info');
 }
 
购物流程时登录也要相应的修改
打开flow.php大约239行
查找:
            if ($user->login($_POST['username'], $_POST['password'],isset($_POST['remember'])))
将下面的代码:
 update_user_info();  //更新用户信息
                recalculate_price(); // 重新计算购物车中的商品价格
 
                /* 检查购物车中是否有商品 没有商品则跳转到首页 */
                $sql = "SELECT COUNT(*) FROM " . $ecs->table('cart') . " WHERE session_id = '" . SESS_ID . "' ";
                if ($db->getOne($sql) > 0)
                {
                    ecs_header("Location: flow.php?step=checkout\n");
                }
                else
                {
                    ecs_header("Location:index.php\n");
                }
 
                exit;
改为:
 if(is_validated_emil($_POST['username']) > 0)
{
update_user_info();  //更新用户信息
recalculate_price(); // 重新计算购物车中的商品价格
 
/* 检查购物车中是否有商品 没有商品则跳转到首页 */
$sql = "SELECT COUNT(*) FROM " . $ecs->table('cart') . " WHERE session_id = '" . SESS_ID . "' ";
if ($db->getOne($sql) > 0)
{
ecs_header("Location: flow.php?step=checkout\n");
}
else
{
   ecs_header("Location:index.php\n");
}
exit;
}
else
{
$user->logout();
show_message('需要验证邮件才能登录', array($_LANG['back_up_page'], $_LANG['back_home_lnk']), array('flow.phpstep=login', 'index.php'), 'info');
  }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约