세션(Session)
: 서버에 클라이언트의 상태 정보를 저장하는 기술.
세션의 동작 과정
1. 클라이언트가 서버에 웹 페이지 요청
2. 서버는 클라이언트의 정보를 저장하고, 세션ID 쿠키에 담아 전송
3. 클라이언트는 세션ID를 폴더에 저장
4. 클라이언트는 다시 서버에 요청할 때 세션ID를 서버에 전달하여 상태 정보를 서버가 활용할 수 있게 함.
서버는 이 세션ID를 이용하여 응답한다.
세션을 사용하면, 클라이언트 측에서 세션 ID를 조작하는 것은 가능하지만, 세션 데이터를 직접 변경할 수는 없다. 따라서, 세션을 사용하면 보안성이 높은 웹 애플리케이션을 개발할 수 있다.
쿠키 | 세션 | |
---|---|---|
저장 위치 | 클라이언트 | 클라이언트, 서버 |
보안 | 클라이언트 측에서 쿠키 변조 위험. 보안에 취약 | 서버에 세션ID 저장, 쿠키보다 보안 강화 |
라이프 사이클 | 지속 가능 | 브라우저 종료 시 종료됨 |
속도 | 빠름 | 느림 |
세션 등록하기
세션을 사용하려면 세션을 필요로 하는 모든 페이지에서 session_start()를 사용하여 세션을 시작하고,
전역변수 $_SESSION을 이용해서 세션을 등록한다.
예제) session_register.php 소스 코드
1
2
3
4
5
6
|
<?php
session_start();
$_SESSION["디저트"] = "커스터드푸딩";
echo "디저트 세션 등록 완료"
?>
|
cs |
세션 접근하기
우선 session_start()를 이용하여 세션을 시작한다.
예제) session_access.php 소스 코드
1
2
3
4
5
6
7
8
9
10
|
<?php
session_start();
if(isset($_SESSION["디저트"])){
echo $_SESSION["디저트"]." 먹음. 왜 먹어도 먹어도 안 질리지ㅎㅎ";
}
else {
echo "커스터드 푸딩 없어용";
}
?>
|
cs |
isset()을 이용하여 "디저트" 세션 값이 존재하면 왜 먹어도 먹어도 안 질리냐는 텍스트 출력하게 한다.
"디저트" 세션 값이 없으면 '커스터드 푸딩 없어용' 텍스트를 출력하게 한다.
세션 해제하기
unset()을 이용하여 등록된 세션을 해제한다.
예제) session_destroy.php 소스 코드
1
2
3
4
5
6
7
8
9
10
|
<?php
session_start();
// 세션 접속 끊기
if(isset($_SESSION["디저트"])){
unset($_SESSION["디저트"]);
}
echo "디저트 세션 해제~";
?>
|
cs |
세션으로 로그인 처리하기!
1. 세션을 사용할 메인 페이지 코드는 다음과 같다.
session_page.php
1
2
3
4
5
6
7
8
9
10
11
|
<h3> 세션으로 로그인 처리하기 </h3>
<?php
session_start();
if(!isset($_SESSION["userid"]))
echo "<a href='session_login.php'>로그인</a>";
else
echo "환영합니다 ".$_SESSION["username"]."님"." |
<a href='session_logout.php'>로그아웃</a>";
?>
|
cs |
세션이 등록되어 있지 않다면 '로그인'이 출력되게 하고, 세션이 등록되어 있다면 '로그아웃'이 출력되는 코드이다.
2. 로그인 처리 : 세션 등록
이제 session_login.php의 파일에서 세션을 등록해 로그인을 처리하자.
1
2
3
4
5
6
7
8
9
10
|
<?php
session_start();
$_SESSION["userid"] = "yj000";
$_SESSION["username"] = "연진";
echo "<script>
location.href = 'session_page.php';
</script>";
?>
|
cs |
userid 세션에는 "yj000"을 등록하고, username 세션에는 "연진"을 등록했다.
그 후 js의 location.href을 이용하여 session_page.php로 이동되게 했다.
3. 로그아웃 처리 : 세션 해제
위의 사진처럼 세션이 등록되어 로그인 된 상태에서 '로그아웃' 링크를 클릭했을 때,
로그아웃을 처리할 session_logout.php 코드는 다음과 같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<?php
session_start();
if(isset($_SESSION["userid"])){
unset($_SESSION["userid"]);
}
if(isset($_SESSION["username"])){
unset($_SESSION["username"]);
}
echo "<script>
location.href = 'session_page.php';
</script>";
?>
|
cs |
unset()을 이용하여 등록되어 있던 userid, username 세션을 해제한다.
따라서 다시 session_page.php로 리다이렉트 됐을 때 '로그인'이 출력된다.
'PHP' 카테고리의 다른 글
쿠키로 로그인 처리하기 (0) | 2023.04.11 |
---|---|
연습문제풀이 (0) | 2023.04.02 |