Information Security
10 게시판 회원가입 페이지 + 로그인 페이지 구현 본문
3. 회원 가입 페이지: signup_ok.php
-아이디 중복 체크 기능을 구현할 것이다.
-> 아이디가 중복되지 않았으면 해당 회원의 정보를 DB에 저장한다.
signup.html 페이지에서 넘어온 값들을 각각 변수들에 저장한다.
-user 테이블에 저장되어 있는 user_id 값 중에 전달받은 id 값과 일치하는 값이 있는지 조회하는 select 문을 변수에 저장한다.
-이 sql 문을 실행한 후 조회된 결과의 행(row) 수를 exist 변수에 저장한다.
-이미 DB에 존재하는 아이디인 경우 exist 변수에는 1이 저장되어 'already user' 메시지를 출력한 뒤 window.history.back()(히스토리 목록에서 이전 URL 로드)가 실행되어 다시 회원 가입 페이지로 이동하게 된다.
-입력한 아이디가 DB에 존재하지 않는 경우 해당 정보를 DB에 저장할 것이다.
-회원의 아이디, 패스워드, 이메일을 저장하는 insert 문을 변수에 저장한다.
-insert 문의 실행이 성공했으면 로그인을 성공했다는 메시지를, 실패했으면 실패했다는 메시지를 출력한 후 main.php 페이지로 이동하게 된다.
실제로 기능이 구현되었는지 확인해보겠습니다.
-현재 DB가 비어있는 상태이기 때문에(첫번째 회원) 당연히 회원가입에 성공한다.
-[확인] 버튼을 누르면 main.php 페이지로 돌아간다.
-중복 체크 기능을 확인하기 위해 아까와 같은 정보로 회원가입을 시도한다.
-> already user 메시지가 출력된다.
[확인] 버튼을 클릭하면 다시 입력하는 페이지(signup.html)가 출력된다.
그럼 이제 중복되지 않는 아이디로 두번째 회원가입을 시도한다.
-> 성공!
DB에서 user 테이블을 조회해보면 insert 문에 의해 아이디가 중복되지 않는 회원의 정보가 삽입되어 있는 것을 확인할 수 있다.
signup_ok.php 페이지의 전체 코드는 위와 같다.
4. 로그인 페이지: signin_ok.php
-세션을 사용하여 사용자 인증 기능을 구현할 것이다.
-main.php 페이지에서 아이디와 패스워드를 입력하고 [Sign in] 버튼을 클릭하면 signin_ok.php로 이동하게 된다.
-전달받은 아이디와 패스워드는 각각 변수에 저장한다.
-user 테이블에 저장되어 있는 값이 전달받은 id, pw 값과 일치하는지 조회하는 select 문을 변수에 저장한다.
-DB에 전달받은 값이 저장되어 있다면 cnt 변수에는 1이 저장되고 아니라면 0이 저장될 것이다.
-if 문에서 조건문 $cnt>0이 참이라면($cnt==1) 세션 변수 [is_login]에 1이, [name]에 전달받은 id 변수가 저장된 후 main.php 페이지로 이동할 것이다.
-조건문이 거짓이라면($cnt==0), 세션 변수 [is_login]에 0이 저장된 후 main.php 페이지로 이동할 것이다.
main.php 페이지를 세션 변수 [is_login]의 값이 1이면 로그인이 되어 로그아웃 버튼을 출력하고 값이 0이면 다시 로그인하는 화면이 출력되도록 수정하였다.
-[Sign out](로그아웃) 버튼을 클릭하면 연결되는 페이지이다.
-로그아웃을 하면 생성했던 세션을 파기한 후 main.php 페이지로 돌아간다.
main.php에서 아이디, 패스워드를 입력하고 [Sign in] 버튼을 클릭한다.
session 폴더를 확인해보면 세션이 생성되어 있고, 그 안의 내용도 확인할 수 있다.
-main.php에서는 [Sign out] 버튼이 생기게 된다.
-이를 클릭하면 다시 로그인할 수 있는 화면으로 돌아간다.
session 폴더를 다시 확인하면 세션이 파기되어 방금 확인한 폴더는 사라진 것을 확인할 수 있다.
'Web Hacking > Web 기초' 카테고리의 다른 글
12 게시글 목록 출력 (0) | 2017.11.29 |
---|---|
11 게시글 작성 + 저장 페이지 (0) | 2017.11.28 |
09 게시판 기본 형식 구축 (1) | 2017.11.24 |
8 인증 처리 (0) | 2017.11.23 |
7 HTML + PHP + MySQL 실습 (0) | 2017.11.22 |