cookie
Language/PHP 2010. 7. 5. 19:26bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])
표 1. setcookie() 인자 설명
인자 | 설명 | 예제 |
---|---|---|
name | 쿠키의 이름. | 'cookiename'은 $_COOKIE['cookiename']으로 호출합니다. |
value | 쿠키의 값. 이 값은 클라이언트 컴퓨터에 저장됩니다; 민감한 정보를 저장하지 마십시오. | name이 'cookiename'이라면, 이 값은 $_COOKIE['cookiename']을 통해서 얻어집니다. |
expire | 쿠키 만료 시간. 에포치로부터의 초수를 나타내는 유닉스 타임스탬프입니다. 보통, time() 함수에 원하는 만료 시간을 더해서 설정합니다. 혹은 mktime()을 사용할 수 있습니다. | time()+60*60*24*30은 쿠키가 30일 후에 만료하도록 합니다. 지정하지 않으면, 쿠키는 세션 종료시(브라우저를 닫을 때)에 만료됩니다. |
path | 이 쿠키를 사용할 수 있는 서버 경로. | '/'로 지정하면, 이 쿠키는 domain 전체에서 사용할 수 있습니다. '/foo/'로 설정하면, domain의 /foo/ 디렉토리 안과 /foo/bar/ 등의 서브 디렉토리 안에서 사용할 수 있습니다. 기본값은 쿠키를 설정하는 현재 디렉토리입니다. |
domain | 이 쿠키를 사용할 수 있는 도메인. | example.com의 모든 서브도메인에서 이 쿠키를 사용할 수 있게 하려면, '.example.com'로 설정해야 합니다. .은 필수는 아니지만, 많은 브라우저와 호환되게 합니다. www.example.com로 지정하면, 이 쿠키는 www 서브도메인에서만 사용할 수 있습니다. 상세는 규격의 tail matching을 참고하십시오. |
secure | 쿠키가 보안 HTTPS 접속에만 허용할 지를 지정합니다. 1로 설정하면, 쿠키는 보안 연결이 존재할 때만 설정됩니다. 기본값은 0입니다. | 0이나 1 |
예 1. setcookie() 전송 예제
<?php |
예 2. setcookie() 삭제 예제
<?php |
PHP에서 인증은 쿠키와 세션이라는 두가지 방법이 사용되며, 이는 어떠한 컴퓨터에게 무언가를 할 수 있는 권한을 부여하는 것이기 때문에, 프로그래머에게 보안상으로 많은 고민거리를 안겨주는 부분이다.
cookie : 클라이언트에 데이터를 저장하였다가 서버의 요청에 의해 다시 서버로 보내주는 정보
session : 컴퓨터 간의 연결이 이루어진 시점부터 연결을 끊을 때까지의 기간
1. 쿠키굽기
PHP에서 쿠키라는 것은 우리가 흔히 말하는 과자를 말하는 것이 아니다. 하지만 일반적으로 사용자의 컴퓨터에 쿠키를 저장할 때 "굽는다"라는 표현을 사용한다.
setcookie(이름, 값, 폐기시간, 경로, 호스트, 보안사용);
이름 : 쿠키의 이름
값 : 쿠키의 값
폐기 시간 : 쿠키의 폐기 시간(주로 유닉스 타임스탬프를 사용하며 0일 때는 웹 브라우저가 닫히면서 쿠키가 사라진다.)
경로 : 쿠키가 적용될 경로
호스트 : 쿠키가 적용될 호스트 이름
보안사용 : HTTPS 프로토콜에 의한 보안 접속시에만 쿠키 굽기
//쿠키는 header함수와 마찬가지로 함수 호출 전에 어떠한 출력문이라도 있어서는 안된다.
<?
//쿠키 카운터 만들기
if(isset($HTTP_COOKIE_VARS[counter_cookie])){
setcookie("counter_cookie", $_COOKIE[counter_cookie]+1, 30*24*60*60+time(),"/");
}
else{
setcookie("counter_cookie",1,30*24*60*60+time(),"/");
}
$counter = $_COOKIE[counter_cookie]+1;
echo "$counter 번째로 방문 하셨습니다.";
?>
======================================
login.php
======================================
<!---로그인--->
<?
if(!$_COOKIE[member]){
echo "
<form method='post' action='check.php'>
비밀번호 <input type='password' name='pass' size=10><br>
<input type='submit' value='로그인'>
</form>";
}
else{
echo "로그인 되어 있습니다.<br>
<a href='logout.php'>로그아웃</a>";
}
?>
======================================
check.php
======================================
<?
$member_pass = "1234";
if($_POST[pass] == $member_pass){
setcookie("member","$_POST[pass]",0,"/");
header("location:login.php");
}
else{
echo "비밀번호가 틀렸습니다.";
}
?>
======================================
logout.php
======================================
<?
setcookie("member","",0,"/");
header("location:login.php");
?>
'Language > PHP' 카테고리의 다른 글
[array 함수]array_key_exists, isset, in_array, array_search (0) | 2010.07.09 |
---|---|
headers already sent by 에러 (0) | 2010.07.05 |
implode(),explode() (0) | 2010.07.02 |
Fatal error: Maximum execution time of 30 seconds (0) | 2010.07.02 |
php에서 javascript 사용, javascript에서 php 사용 (0) | 2010.06.23 |