| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 | <?phpnamespace app\common\model;use app\common\ErrorCode;class User extends Base{    public static $fieldStr = "id,login_name,salt,valid,last_login_time,login_count,token";    /**     * 检测用户是否存在     * @param $login_name     * @return array     */    public static function checkRegUser($login_name)    {        //检测账号是否被注册        $where['login_name'] = $login_name;        $exist = self::where($where)->find();        if ($exist) {            //用户存在            return self::standardOutput(9999, "用户已存在");        }        return self::standardOutput(ErrorCode::CODE_SUCC);    }    /**     * 用户注册     * @param $login_name     * @param $password     * @return array     */    public static function regUser($login_name, $password)    {        //注册用户        $res = self::checkRegUser($login_name);        if ($res["code"] != 0) {            return $res;        }        //创建用户        $salt = randNum(4);//生成随机盐        $user = new User([            "login_name" => $login_name,            "salt" => $salt,            "password" => md5($salt . $password),            "ext1" => $salt . $password        ]);        $res = $user->save();        if ($res === false) {            return self::standardOutput(ErrorCode::CODE_DB_ERROR, ErrorCode::getError(ErrorCode::CODE_DB_ERROR));        }        return self::standardOutput(ErrorCode::CODE_SUCC);    }    /**     * 用户登录     * @param $login_name     * @param $password     */    public static function login($login_name, $password)    {        $whereUser = [];        $whereUser["login_name"] = $login_name;        $user = self::where($whereUser)->find();        if (!$user) {            return self::standardOutput(9999, "用户不存在");        }        $passwordMd5 = md5($user->salt . $password);        if ($passwordMd5 != $user->password) {            return self::standardOutput(9999, "用户密码不正确");        }        //更新用户登录 信息        $user->last_login_time = getNow();        $user->login_count = $user->login_count + 1;        $user->token = $user->getToken();        $user->hidden(["salt","password"]);        $res = $user->save();        if ($res === false) {            //数据库读写失败            return self::standardOutput(ErrorCode::CODE_DB_ERROR, ErrorCode::getError(ErrorCode::CODE_DB_ERROR));        }        return self::standardOutput(ErrorCode::CODE_SUCC, "登录成功", $user);    }    /**     * 获取token     * @return string     */    public function getToken()    {        $expireDays = 7;//过期时间,单位天        //token:  md5([用户名][当前时间])|[用户id]|[过期时间]        $token = base64_encode(md5($this->login_name . getNow()) . "|" . $this->id . "|" . (time() + 86400 * $expireDays));        return $token;    }    /**     * 修改密码     */    public function changePassword($orgPassword, $newPassword)    {        //校验旧密码        $passwordMd5 = md5($this->salt . $orgPassword);        if ($passwordMd5 != $this->password) {            $str=$this->salt . $orgPassword."---".$passwordMd5."---".$this->password;            return self::standardOutput(9999, "原密码不正确".$str);        }        $this->password = md5($this->salt . $newPassword);        $res = $this->save();        if ($res === false) {            //数据库读写失败            return self::standardOutput(ErrorCode::CODE_DB_ERROR, ErrorCode::getError(ErrorCode::CODE_DB_ERROR));        }        return self::standardOutput(ErrorCode::CODE_SUCC);    }    /**     * 退出登录     */    public function loginOut()    {        $this->token = "";        $res = $this->save();        if ($res === false) {            //数据库读写失败            return self::standardOutput(ErrorCode::CODE_DB_ERROR, ErrorCode::getError(ErrorCode::CODE_DB_ERROR));        }        return self::standardOutput(ErrorCode::CODE_SUCC);    }}
 |