/** * 用户注册 * @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; }
/** * 设置最后登录信息 * @param User $user * @throws \Exception */ public static function setLastLoginInfo($user) { cookie()->set("LoginFlag", date("Y-m-d")); $user->set(array('last_login_ip' => Ip::getInstance()->realip(), 'last_login_time' => date("Y-m-d H:i:s"))); }
/** * 构造方法,使用评论的信息和对应的用户类 * @param array $set_info * @param int $user_id */ function __construct($set_info, $user_id) { $this->ip_c = Ip::getInstance(); $this->user = User::getUser($user_id); if (is_array($set_info) && isset($set_info['comment_id'])) { static $names = []; if (count($names) === 0) { $ref = new \ReflectionClass($this); foreach ($ref->getProperties() as $ro) { $names[] = $ro->getName(); } $names = array_flip($names); unset($names['ip_c'], $names['user'], $names['sub_node']); } if (isset($set_info['comment_ip'])) { $set_info['comment_ip'] = $this->ip_c->bin2ip($set_info['comment_ip']); } foreach ($set_info as $k => $v) { if (isset($names[$k])) { $this->{$k} = $v; } } self::$comment_stack[$this->getCommentId()] = $this; } else { Log::write(_("Comment class construct error"), Log::ALERT); } }
/** * @param $list array * @throws \Exception */ public function set($list) { $data = []; $update = []; foreach ($list as $name => $value) { $name = trim($name); if ($name !== 'id' && in_array($name, self::$column_list)) { $data[$name] = $value; $update["user_" . $name] = $value; if (substr($name, -3) === '_ip') { $update["user_" . $name] = Ip::getInstance()->ip2bin($value); } } } lib()->load('UserCheck'); if (isset($update['user_aliases']) && empty($update['user_aliases'])) { throw new \Exception(_("Aliases can't set empty.")); } if (isset($update['user_email']) && !UserCheck::CheckEmailChar($update['user_email'])) { throw new \Exception(_("Email verify check Error")); } if (isset($update['user_name']) && !UserCheck::CheckUsernameChar($update['user_name'])) { throw new \Exception(_("Username verify check Error")); } if (isset($update['user_password']) && !UserCheck::CheckPasswordChar($update['user_password'])) { throw new \Exception(_("Password verify check Error")); } if (isset($update['user_url']) && $update['user_url'] != "" && !filter_var($update['user_url'], FILTER_VALIDATE_URL)) { throw new \Exception(_("Url check error")); } if (count($update) > 0) { if (db()->update("users", $update, ['id' => $this->id]) === false) { throw new \Exception(_("Can't update User info.") . debug("SQL msg:" . implode(",", db()->error()['write']))); } foreach ($data as $n => $v) { $this->{$n} = $v; } } }