구현한 기능
1. 회원가입 및 로그인, 이메일 인증
2. 게시판 글쓰기, 글수정, 글삭제, 파일업로드, 추천, 댓글
3. 게시글 검색 - 게시판 별 검색, 제목 기준 검색, 내용 기준 검색, 전체 기준 검색
4. 무한 F5 방지 게시글 방문자 조회수
1. 회원가입 및 로그인, 이메일 인증
회원가입
회원 가입 시 입력하는 폼 작성 -> action='register.php' method='post':
보통 회원가입이나 로그인할 때는 메소드를 POST 로 전달한다. 이유는 GET 메소드 이용 시 이는 파라미터를 통해 전달하기 때문에 보안에 문제가 있기 때문이다.
폼 입력 후 회원가입 버튼 클릭 -> php 코드 실행 -> include "lib.php" -> 다른 php 파일을 포함시켜 변수를 이용할 수 있음.
: 아이디, 비밀번호, 비밀번호 확인, 이메일이 입력되지 않으면 입력하는 경고문이 나옴.
: 비밀번호, 비밀번호 확인이 서로 같아야 회원가입이 가능함.
: 이메일 형식에 맞춰서 써야하는데 이때, 형식만 맞추면 말도 안되는 이메일도 등록이 가능함. But, 그렇게 하면 이메일 인증이 불가능하므로 사이트 이용이 불가능함. -> 추후 업데이트 필요함.
로그인
이미 로그인이 되어있으면 로그인을 다시 하지 않기 위한 php 파일 include -> 로그인 완료 = 세션 획득 -> 세션이 존재하면 $login = true 대입함.
로그인 폼에 id, pw 입력 후 로그인 버튼 -> action='login.php' method=''post'DB 에서 회원 정보를 꺼내오고 존재하면 로그인이 되어야함. -> 이때, 이메일 인증이 되지 않은 회원은 이메일 인증 페이지로 넘어감.
이메일 인증
외부 SMTP 서버를 사용함. -> 필자는 네이버 SMTP 을 사용함. ( 구글로 했다가 몇시간동안 먹통이라 변경한 건 안 비밀.. )
회원가입 할 당시에 회원이 이메일 인증을 하지 않았으므로 비활성화를 시켜놓음.
이메일 인증이 되면 활성화 되는 방식으로 구성함.
이메일까지 성공적으로 보냈는데 인증 링크를 누르면 인증이 완료되었다고 뜨지만 막상 로그인하면 활성화가 되지 않음.
시간을 좀 두고 페이지를 껐다 켜야 활성화가 됨. -> DB 는 이메일 속 링크를 누르면 활성화 상태로 바뀌는데 바로 반영이 되지 않은 건지 코드에 문제가 있는 건지 업데이트가 필요함. (해결 완료! 원인 = 사용자 불량 ㅋ.. 코드가 이상했었음.)
이 기능 진짜 헬이였다..
잘하는 친구한테 이메일 인증으로 고통받고 있다고 하니까
이해를 못하더라.. 난 아직 감자야..
+) 절대 깃허브에 이메일 계정 보여주지 말 것..
밤 사이에 자꾸 이상한 곳에 메일 보냈다가 실패했다고 메일이 왔는데 결국 이메일 정지 당해서
새로운 계정으로 서버 만들어서 다시 살림.. 이건 절대 공개안하고 서버에만 적용했음^^..
2. 게시판 글쓰기, 글수정, 글삭제, 파일업로드, 추천, 댓글
게시판 글쓰기, 글수정, 글삭제, 파일업로드
이건 생활코딩 영상에 나와있는거라 구현하기가 비교적 쉬웠음.
하지만 게시판 구현 후 추천, 댓글 기능을 추가하는 과정에서 애먹음..
애초부터 php 사용이 동적인 웹 사용을 위한 건데 내 코드는 기능 한번 수정하려면 대대적인 작업이 필요함.. 공부 더 해야할듯..
추천
이메일 인증 다음으로 제일 오래 걸렸던 기능..
처음에 예쁘게 하트 모양으로 좋아요 기능 추가하려다가 몇시간 날린 것도 안 비밀..
댓글
댓글도 오래 걸리는 삼대장 중에 하나였는데 오래 걸렸던 이유가
댓글 등록까지는 게시판 글쓰기 기능처럼 활용하면 되는데 보통 사이트가서 보면 댓글 달고 바로 댓글이 올라오는데
그걸 어떻게 해야하는지 머리가 전혀 돌아가지 않았다.. php 에 대한 이해가 낮았을 때 구현하려고 시도한 기능이라 더 그런듯?
게시판 리스트 불러오는 것처럼 불러오면 되는 거였음!
3. 게시글 검색 - 게시판 별 검색, 제목 기준 검색, 내용 기준 검색, 전체 기준 검색
처음에 게시판 별 검색은 어떻게 하나 고민했었는데
그냥 게시판 선택할 때도 option 을 따로 주고 php 코드에서 이용하는 방식으로 구현했다.
이게 맞는지는 모르겠다.. 뭔가 야매인 거 같기도 하고..
제목, 내용 기준 검색은 구현하기 매우 수월했는데 제목+내용은 어떻게 구현하나 초반에 고민했었다.
sql 문법과 적절한 조건문을 활용하지 못해서 고민했던 것 같다. 코드를 예쁘게 잘 짜는 것도 능력이구나 싶었다.
4. 무한 F5 방지 게시글 방문자 조회수
이건 쿠키값을 이용해서 1시간마다 업데이트되게 했다!
이거 기능 구현하기 전에 새로고침하면 계속 숫자 올라가는 게 좀 재밌었는데 아쉬웠다.
항상 개발이든 보안이든 공부를 시작하려면 웹 사이트 구현부터 해보라는 말을
마르고 닳도록 들었는데 맨날 해야지하면서 안했는데 이번 기회에 웹 사이트 구현을 하게 되어서 너무 보람찼고 도움이 많이 되었다.
그리고 구현하면서 내가 부족한 점이 무엇인지, 코드를 짤 때 유지 보수를 신경쓰고, 보안에 신경을 써야한다는 사실을 깨달았다.
특히 유지 보수를 생각한다면 나처럼 절!대! 짜면 안된다.
내가 짜면서도 느꼈고 기능 구현하는 것에 급급해서 기능 하나 추가하려고 하면
몇시간동안 눈빠져라 수정해야해서 이건 아니다.. 라고 싶었다..
친구가 옆에서 코드 보더니 못 볼 걸 봤다고 눈을 감는 걸 목격했다.. 일하고 있는 친구라 더 빡쳤나보다..
내가 구현한 사이트로 웹 해킹 실습을 한다는데
나.. 정말 시큐어 코딩 할 거 엄청 많겠다..
'TeamH4C' 카테고리의 다른 글
[빡공팟 5기] W4 : Mac OS 에서 Burp Suite 설치 및 기본 기능 이해 (0) | 2022.10.12 |
---|---|
[빡공팟 5기] W1 ~ W3 : 파이썬 기초 100제 중 5문제 블로깅 과제 (1) | 2022.10.10 |
[빡공팟 5기] W1 ~ W3 : 초기 화면 구성 및 DB 연결 (0) | 2022.10.04 |
[빡공팟 5기] W1 ~ W3 : 웹 사이트 구현 초기 설정 (1) | 2022.09.30 |
[빡공팟 5기] 생활코딩의 WEB1 - HTML & internet (0) | 2022.09.29 |