해당 게시글은 빡공팟 4기(with TeamH4C)와 관련되어 있습니다
W2: [개발프로젝트] HTML, PHP, MySQL, js 공부 (CSS)
- 블로그에 개발 진척도에 관한 설명글 작성
> 설명글
현재까지 진행된 사항을 정리해보면 다음과 같습니다.
1.회원가입 기능 구현
2.로그인 기능 구현
3.이메일 인증 기능 구현
4.게시판 글쓰기, 댓글, 추천, 파일 업로드 구현
5.게시판 별 검색 기능 미구현
6.페이지별 미숙한 CSS 적용
시작 전
개인적으로 자바스크립트를 HTML에서 사용하는 것이 뜻대로 되지 않는 부분이 많아서 대부분을 php로 진행하였고, db연동 부분을 모두 php로 진행되었습니다. 인터넷에서 알려주는 JQuery? Ajax? 에 대한 개념을 접하기에 아직 어려워 비동기 방식으로 데이터 교환을 하지는 못했습니다.
시도를 해보았으나 뜻하는 결과가 나오지 않던 node.js 같은 언어에 비해
php는 생각대로 잘 되어서 비중이 높았던 것 같습니다.
자바도 잘하고 싶습니다. ㅠㅠ
회원가입
진척도에 관한 글이기에 세부적인 코드리뷰는 3주차에 정리할 예정입니다.
데이터는 POST방식으로 전달하였고, 빈칸이 존재할 시 입력을 요구합니다.
또한 이메일이 인증되지 않은 경우에도 가입이 불가능 합니다.
사용된 DB의 정보는 다음과 같습니다.
CREATE TABLE userinfo (
idx int(4) NOT NULL AUTO_INCREMENT,
useremail varchar(40) NOT NULL,
userid varchar(10) NOT NULL,
userpw varchar(65) NOT NULL,
username varchar(10) NOT NULL,
usertrack varchar(20) NOT NULL,
createtime DATETIME,
PRIMARY KEY (idx)
);
고유키 값을 idx로 설정하여 중복되지 않도록 설정하였고, 비밀번호는 SHA256을 이용하여 암호화 하였기에 저장 길이를 64byte보다 길 수 있도록 하였습니다. 데이터 타입 중 DATETIME 은 년일월 뿐만 아니라 시분초 까지 기록하는 형식이라고 합니다.
로그인
POST 방식으로 데이터를 넘기고 php의 $_SESSION['username']
을 이용하여 세션 정보를 저장합니다. 해당 세션 값이 존재하지 않을 경우에 main.php
와 같은 메인 페이지에서 로그인 페이지로 리다이렉션 되도록 설정해두었습니다.
이메일 인증
가장 큰 문제점을 말씀드리면 이메일을 보내는데 30초 정도의 시간이 소요됩니다.
이 부분을 절대적으로 해결하고 싶었으나 한 곳에 너무 시간을 쏟는 것 같아서 추후 시간을 분배하여 개선해보려고 합니다. 6자리의 랜덤한 숫자를 발송하여 인증하는 방식으로 db에서 생성 시간을 저장해둠으로써 유효 시간 검사를 할 수 있도록 했습니다.
CREATE TABLE varify(
useremail varchar(40) NOT NULL,
createtime DATETIME NOT NULL,
code varchar(7) NOT NULL
);
최종적인 db정보는 수정될 수 있지만 현재 이메일 인증을 위해서 만든 db 입니다. 인증 번호 발송 이후에 재발송은 3분이 지나야만 가능하도록 하였고, 5분이 지나면 만료된 인증 정보가 뜨도록 하였습니다.
가능하다면 가장 손봐주고 싶은 단계이고 능력이 좀 더 됐더라면 하는 바람입니다.
게시판
main.php
로 로그인 시 바로 확인되는 페이지입니다.
다이어리처럼 만들고 싶은 디자인이였으나 실력이 많이 부족했고, 게시글 최대 출력 갯수를 지정하지 않아서 글이 많아지면 css가 뚫릴 예정입니다.
기본적으로 게시글 고유 번호와, 날짜, 제목, 작성자, 조회수, 추천이 보이도록 하였고, 조회수는 아직까지 새로고침 시마다 카운트가 올라가도록 설정되어 있습니다. 추후 코드 보완 시에 추가할 예정입니다.
노트를 본다는 느낌을 들게하려고 css를 큼직큼직하게 했더니 한 화면에 다 담기질 않아서 축소하여 캡쳐한 화면입니다. 추천은 글 내용의 가장 하단에 버튼이 있는데 짤렸습니다 ㅠ.
아래는 파일 업로드를 한 뒤에 게시글 상태입니다.
또한 제목 길이가 길 경우 …으로 대체되도록 하였습니다.
파일 업로드와 관련해서 보안적인 문제가 좀 있을 법하여 보완할 예정입니다.
다음 목표
- 게시판별 검색 기능 추가
- 추천,조회수별 정렬 기능 추가
- ID/PW 찾기 기능 추가
- 사용자 정보 출력
- 게시글 수정 기능 추가
- 글 삭제 시 댓글도 함께 삭제
- 코드 다듬기
- 서버 호스팅하기
정리
앞서 구현한 페이지들의 코드는 모두 제 깃허브에 올라와있으며 민감한 설정값들도 올라가 있는 상태입니다. 하지만 로컬 환경의 서버만을 운용하고 있기에 조치하지 않았습니다.
곧 아마존 EC2를 이용하여 외부 서버에서도 접근이 가능하도록 환경을 구성할 예정이며 해당 시기에 깃허브의 파일들이 일부 수정될 예정입니다.
시스템 해킹을 하려면 프로그램을 만들어봐야 하는 것처럼 웹 해킹을 하기 위해서 웹을 만들어봐야 한다는 것을 알았습니다. 그렇지만 혼자서 막연히 하려했을 땐 시작하지 못했지만 지금이나마 해볼 수 있고 할 수 있도록 과제를 내주셔서 감사합니다.
과제 시작일로부터 3주가 지나기 전에 완성된 코드로 페이지 주소와 함께 올리겠습니다.
감사합니다.