当前位置:首页 > CMS教程 > ecshop > 列表

如何实现ecshop注册必须邮箱验证

发布:smiling 来源: PHP粉丝网  添加日期:2015-09-28 16:21:08 浏览: 评论:0 

以下是如何注册自动发送邮件验证,验证成功才能登录.

1、注册成功自动发邮件并退出登录状态,提示需要验证邮件才能登录.

在user.php大约233行很234行,把:

  1. $ucdata = emptyempty($user->ucdata)? "" : $user->ucdata; 
  2.  show_message(sprintf($_LANG['register_success'], $username . $ucdata), array($_LANG['back_up_page'], $_LANG['profile_lnk']), array($back_act'user.php'), 'info'); 

替换成:

  1. $cfg = $_CFG['smtp_user']; 
  2. if(!emptyempty($cfg) ) 
  3.     $sql="select user_id from ".$GLOBALS['ecs']->table('users') ."where user_name = '$username'"
  4.     $user_id=$db->getOne($sql); 
  5.     send_regiter_hash ($user_id); 
  6.  } //phpfensi.com 
  7.  $user->logout(); 
  8.    show_message('需要验证邮件才能登录'array($_LANG['back_up_page'], $_LANG['back_home_lnk']), array('user.php''index.php'), 'info'); 

购物流程时注册也要相应的修改,打开flow.php大约282行,查找:

  1. if (register(trim($_POST['username']), trim($_POST['password']), trim($_POST['email']))) 

将下面代码:

  1. ecs_header("Location: flow.php?step=consignee\n"); 
  2. exit

替换成:

  1. $cfg = $_CFG['smtp_user']; 
  2.                   if(!emptyempty($cfg) ) 
  3.                   { 
  4.                       $sql="select user_id from ".$GLOBALS['ecs']->table('users') ."where user_name = '".trim($_POST['username'])."'"; 
  5.                       $user_id=$db->getOne($sql); 
  6.                       send_regiter_hash ($user_id); 
  7.                    } 
  8.                    $user->logout(); 
  9.                 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文件结束标签前添加:

  1. function  is_validated_emil($username
  2.   $sql = "SELECT  is_validated" . 
  3.    " FROM "$GLOBALS['ecs']->table('users'). 
  4.    " WHERE  user_name='" . $username."'"
  5.  
  6.    return $GLOBALS['db']->getOne($sql); 

用于检测邮箱验证状态,修改user.php大约349行,也可查找:

if ($user->login($username, $password,isset($_POST['remember'])))

在下面把:

  1. update_user_info(); 
  2. recalculate_price(); 
  3.  
  4. $ucdata = isset($user->ucdata)? $user->ucdata : ''
  5. show_message($_LANG['login_success'] . $ucdata , array($_LANG['back_up_page'], $_LANG['profile_lnk']), array($back_act,'user.php'), 'info'); 

改成:

  1. if(is_validated_emil($username) > 0) 
  2.    update_user_info(); 
  3.    recalculate_price(); 
  4.  
  5.    $ucdata = isset($user->ucdata)? $user->ucdata : ''
  6.    show_message($_LANG['login_success'] . $ucdata , array($_LANG['back_up_page'], $_LANG['profile_lnk']), array('user.php','user.php'), 'info'); 
  7. else 
  8.   { 
  9.     $user->logout(); 
  10.     show_message('需要验证邮件才能登录'array($_LANG['back_up_page'], $_LANG['back_home_lnk']), array('user.php''index.php'), 'info'); 

购物流程时登录也要相应的修改,打开flow.php大约239行,查找:

  1. if ($user->login($_POST['username'], $_POST['password'],isset($_POST['remember']))) 

将下面的代码:

  1. update_user_info();  //更新用户信息 
  2.                 recalculate_price(); // 重新计算购物车中的商品价格 
  3.  
  4.                 
  5.                 $sql = "SELECT COUNT(*) FROM " . $ecs->table('cart') . " WHERE session_id = '" . SESS_ID . "' "
  6.                 if ($db->getOne($sql) > 0) 
  7.                 { 
  8.                     ecs_header("Location: flow.php?step=checkout\n"); 
  9.                 } 
  10.                 else 
  11.                 { 
  12.                     ecs_header("Location:index.php\n"); 
  13.                 } 
  14.  
  15.                 exit

改为:

  1. if(is_validated_emil($_POST['username']) > 0) 
  2.     { 
  3.         update_user_info();  //更新用户信息 
  4.         recalculate_price(); // 重新计算购物车中的商品价格 
  5.  
  6.         
  7.         $sql = "SELECT COUNT(*) FROM " . $ecs->table('cart') . " WHERE session_id = '" . SESS_ID . "' "
  8.         if ($db->getOne($sql) > 0) 
  9.         { 
  10.             ecs_header("Location: flow.php?step=checkout\n"); 
  11.         } 
  12.         else 
  13.         { 
  14.            ecs_header("Location:index.php\n"); 
  15.         } 
  16.         exit
  17.         } 
  18.     else 
  19.     { 
  20.         $user->logout(); 
  21.         show_message('需要验证邮件才能登录'array($_LANG['back_up_page'], $_LANG['back_home_lnk']), array('flow.phpstep=login''index.php'), 'info'); 
  22. }

Tags: ecshop注册邮箱 ecshop邮箱验证

分享到: