Ejemplo n.º 1
0
 /**
  * 用户注册
  * @param $email     string 邮箱
  * @param $password  string   hash密码
  * @param $name      string 用户名
  * @param $captcha   string 验证码
  * @return int    错误代码或者用户成功注册ID
  */
 public function Register($email, $password, $name, $captcha)
 {
     $email = strtolower(trim($email));
     $password = strtolower(trim($password));
     $name = strtolower(trim($name));
     $captcha = trim($captcha);
     if (($code = hook()->apply("UserRegister_Register_before", 0, $email, $password, $name, $captcha)) < 0) {
         return $code;
     }
     if (!$this->Captcha($captcha)) {
         return -1;
     }
     if (!UserCheck::CheckPassword($password)) {
         return -2;
     }
     if (UserCheck::CheckName($name) !== true) {
         return -4;
     }
     if (UserCheck::CheckEmail($email) !== true) {
         return -5;
     }
     $ip = new Ip();
     $register_array = ['user_name' => $name, 'user_email' => $email, 'user_aliases' => $name, 'user_password' => '', 'user_salt' => salt(64), 'user_registered_time' => date("Y-m-d H:i:s"), 'user_registered_ip' => $ip->ip2bin($ip->realip()), 'user_cookie_salt' => salt(64), 'user_avatar' => UserCheck::DefaultAvatar(), 'user_status' => 0];
     $register_array['user_password'] = UserCheck::CreatePassword($password, $register_array['user_salt']);
     $reg_code = db()->insert("users", $register_array);
     if ($reg_code <= 0) {
         Log::write(_("User register insert sql error."), Log::SQL);
         return -3;
     }
     try {
         //关于注册成功的提醒
         hook()->apply("UserRegister_Register_success", $reg_code, $register_array);
         if (hook()->apply("UserRegister_Register_success_send_mail", true)) {
             //判断是否注册过程中需要发送注册邮件
             $u = new User($reg_code);
             $this->SendActivationMail($u);
         }
     } catch (\Exception $ex) {
         Log::write(_("User register success exception notice"), Log::NOTICE);
     }
     return $reg_code;
 }
Ejemplo n.º 2
0
 /**
  * @param $user_name
  * @param $code
  * @param $password
  * @throws \Exception
  */
 public function reset_password_finish($user_name, $code, $password)
 {
     $password = trim($password);
     $status = $this->reset_password_check($user_name, $code);
     if ($status !== true) {
         throw new \Exception($status);
     }
     if ($this->reset_password_user !== NULL) {
         lib()->load('UserCheck');
         if (UserCheck::CheckPassword($password) !== true) {
             $this->throwMsg(-6);
         }
         $this->reset_password_user->getMeta()->delete(['Reset_password_code', 'Reset_password_time']);
         $s_p = UserCheck::CreatePassword($password, $this->reset_password_user->getSalt());
         $this->reset_password_user->set(['password' => $s_p, 'cookie_login' => '', 'error_login_count' => 0]);
     } else {
         $this->throwMsg(-5);
     }
 }