회원정보를 DB에 저장 중복값 구별

길라잡이 0 11 09.25 07:31

만드는 방법 또한 매우 간단합니다. 값들을 받아서 insert into 문을 실행하면 끝이죠.

그럼 한번 만들어 볼까요.

  1. <?php
  2. include "../include/dbConnect.php";
  3.  
  4. $memberId = $_POST['memberId'];
  5. $memberName = $_POST['memberName'];
  6. $memberPw = $_POST['memberPw'];
  7. $memberPw2 = $_POST['memberPw2'];
  8. $memberNickName = $_POST['memberNickName'];
  9. $memberEmailAddress = $_POST['memberEmailAddress'];
  10. $memberBirthDay = $_POST['memberBirthDay'];
  11.  
  12. //PHP에서 유효성 재확인
  13.  
  14. //아이디 중복검사.
  15. $sql = "SELECT * FROM member WHERE memberId = '{$memberId}'";
  16. $res = $dbConnect->query($sql);
  17. if($res->num_rows >= 1){
  18. echo '이미 존재하는 아이디가 있습니다.';
  19. exit;
  20. }
  21.  
  22. //비밀번호 일치하는지 확인
  23. if($memberPw !== $memberPw2){
  24. echo '비밀번호가 일치하지 않습니다.';
  25. exit;
  26. }else{
  27. //비밀번호를 암호화 처리.
  28. $memberPw = md5($memberPw);
  29. }
  30.  
  31. //닉네임, 생일 그리고 이름이 빈값이 아닌지
  32. if($memberNickName == '' || $memberBirthDay == '' || $memberName == ''){
  33. echo '생일혹은 닉네임의 값이 없습니다.';
  34. }
  35.  
  36. //이메일 주소가 올바른지
  37. $checkEmailAddress = filter_var($memberEmailAddress, FILTER_VALIDATE_EMAIL);
  38.  
  39. if($checkEmailAddress != true){
  40. echo "올바른 이메일 주소가 아닙니다.";
  41. exit;
  42. }
  43.  
  44. //이제부터 넣기 시작
  45. $sql = "INSERT INTO member VALUES('','{$memberId}','{$memberName}','{$memberNickName}','{$memberPw}','{$memberEmailAddress}','{$memberBirthDay}');";
  46.  
  47. if($dbConnect->query($sql)){
  48. echo '회원가입 성공';
  49. }
  50. ?>
  51.  

소스를 설명해 볼껀데요.
일단 데이터 들을 받아 줍니다.

  1. $memberId = $_POST['memberId'];
  2. $memberName = $_POST['memberName'];
  3. $memberPw = $_POST['memberPw'];
  4. $memberPw2 = $_POST['memberPw2'];
  5. $memberNickName = $_POST['memberNickName'];
  6. $memberEmailAddress = $_POST['memberEmailAddress'];
  7. $memberBirthDay = $_POST['memberBirthDay'];

우리는 이전에 javascript를 통해서 아이디가 중복된 값인지 패스워드는 일치하는지 등등 검사를 했었습니다.
하지만 여기 페이지에서는 그 기능을 다시 만들어 줘야 합니다. PHP로요.
이렇게 해야 하는 이유는 무엇일까요?
바로 자바스크립트는 클라이언트 사이드 언어 이기 때문입니다. 클라이언트 사이드 언어는 크롬 인스펙터등을 통해서 얼마든지 소스를 조작가능 합니다.
즉, 우리가 만든 기능들을 검사하지 않게 하고 바로 넘어 갈 수도 있다는 것이지요, 물론 웹을 아는 나쁜 사람들일 것입니다.
이러한 사람들이 하는 행위를 방지하기 위해서 PHP에서도 그 과정을 한번 더 거칩니다.

  1. //PHP에서 유효성 재확인
  2.  
  3. //아이디 중복검사.
  4. $sql = "SELECT * FROM member WHERE memberId = '{$memberId}'";
  5. $res = $dbConnect->query($sql);
  6. if($res->num_rows >= 1){
  7. echo '이미 존재하는 아이디가 있습니다.';
  8. exit;
  9. }
  10.  
  11. //비밀번호 일치하는지 확인
  12. if($memberPw !== $memberPw2){
  13. echo '비밀번호가 일치하지 않습니다.';
  14. exit;
  15. }else{
  16. //비밀번호를 암호화 처리.
  17. $memberPw = md5($memberPw);
  18. }
  19.  
  20. //닉네임, 생일 그리고 이름이 빈값이 아닌지
  21. if($memberNickName == '' || $memberBirthDay == '' || $memberName == ''){
  22. echo '생일혹은 닉네임의 값이 없습니다.';
  23. exit;
  24. }
  25.  
  26. //이메일 주소가 올바른지
  27. $checkEmailAddress = filter_var($memberEmailAddress, FILTER_VALIDATE_EMAIL);
  28.  
  29. if($checkEmailAddress != true){
  30. echo "올바른 이메일 주소가 아닙니다.";
  31. exit;
  32. }

