load_helper($file); // 属性赋值 $this->user_id = $_SESSION['user_id']; } /** * 用户登录 */ public function actionIndex() { // 是否为post提交 if(IS_POST){ $username = isset($_POST['username']) ? trim($_POST['username']) : ''; $password = isset($_POST['password']) ? trim($_POST['password']) : ''; $back_act = isset($_POST['back_act']) ? trim($_POST['back_act']) : ''; if(strpos($username,'@') && strpos($username,'.')){ $login = $this->db->getOne("SELECT user_name FROM {pre}users WHERE email='$username'"); if($login){ $username = $login; } }else if($this->isMobile($username)){ $login = $this->db->getOne("SELECT user_name FROM {pre}users WHERE mobile_phone='$username'"); if($login){ $username = $login; } } if ($this->users->login($username, $password)) { update_user_info(); recalculate_price(); $ucdata = isset($this->users->ucdata)? $this->users->ucdata : ''; $back_act = empty($back_act) ? U('user/index/index') : $back_act; show_message(L('login_success') . $ucdata , array(L('back_up_page'), L('profile_lnk')), array($back_act,U('user/index/index')), 'success'); } else { $_SESSION['login_fail'] ++ ; show_message(L('login_failure'), L('relogin_lnk'), U('user/login/index'), 'fail'); } exit; } // 获取返回地址 $back_act = urldecode(I('back_act')); if (empty($back_act)) { if (empty($back_act) && isset($GLOBALS['_SERVER']['HTTP_REFERER'])) { $back_act = strpos($GLOBALS['_SERVER']['HTTP_REFERER'], U('user/index/index')) ? U('user/index/index') : $GLOBALS['_SERVER']['HTTP_REFERER']; } else { $back_act = U('user/index/index') ; } } $this->assign('back_act', $back_act); $this->assign('page_title','用户登录'); $this->assign('passport_js',L('passport_js')); $this->display('user_login'); } /** * 找回密码 */ public function actionGetPasswordPhone() { $enabled_sms = I('enabled_sms'); // 手机找回密码处理 if (IS_POST) { if ($enabled_sms == 1) { $mobile = I('mobile', ''); $sms_code = I('sms_code', ''); if ($mobile != $_SESSION['sms_mobile'] or $sms_code != $_SESSION['sms_mobile_code']) { show_message('手机验证码输入错误。'); } $user_id = $this->db->getOne("SELECT user_id FROM {pre}users WHERE mobile_phone = " . $mobile); if(empty($user_id)){ show_message('手机号不存在。'); } $this->assign('uid', $user_id); $this->display('user_forget_password'); exit(); } // 邮箱找回密码 if ($enabled_sms == 2) { $this->send_pwd_email(); exit(); } } if ($enabled_sms == 2) { $this->assign('title', L('reset_password')); $this->display('user_forget_email'); exit; } $this->assign('page_title', L('get_password')); $this->display('user_forget_tel'); } /* * 找回密码 */ public function actionForgetPassword() { if (IS_POST) { $password = I('password', ''); $uid = I('uid', ''); if (empty($password)) { show_message("密码不能为空"); } if ($uid<1) { show_message("操作有误"); } $sql = "SELECT user_name FROM {pre}users WHERE user_id=".$uid; $user_name = $this->db->getOne($sql); if ($this->users->edit_user(array('username'=>$user_name, 'old_password'=>$password, 'password'=>$password), 0)){ $sql="UPDATE {pre}users SET `ec_salt`='0' WHERE user_id= '".$uid."'"; $this->db->query($sql); unset($_SESSION['user_id']); unset($_SESSION['user_name']); show_message('修改成功 ' , '返回登录页面', U('user/login/index'), 'success'); } show_message('修改失败' , '继续找回密码', U('user/login/get_password_phone',array('enabled_sms'=>2)), 'info'); } } /** * 发送密码修改确认邮件 */ public function send_pwd_email() { // 初始化会员用户名和邮件地址 $user_name = I('user_name', ''); $email = I('email', ''); $user_name = $this->db->getOne("SELECT user_name FROM {pre}users WHERE email='$email'"); // 用户信息 $user_info = $this->users->get_user_info($user_name); if ($user_info['user_name']==$user_name && $user_info['email'] == $email) { // 生成code $code = md5($user_info['user_id'] . C('hash_code') . $user_info['reg_time']); // 发送邮件的函数 if (send_pwd_email($user_info['user_id'], $user_name, $email, $code)) { $this->assign('data',$user_info['email']); $this->assign('code',$_SESSION['maildata']['code']); $this->display('user_forget_code'); } else { // 发送邮件出错 show_message(L('fail_send_password'), L('back_page_up'), U('get_password_phone',array('enabled_sms'=>2)), 'info'); } } else { // 用户名与邮件地址不匹配 show_message(L('username_no_email'), L('back_page_up'), U('get_password_phone',array('enabled_sms'=>2)), 'info'); } } /* **邮件修改密码验证 */ function actionEditForgetMail(){ if(IS_POST){ $email=I('email',''); $code =md5(I('email_code','')); if($code != $_SESSION['maildata']['code']){ show_message('验证码错误'); } if(empty($email)){ show_message('邮箱不匹配'); } $this->assign('uid',$this->db->getOne("SELECT user_id FROM {pre}users WHERE email='$email'")); $this->display('user_forget_password'); } } /** * 修改密码 */ public function actionEditPassword() { // 修改密码处理 if (IS_POST) { $old_password = I('old_password', null); $new_password = I('userpassword2', ''); $user_id = I('uid', $this->user_id); $code = I('code', ''); // 邮件code $mobile = I('mobile', ''); // 手机号 if (strlen($new_password) < 6) { show_message("密码不能小于6位"); } $user_info = $this->users->get_profile_by_id($user_id); // 论坛记录 // 短信找回,邮件找回,问题找回,登录修改密码 if ((! empty($mobile) && base64_encode($user_info['mobiles']) == $mobile) || ($user_info && (! empty($code) && md5($user_info['user_id'] . C('hash_code') . $user_info['reg_time']) == $code)) || ($_SESSION['user_id'] > 0 && $_SESSION['user_id'] == $user_id && $this->load->user->check_user($_SESSION['user_name'], $old_password))) { echo 'asdas'; exit(); if ($this->load->user->edit_user(array( 'username' => ((empty($code) && empty($mobile) && empty($question)) ? $_SESSION['user_name'] : $user_info['user_name']), 'old_password' => $old_password, 'password' => $new_password ), empty($code) ? 0 : 1)) { echo 'asdas'; exit(); $data['ec_salt'] = 0; $where['user_id'] = $user_id; $this->db->table('users') ->data($data) ->where($where) ->update(); echo 'asdas'; exit(); $this->load->user->logout(); show_message(L('edit_password_success'), L('relogin_lnk'), url('login'), 'info'); } else { show_message(L('edit_password_failure'), L('back_page_up'), '', 'info'); } } else { show_message(L('edit_password_failure'), L('back_page_up'), '', 'info'); } } // 显示修改密码页面 if (isset($_SESSION['user_id']) && $_SESSION['user_id'] > 0) { $this->assign('title', L('edit_password')); // 判断登录方式 if ($this->is_third_user($_SESSION['user_id'])) { $this->assign('is_third', 1); } $this->assign('page_title', '修改密码'); $this->display(); } else { $this->redirect(url('login', array( 'referer' => urlencode(url($this->action)) ))); } } /** * 退出 */ public function actionLogout() { if ((! isset($this->back_act) || empty($this->back_act)) && isset($_SERVER['HTTP_REFERER'])) { $this->back_act = strpos($GLOBALS['_SERVER']['HTTP_REFERER'], 'c=user') ? url('index') : $GLOBALS['_SERVER']['HTTP_REFERER']; } else { $this->back_act = U('user/login/index'); } $this->users->logout(); show_message(L('logout'), array( L('back_up_page'), L('back_home_lnk') ), array( $this->back_act, U('site/index/index') ), 'success'); } /** * 清空浏览历史 */ public function clear_history() { // ajax请求 if (IS_AJAX && IS_AJAX) { setcookie('ECS[history]', '', 1); echo json_encode(array('status' => 1)); } else { echo json_encode(array('status' => 0)); } } /** * 用户注册 */ public function actionRegister(){ if(IS_POST){ if(I('enabled_sms') == 1){ //$username = isset($_POST['username']) ? trim($_POST['username']) : ''; $username = isset($_POST['mobile']) ? trim($_POST['mobile']) : ''; $mobile = isset($_POST['mobile']) ? trim($_POST['mobile']) : ''; $password = isset($_POST['smspassword']) ? trim($_POST['smspassword']) : ''; $sms_code = isset($_POST['mobile_code']) ? trim($_POST['mobile_code']) : ''; $repassword = isset($_POST['repassword']) ? trim($_POST['repassword']) : ''; $back_act = isset($_POST['back_act']) ? trim($_POST['back_act']) : ''; if ($mobile != $_SESSION['sms_mobile'] or $sms_code != $_SESSION['sms_mobile_code']) { show_message('手机验证码输入错误。'); } if (strlen($username) < 3) { show_message(L('passport_js.username_shorter')); } if (strlen($password) < 6) { show_message(L('passport_js.password_shorter')); } if (strpos($password, ' ') > 0) { show_message(L('passwd_balnk')); } if ($password != $repassword) { show_message('两次密码输入不一致'); } $email = $username.'@qq.com'; $other = array( 'mobile_phone' => $mobile, ); }elseif(I('enabled_sms') == 2){ $username = isset($_POST['username']) ? trim($_POST['username']) : ''; $email = isset($_POST['email']) ? trim($_POST['email']) : ''; $password = isset($_POST['password']) ? trim($_POST['password']) : ''; $repassword = isset($_POST['confirm_password']) ? trim($_POST['confirm_password']) : ''; $back_act = isset($_POST['back_act']) ? trim($_POST['back_act']) : ''; $passport_js = L("passport_js"); if (strlen($username) < 3) { show_message($passport_js['username_shorter']); } if (strlen($password) < 6) { show_message(L('passport_js.password_shorter')); } if (strpos($password, ' ') > 0) { show_message(L('passwd_balnk')); } if ($password != $repassword) { show_message('两次密码输入不一致'); } $other = array(); } if (register($username, $password, $email, $other) !== false) { /* 判断是否需要自动发送注册邮件 */ if (C('member_email_validate') && C('send_verify_email')) { send_regiter_hash($_SESSION['user_id']); } $ucdata = isset($this->users->ucdata)? $this->users->ucdata : ''; show_message(sprintf(L('register_success'), $username.$ucdata), L('profile_lnk'), U('user/index/index'), 'success'); } else { if($this->db->getOne("SELECT count(user_name) as a FROM {pre}users WHERE user_name='".$username."'")){ $error = '用户名已注册'; }elseif($this->db->getOne("SELECT count(email) as a FROM {pre}users WHERE email='".$email."'")){ $error = '邮箱已注册'; } show_message('注册失败 '.$error,'' ,U('user/login/register'),'fail'); } } if ((!isset($back_act)||empty($back_act)) && isset($GLOBALS['_SERVER']['HTTP_REFERER'])) { $back_act = strpos($GLOBALS['_SERVER']['HTTP_REFERER'], 'user.php') ? './index.php' : $GLOBALS['_SERVER']['HTTP_REFERER']; } /* 验证码相关设置 */ if ((intval(C('shop.captcha')) & CAPTCHA_REGISTER) && gd_version() > 0) { $this->assign('enabled_captcha', 1); $this->assign('rand', mt_rand()); } $_SESSION['sms_code'] = $sms_code = md5(mt_rand(1000, 9999)); $this->assign('sms_code', $sms_code); $this->assign('flag','register'); $this->assign('back_act', $back_act); $this->assign('page_title','注册用户'); $this->assign('show',$GLOBALS['_CFG']['sms_signin']); $this->display('user_register'); } /** * 验证验证码 */ public function actionCheckcode() { if (IS_AJAX) { $verify = new Verify(); $code = I('code'); $code = $verify->check($code); if ($code == true) { $code = 1; echo json_encode($code); } else { $code = 0; echo json_encode($code); } } } /** * 生成验证码 */ public function actionVerify() { $verify = new Verify(); $this->assign('code', $verify->entry()); } function isMobile($mobile) { if (!is_numeric($mobile)) { return false; } return preg_match('#^13[\d]{9}$|^14[5,7]{1}\d{8}$|^15[^4]{1}\d{8}$|^17[0,6,7,8]{1}\d{8}$|^18[\d]{9}$#', $mobile) ? true : false; } /** * 验证是否登录 */ public function actionchecklogin(){ if(!$this->user_id){ $url = urlencode(__HOST__ . $_SERVER['REQUEST_URI']); if(IS_POST) { $url = urlencode($_SERVER['HTTP_REFERER']); } ecs_header("Location: ".U('user/login/index',array('back_act'=>$url))); exit; } } }