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(); } }
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(); }