@firedown
@firedown
关注的小组(2)
动态 帖子 0 评论 1 短评 0 收到的赞 0 送出的赞 0
  1. firedown   在小组 2049BBS 回复文章

    小二的在编程技术上的幼稚远超出你我的想象。

    注册页面源码

    https://github.com/Terminus2049/2049bbs/blob/b65c6211bd4d59ff8e0cf6e9a5f25431d47a9bff/controller/user.go#L91

    // register

    ``siteCf := h.App.Cf.Site if siteCf.CloseReg { w.Write([]byte({"retcode":400,"retmsg":"stop to new register"})) return } if db.Hget("user_name2uid", []byte(nameLow)).State == "ok" { w.Write([]byte({"retcode":405,"retmsg":"name is exist","newCaptchaId":" + captcha.New() + "})) return }

        userId, _ := db.HnextSequence("user")
        flag := 5
        if siteCf.RegReview {
            flag = 1
        }
    
        if userId == 1 {
            flag = 99
        }
    
        uobj := model.User{
            Id:            userId,
            Name:          rec.Name,
            Password:      rec.Password,
            Flag:          flag,
            RegTime:       timeStamp,
            LastLoginTime: timeStamp,
            Session:       xid.New().String(),
        }
    
        // 从指定的用户中随机选一个头像作为新注册用户头像
        // 指定用户必须连续,取最小id和最大id
    
        rand.Seed(time.Now().UnixNano())
        min := siteCf.AvatarMinId // 2539
        max := siteCf.AvatarMaxId // 2558
        sampleID := rand.Intn(max-min+1) + min
        uidStr := strconv.FormatUint(uint64(sampleID), 10)
        uobj.Avatar = uidStr
        uobj.IgnoreLimitedUsers = true
    
        jb, _ := json.Marshal(uobj)
        db.Hset("user", youdb.I2b(uobj.Id), jb)
        db.Hset("user_name2uid", []byte(nameLow), youdb.I2b(userId))
        db.Hset("user_flag:"+strconv.Itoa(flag), youdb.I2b(uobj.Id), []byte(""))
    
        h.SetCookie(w, "SessionID", strconv.FormatUint(uobj.Id, 10)+":"+uobj.Session, 365)
    }``