본문 바로가기
프로그래밍/WEB HACKING

[WEB HACKING] php 간단한 로그인 창 만들기 / 쿠키 & 세션 이용방법

by B T Y 2017. 8. 29.
반응형

 php 간단한 로그인 창 만들기 / 쿠키 & 세션 이용방법에 대해서 정리한다.

 

 

php 간단한 로그인 창 만들기

 

 

  * meta 태그를 이용하면 로그인이 성공하던지 실패 하던지간에 해당 창이 다시 원래 페이지로 돌아오도록 할 수 있다.

 

 

( 연관배열을 이용해서 id와 pw가 배열안에 있는 key와 value값과 일치하면 login succes라는 alert창을 띄워준다 ) 

 

 

( 연관배열안에 해당 id 혹은 pw가 일치하지 않았기 때문에 login failure라는 alert창을 띄운다 )

 

1. 쿠키를 사용한 사용자 인증

 

  - 쿠키를 굽는다.

  - setcookie(): 쿠키 발행 함수

 

 

2. 단점

 

  - 사용자의 개인정보가 로컬 컴퓨터에 남는다.

  - 쿠키의 유효기간동안은 재인증 없이 사용이 가능

 

 

 

( php 공식 홈페이지를 통해서 setcookie에 대한 정보를 검색해본 결과이고 '[ ]'가 되있는 부분은 생략 가능한 부분이다 )

 

 

( 로그인 성공시에는 해당 사용자에게 쿠키를 발행하게 되고 이후에는 이 쿠키를 이용해서 해당 사용자인지를 인증하게 된다 )

 

 

( 쿠키는 document.cookie를 통해서 확인이 가능하고 쿠키 갯수는 얼마든지 만들수 있다 )

 

 

( 쿠키정보는 $_COOKIE에 들어있고 key와 value 형태로 저장이 되어있다 )

 

 

( 쿠키를 이용하면 해당 사용자가 중복 로그인이 되는걸 방지할 수 있다 )

 

 

( 로그인 된 사용자를 로그아웃 할 수 있도록 logout 기능을 구현해주고 이때 해당 쿠키값을 없애줘야 한다 )

 

 

( logout시에 쿠키를 없애주는 코드이고 meta 태그를 이용해서 쿠키를 없애고 메인 페이지인 login.php로 돌아간다 )

 

 

 

 

 

- 세션

 

 

1. 세션

 

  - 쿠키의 단점을 보완하여 새로 나옴!

  - 브라우저가 실행중인 동안에만 유효

 

 

2. session 관련 함수

 

1). session_start()

 

  - 세션을 사용하는 곳에서는 무조건 제일 먼저 호출해야 한다.

 

  - 세션 아이디가 쿠키를 통해서 발급

 

 

( 세션 아이디는 위 그림과 같이 쿠키에 저장되어 있고 나머지 세션 정보들은 서버(세션)에 저장이 된다 )

 

 

 

2). $_SESSION

 

  - 사용자의 정보는 $_SESSION 변수를 통해서 관리

 

 

( 세션 아이디를 제외한 id나 login_time 같은 경우에는 $_SESSION 변수에 들어있는걸 볼 수 있다 )

 

 

  * 세션 정보는 세션 아이디를 제외하고는 서버에 저장된다. 

    ( php 저장 기본 경로: /var/lib/php/session )

    ( 세션 아이디는 쿠키를 통해 전달 되기 때문에 웹브라우저 document.cookie에 남아있다 )

 

 

( 세션을 없앨때는 session_start()이후에 session_destroy()를 이용한다 )

 

 

 

( session_destroy()를 이용해서 세션 정보를 없애줘도 세션 아이디는 쿠키에 들어있기 때문에 

없어지지 않은걸 볼 수 있다 )

 

  * session_destroy를 이용하게 되면 세션 아이디는 없어지지 않지만 안에 들어있는 파일 내용은 없어진다.

    ( session 아이디는 쿠키안에 저장 되었기 때문에 session_name() 함수를 이용해서 

      세션 이름을 가져와서 setcookie() 함수를 이용해 쿠키 값을 초기화 시켜줘야 세션 아이디를 없앨수 있다 )

 

 

 

 

  * 세션은 웹 브라우저를 종료하게 되면 없어지지만 보안상 로그아웃을 해주는게 안전하다.

 

 

프로그래머 로드맵: http://codedragon.tistory.com/m/5156

 

 

 

 

 

 

반응형

댓글