반응형
세션(session)이란?
▪ 세션이란, 웹사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법을 의미한다.
사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라고 한다.
▪ 클라이언트 측의 컴퓨터에 모든 데이터를 저장하는 쿠키와 다르게 세션은 서비스가 돌아가는 서버측에 데이터를 저장하고 키값만을 클라이언트 측으로 남겨둔다.
▪ 세션도 쿠키와 같이 키와 값으로 저장되는 형태이다.
▪ 브라우저는 필요할 때마다 키값을 이용하여 서버에 저장된 데이터를 사용한다.
PHP 세션 시작
PHP에서는 파일 제일 상단에 session_start() 함수를 명시하여 시작할 수 있다.
session_start();
session_start() 함수는 세션 아이디가 이미 존재하는지를 확인하고, 존재하지 않으면 새로운 아이디를 만든다.
세션 아이디는 웹 서버에 의해 무작위로 만들어진 숫자이다.
이 세션 아이디는 세션이 유지되는 동안 클라이언트 측에 저장되며, 세션 변수를 등록하는 키로 사용된다.
<p>세션 id <?=session_id()?></p>
세션 변수 생성 / 수정 / 삭제
세션이 생성되고 나면 세션 변수를 수퍼 글로벌인 $_SESSION 배열에 등록할 수 있다.
이때 세션 변수의 이름이 키값이 되며, 이 내용은 서버 측에 저장된다.
등록된 세션 변수는 등록을 해지하지 않는 한 세션이 끝날 때까지 유지된다.
1. 생성
[문법]
$_SESSTION["키"] = 값;
[예시]
$_SESSION['userid'] = "apple";
//KEY : userid , VALUE: apple
$_SESSION['name'] = "김사과";
//KEY : name , VALUE: 김사과
2. 수정
[문법]
$_SESSTION["키"] = 새로운값;
[예시]
$_SESSION['name'] = "이사과";
//김사과 -> 이사과
3. 삭제
[문법]
//특정 세선 변수 삭제
unset($_SESSION["키"]);
//모든 세션 변수 삭제
session_unset();
[예시]
//특정 세선 변수 삭제
unset($_SESSION["usesrid"]);
//모든 세션 변수 삭제
session_unset();
세션 변수에 접근하기
[문법]
$_SESSION["키"];
[예시]
echo "제 아이디는{$_SESSION['userid']}입니다.<br>";
echo "제 이름은 {$_SESSION['name']}입니다.<br>";
위의 내용을 이용해서 로그인과 로그아웃을 만들어보자
로그인
login.php
<?php
session_start(); //세션 시작
?>
<head>
<title>로그인</title>
</head>
<body>
<?php
if(!isset($_SESSION['id'])){
//id란 키값을 가진 함수가 없니? > 즉, 아직 로그인을 안한경우
?>
<form method="post" action="loginP.php"> //loginP.php로 폼 데이터 전달
<p><label>아이디 : <input type="text" name="userid"></label></p> //아이디 입력란
<p><label>비밀번호 : <input type="password" name="userpw"></label></p>//비밀번호 입력란
<p><input type="submit" value="로그인"></p>
</form>
<?php
}else{ //id란 키값을 가진 함수가 있을때 > 즉, 로그인된 상태인 경우
?>
<p><?=$_SESSION['id']?>님 환영합니다.</p>
<p><a href="./logout.php">로그아웃</a></p> 클릭하면 logout.php파일로 이동
<?php
}
?>
</body>
loginP.php
<?php
session_start(); //세션시작
$userid = $_POST['userid']; //login.php에서 POST방식으로 전달된 'userid' 값 가져오기
$userpw = $_POST['userpw']; //login.php에서 POST방식으로 전달된 'userpw' 값 가져오기
//location.href='login.php' -> 캐싱되지 않음 , 데이터가 남아있지 않음 (쉽게 생각하면 새로고침)
if($userid == "admin" && $userpw == "1234"){ //만약 userid가 "admin"이고 userpw "1234"라면
$_SESSION['id'] = $userid;
echo "<script>alert('로그인 되었습니다');location.href='login.php';</script>";
}else{
//history.back(); -> 캐싱됨, 데이터가 남음 (쉽게 생각하면 뒤로가기)
echo "<script>alert('아이디 또는 비밀번호를 확인하세요.');history.back();</script>";
}
?>
logout.php
<?php
session_start(); //세션시작
session_unset(); //모든 세션변수 삭제
echo "<script>alert('로그아웃 되었습니다');location.href='login.php';</script>";
?>
세션시작 설명 출처 : tcpschool
열심히 공부하고 있지만, 오류 사항이 존재 할 수 있습니다.
수정 사항이 존재 할 경우 알려주시면 감사하겠습니다 <(__)>
반응형
'프로그래밍 > PHP' 카테고리의 다른 글
07 파일을 이용하여 댓글을 만들어보자 (0) | 2021.08.06 |
---|---|
06 PHP 파일 다루기 (0) | 2021.08.05 |
04 쿠키(Cookie) (0) | 2021.08.03 |
03 문자열함수 (0) | 2021.08.02 |
댓글