Programming/PHP

PHP 쿠키 세션 사용법

zzarungna 2015. 12. 29. 17:32
반응형

PHP 쿠키 세션 이란?

웹에서는 페이지를 이동할때마다 데이터를 보존해야 될 경우가 많습니다.

예를 들어 쇼핑몰에서 제품 구매를 누르면 페이지가 전환됩니다. 이렇게 웹에서 페이지가 이동 될때 내가 어떠한 상품을 구매 하였는지를 알아 내려면 데이터가 보존 되어야 하는데 일반적으로 웹은 페이지가 이동이 되면 데이터가 사라집니다.


웹에서 페이지를 이동 하여도 데이터를 기억 하기 위해 쿠키와 세션을 이용하여 데이터를 보존할수 있습니다.


또한 쿠키와 세션은 개인 회원에 대한 정보를 페이지 전환시에도 보존하기 위해서 사용하기도 한다.


PHP 쿠키

쿠키란 웹사이트 들어오는 사용자들의 정보를 사용자 컴퓨터 하드디스크에 저장하는 역활을 한다.


다음 예제를 통해 PHP에서 쿠키 사용법을 알아보자.


Test.php

쿠키를 실행하기위해 아무것도 없는 페이지지만 test.php를 실행할때 쿠키 구문이 실행

<?
	//name = 설정할 쿠키의 이름
	//value = 쿠키에 저장될 이름
	//expire = 유효 시간을 설정하는 함수
	//path = 쿠키를 사용할 수 있는 범위 지정
	//setcookie(name, value, expire, path);

	//cookie 라는 이름으로 1004라는 데이터를 저장하고 60초만 쿠키 보존 하고 
	// 슬러쉬로 디렉터리를 지정 하여 상위 디렉토리에서도 쿠키를 사용할수 있게 처리
	setcookie("cookie", "1004", 60+time(), "/");
?>

결과


Check.php

이곳에서 쿠키가 잘저장되었는지 확인해보자.

<?
	echo("$_COOKIE[cookie]");
?>

결과






PHP 쿠키 삭제

Test.php

<?
	//쿠키를 지울때는 사용하기 위해 생성했던 이름을 지정한뒤 시간을 0으로 해놓으면 
	setcookie("cookie", "", 0, "/");
?>

결과



Check.php

<?
	echo("$_COOKIE[cookie]");
?>

결과


정상적으로 지워졌으므로 아무것도 뜨지 않는다.





PHP 세션

세션이란 웹에 방문한 사용자가 접속해 있는 상태를 말하는 것으로 방문자가 웹브라우저를 닫아 서버와 연결을 끝내는 시점까지를 세션 이라고 한다.


쿠키와 세션의 차이는 쿠키는 방문자 정보를 방문자 컴퓨터 하드디스크에 저장한다. 세션은 사용자 컴퓨터에 정보를 저장하는것이 아니라 웹서버가 세션 아이디 파일을 만들어 서비스가 돌아가는 서버에 저장 한다.


쿠키와 다르게 세션은 지속시간 설정이 php.ini 설정파일에 정의된 것에 따라 지속 시간이 결정되므로 따로 시간을 두지 않는다.


Test.php

<?
	//먼저 session_sart()를 통해 세션을 사용하겠다고 선언한뒤
	//$_SESSION["변수이름 아무거나"] = 담을 값 지정;
	session_start();
	$_SESSION["session"] = "세션을 이용해 문자열을 저장했다.";
?>

결과



Check.php

<?
	session_start();
	echo($_SESSION["session"]);
?>

결과



PHP 세션 지우기

Test.php

<?
	//세션을 지우기위해 세션을 시작하고 
	session_start();

	//선언했던 세션이름으로 변수를 선언해 값을 비우기 위해 아무것도 없는 값을 넣은뒤
	$session = "";

	//실제 세션삭제를 진행 한후 Check.php를 해보면 삭제된것을 확인할수 있다.
	session_unregister(session);
?>

결과

Test.php를 실행하고 check.php 실행해 보면 세션을 이용해 문자열을 저장했다라는 문자가 지워진 것을 확인할수 있다.



PHP 세션 폐기하기

아까 애기 했듯이 세션은 서버에 저장됩니다. 

세션을 지운다고해서 세션 파일이 삭제된것이 아니라 남아 있습니다.

확실하게 세션을 지우려면 세션파일을 폐기해야 합니다.


Test.php

<?
	session_start();
	session_destroy();
?>

위와같이 해주면 세션의 삭제와 함께 세션을 저장하고 있는 세션파일까지 모두 지워진다.




반응형