Exemplo n.º 1
0
        public void Register(string id, string pw1, string pw2, string email) // 회원가입
        {
            // 요청을 보내기전에 기본적인 사항들을체크한다.
            if (id == "")
            {
                regForm.lbl_state.Text = "아이디를 입력해주세요";
                return;
            }
            else if (pw1 == "")
            {
                regForm.lbl_state.Text = "비밀번호를 입력해주세요";
                return;
            }
            else if (!(pw1.Equals(pw2)))
            {
                regForm.lbl_state.Text = "비밀번호가 일치하지 않습니다.";
                return;
            }
            else if (email == "")
            {
                regForm.lbl_state.Text = "e-mail을 입력해주세요.";
                return;
            }

            BinaryFormatter serializer = new BinaryFormatter();
            TcpClient       regClient  = new TcpClient(clientAdress);

            regClient.Connect(loginAdress);
            NetworkStream regStream = regClient.GetStream();
            ReqSignPack   reqPack   = new ReqSignPack
            {
                Id    = id,
                Pw    = pw1,
                Email = email
            };

            serializer.Serialize(regStream, reqPack);

            Pack flagPack = (Pack)serializer.Deserialize(regStream);

            if (flagPack.PackType == CONSTANTS.TYPE_ERROR) // 에러검사
            {
                regForm.lbl_state.Text = CONSTANTS.Err_String[flagPack.Flag];
                return;
            }
            else if (flagPack.PackType == CONSTANTS.TYPE_BASIC)
            {
                MessageBox.Show("회원가입이 완료 되었습니다.", "알림");
                regForm.Close();
            }
        }
Exemplo n.º 2
0
        public void CheckSign(ReqSignPack signPack)
        {
            Console.WriteLine("<->회원가입 요청 : {0}", ipString);
            // Pack에담긴 정보 담는 인스턴스
            string signId    = ((ReqSignPack)signPack).Id;
            string signPw    = ((ReqSignPack)signPack).Pw;
            string signEmail = ((ReqSignPack)signPack).Email;

            successPack.PackType = CONSTANTS.TYPE_ERROR;

            Regex regex_id    = new Regex(@"^[a-zA-Z0-9]{4,20}$"); // 영문자 또는 숫자로 구성된 4~20 글자수
            Regex regex_email = new Regex(@"^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$");

            if (!(regex_id.IsMatch(signId))) // id 규칙이 위반시
            {
                successPack.Flag = CONSTANTS.ERROR_ID_AGUMENT;
                serializer.Serialize(clientStream, successPack);
                Console.WriteLine("<!>형식에 맞지않는 ID : {0}", ipString);
                return;
            }
            else if (!(regex_email.IsMatch(signEmail))) // 올바르지않은 email일시
            {
                successPack.Flag = CONSTANTS.ERROR_EMAIL_AGUMENT;
                serializer.Serialize(clientStream, successPack);
                Console.WriteLine("<!>유효하지않은 e-mail : {0}", ipString);
                return;
            }

            query.Clear();
            query.Append("select * from users where (id COLLATE Korean_Wansung_CS_AS ='");
            query.Append(signId);
            query.Append("' OR email COLLATE Korean_Wansung_CS_AS ='");
            query.Append(signEmail);
            query.Append("')");

            sdr = Program.ldbc.SelectDB(query);

            if ((sdr.Read())) // 이미 해당 id가 있다면
            {
                if (sdr["id"].ToString() == signId)
                {
                    successPack.Flag = CONSTANTS.ERROR_DUPLICATE_ID;
                }
                else
                {
                    successPack.Flag = CONSTANTS.ERROR_DUPLICATE_EMAIL;
                }

                serializer.Serialize(clientStream, successPack);
                Console.WriteLine("<!>아이디가 이미있으므로 회원가입 실패 / ID : {0} IP : ", signId, ipString);
                return;
            }

            sdr.Close();
            // ---------- 여기까지오면 계정을 추가해도 된다.
            // 테이블에 요청한 정보에따라 insert

            query.Clear();
            query.Append("insert into users(id, pw, email) values('");
            query.Append(signId);
            query.Append("', '" + signPw + "', '");
            query.Append(signEmail);
            query.Append("')");

            Program.ldbc.InsertDB(query);

            successPack.PackType = CONSTANTS.TYPE_BASIC;
            Console.WriteLine("<->회원가입 성공 / ID : {0} IP : {1} ", signId, ipString);
            serializer.Serialize(clientStream, successPack);

            sdr.Close();
        }