1) 쿠키(Cookie)란?
- 웹 사이트에 접속할 때 서버에 의해 사용자의 컴퓨터에 저장되는 정보를 의미한다.
- 클라이언트 측의 컴퓨터(브라우저)에 데이터를 남겨 필요할 때 마다 사용한다.
- 데이터 형태는 key와 value로 구성한다.
- 문자열로만 이루어져 있다.
- 4kb이상 저장할 수 없다.
- 서버당 1개의 저장소를 사용한다.
2) 쿠키 사용방법
1. 쿠키를 만드는 방법
setcookie(쿠키이름, 값, 만료시간, 저장위치, 도메인정보, 프로토콜);
<?php
// key: userid, value: apple, 현재시간+(60초*3), 현재디렉토리
setcookie("userid", "apple", time() + (60*3), "/");
?>
time( )
- 현재 날짜 시간을 가져오는 함수
isset( )
- 데이터가 존재하는지 여부(true, false)를 반환
2. 쿠키를 읽어오는 방법
변수 = $_COOKIE[쿠키이름];
<?php
if(!isset($_COOKIE['userid'])){
echo "<p>쿠키가 존재하지 않습니다</p>";
}else{
echo "<p>쿠키가 존재합니다</p>";
echo "<p>저장된 쿠키의 값 : {$_COOKIE['userid']}</p>";
}
?>
3. 쿠키를 변경하는 방법
다시 setcookie에 의해 재설정
4. 쿠키를 삭제하는 방법
쿠키 만료시간을 0 또는 과거시간으로 변경해주면 자동으로 삭제
3) 세션(session)이란?
- 웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법을 의미한다.
- 서비스가 돌아가는 서버측에 데이터를 저장한다.
- 키와 값으로 저장되는 형태로 구성돼있다.
- 키 값만을 클라이언트 측으로 남겨둔다.
- 사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지가 만료시간이다.
- 브라우저는 필요할 때마다 키값을 이용하여 서버에 저장된 데이터를 사용한다.
4) 세션 사용방법
1. php 세션 사용
- php 파일 제일 상단에 session_start(); 을 명시한다.
2. 세션 변수를 만드는 방법
$_SESSION["키"] = 값;
<?php
session_start();
// session_id() : 세션 id의 값을 확인 (74b0v9i3i29u0i9964ntqeuecc)
$_SESSION['userid'] = "apple";
$_SESSION['name'] = "김사과";
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>세션 - 1</title>
</head>
<body>
<h2>세션 - 1</h2>
<p>세션 id : <?=session_id()?></p>
<p>세션 id의 변수 userid값 : <?=$_SESSION['userid']?></p>
<p>세션 id의 변수 name값 : <?=$_SESSION['name']?></p>
</body>
</html>
3. 세션 변수를 수정하는 방법
$_SESSION["키"] = 새로운 값;
4. 세션 변수를 삭제하는 방법
session_unset();
5) 세션 시간 설정 및 지속시간 설정되는 우선순위(1,2,3위)
- 페이지에다가 설정하기(php 코드로 세션시간을 설정)
session.gc_maxlifetime = 1440; // 24분
- php.ini에 설정하기
C:\php7\php.ini
session.gc_maxlifetime = 1440; // 24분
- 아파치 설정
6) 세션을 활용한 로그인 예제
- login창
<?php
session_start();
// echo $_SESSION['id'];
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>로그인</title>
</head>
<body>
<?php
if(!isset($_SESSION['id'])){
?>
<form method="post" action="3-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{
?>
<p><?=$_SESSION['id']?>님 환영합니다.</p>
<p><a href="./3-logout.php">로그아웃</a></p>
<?php
}
?>
</body>
</html>
- 로그인 처리 기능
<?php
session_start();
$userid = $_POST['userid'];
$userpw = $_POST['userpw'];
if($userid == "admin" && $userpw == "1234"){
// location.href='3-login.php' -> 캐싱되지 않음
$_SESSION['id'] = $userid;
echo "<script>alert('로그인 되었습니다');location.href='3-login.php';</script>";
}else{
// history.back(); -> 캐싱됨
echo "<script>alert('아이디 또는 비밀번호를 확인하세요');history.back();</script>";
}
?>
- 로그아웃 창
<?php
session_start();
session_unset();
echo "<script>alert('로그아웃 되었습니다');location.href='3-login.php';</script>";
?>
'Front-End > PHP' 카테고리의 다른 글
[PHP] DB와 연결, 접속하기 (0) | 2021.07.24 |
---|---|
[PHP] php 파일 함수 알아보기 (0) | 2021.07.17 |
[PHP] 함수(function) 알아보기 (0) | 2021.07.17 |
[PHP] 제어문(조건문, 반복문), 배열 알아보기 (0) | 2021.07.17 |
[PHP] 데이터 전송방식 (method-get,post) (0) | 2021.07.17 |