위의 소스에서와 같이 아이디 중복검사를 거치고 패스워드가 일치하는지를 검사하고 공백값이 있는지도 검사합니다.
저 위의 방법에서 걸린 사람들은 어차피 비정상적인 경로로 들어온 경우 이기 때문에 따로 어긋난 짓을 했을때의 행위는 만들어주지 않고 그냥 exit처리만 합니다.
저는 그렇지만 여러분들은 여러분이 원하는 방식으로 하면 됩니다. 비밀번호를 검사하고 비밀번호가 일치하면
$memberPw = md5($memberPw); 이렇게 md5라는 함수에 값을 넣는데요. 이러한 비밀번호가 암호화 처리가 됩니다. 여러분들이 웹 서비스를 만들때 고객분들의 비밀번호가 그대로 DB에 들어가면 안되겠죠? 만약 나쁜 누군가가 여러분이 만든 DB를 해킹한다면 암호화 되지 않은 비밀번호가
뚫린다면 정말 큰일이 납니다. 그렇게 하기 위해서 비밀번호는 개발자도, 회사 사장도, 비밀번호의 주인도 모르는 무언가로 변경되어 저장이 되어야 합니다. 무조건이요.
하지만 일부 쓰레기 같은 회사들은 암호화 하지 않고 저장하는 경우들도 많습니다. 그러니 조심 하세요. 

그리고 위의 과정들을 모두 거치면 저장을 합니다.

  1. //이제부터 넣기 시작
  2. $sql = "INSERT INTO member VALUES('','{$memberId}','{$memberName}','{$memberNickName}','{$memberPw}','{$memberEmailAddress}','{$memberBirthDay}');";
  3.  
  4. if($dbConnect->query($sql)){
  5. echo '회원가입 성공';
  6. }

짜잔 이렇게 저장이 가능합니다. 

 

Comments

번호 제목 글쓴이 날짜 조회
198 postfix 리눅스 패키지 중지하는 방법 길라잡이 10.17 8
열람중 회원정보를 DB에 저장 중복값 구별 길라잡이 09.25 12
196 error 에러주소 메인보네기 길라잡이 09.23 13
195 파이썬 티스토리 제목 카테고리 크롤링 길라잡이 09.22 10
194 리눅스 TOP 명령어 (시스템 전체상태를 실시간으로 파악) 길라잡이 09.16 18
193 [Python] 파이썬 설치방법 (64비트) 길라잡이 09.11 7
192 윈도우즈에 아나콘다, 텐서플로 설치하기 길라잡이 09.11 12
191 php 특정 웹페이지에 암호걸기 길라잡이 08.21 30
190 PHP와 JSON으로 Youtube 내채널 목록 가져오기 길라잡이 08.13 17
189 유투브 주소에서 아이디 값만 추출 길라잡이 08.13 22
188 유튜브 [YOUTUBE API] 유튜브 API통해 재생목록 및 VIEW_COUNT 출력 길라잡이 08.12 17
187 파이썬 MySql 쿼리 길라잡이 07.06 46
186 PHP 랜덤 문자열 생성 길라잡이 06.14 36
185 PHP 도메인명으로 아이피 확인하기 gethostbyname 길라잡이 06.13 43
184 파이썬 mysql 사용법 예제 pymysql 설치 길라잡이 06.13 54
183 MySQL 원격 접속 허용 길라잡이 06.13 50
182 IDLE 파이썬 쉘 길라잡이 06.13 52
181 파이썬 버전 확인 길라잡이 06.13 49
180 파이썬 DB연동 - PyMySQL + MySQL 길라잡이 06.13 43
179 php에서 쉘 명령어 실행 길라잡이 06.11 48
178 윈도우10 삭제가 안되는 폴더 파일 삭제하는 법 길라잡이 06.08 48
177 워드프레스 첫 번째 이미지를 자동으로 특성 이미지로 설정하는 방법 길라잡이 06.08 64
176 리눅스 CentOS 7 좀비 프로세스 생성, 찾기, 종료 길라잡이 06.04 51
175 MariaDB innodb_buffer_pool_size 최적화 항목들 길라잡이 06.01 64
174 리눅스 정보 조회 OS, CPU, RAM 길라잡이 06.01 52
173 MariaDB timeout 설정 길라잡이 06.01 53
172 데이터베이스 timeout 설정하기 길라잡이 06.01 44
171 MariaDB(MYSQL) 최적화 하기 – my.cnf(InnoDB) 설정 길라잡이 05.31 54
170 MariaDB Binlog Cache and Binlog Cache Size 길라잡이 05.31 61
169 apache error log 안쌓이게 하는 방법 길라잡이 05.31 50


 

페이스북에 공유 트위터에 공유 구글플러스에 공유 카카오스토리에 공유 네이버밴드에 공유