Optimization For eBiz      Bizest R30 사전예약 이벤트 Search  상세검색  
웹프로그래밍 웹솔루션 웹개발문서 웹사이트 점검 및 분석 웹로그분석  

LAMP
(Linux Apache MySQL PHP)
Java
Perl
ASP.NET
All Tips!!!
Client Side Script
( JavaScript,HTML,CSS ... )
Flex


비밀번호  
비밀번호 :
  Q&A

목록 답변하기 추가질문하기
질문쿠키란 무엇일까?
작성자 최재동 작성일2002.01.15 14:29:34

그동안 ASP, PHP 로 개발을 하면서 주로 세션을 사용했습니다.

프로그램 습관이랄까, 아님 쿠키에 대한 왠지모를 막연한 불안감이랄까..^^;;

아니나 다를까..

이번에 쿠키를 좀 구워볼까 했는데... 이러한 문제가 생기네요..

<?
setCookie("name","재동",time()+50);
?>

저렇게 코딩을 하면, 50초 후에 쿠키가 삭제된다는 건가요, 아니면 쿠키의 값만 사라진다는 건가요?

cookie 폴더 열고 가만히 지켜봐도, 쿠키가 삭제가 되지 않습니다. 그렇다면 저장한 쿠키값이 무효화된다는 거 같은데...그런데 50초 지나고 쿠키 호출해보면 저 값이 찍힙니다. 즉, 쿠키가 계속 살아있다는 거죠.

<?
setCookie("name");
?>

그래서 위와 같이 쿠키 변수 이름만 주면 저장된 쿠키 값을 삭제한다는 의미라기에...그렇게 코딩해서 확인했는데..

그래도 쿠키 값 찍힙니다.

도대체, 쿠키라는 건 뭘까요? 쿠키를 유효기간에 맞게 설정해서 쓰는거 다들 잘 되고 계신가요?

쿠키를 통해서 유료홈페이지 접근 권한을 통제하려 하기에..답변 드립니다..



쿠키란 무엇일까?
왕장기 (2002.01.15 14:01:38 작성)
늘 쿠키를 사용하는 입장에서...

일반적으로 쿠키는 두가지가 있습니다.

사용자 하드디스크에 저장되는 것
메모리에 저장되는 것

하드디스크에 저장되는 것은 아래 사용법처럼 해당 쿠키의 소멸 시기를 지정
해주는 경우 입니다.

사용법은

$end_time = time() + 3600*24*365*10; // 10년 맞나?...
setcookie("VOTE","값",$end_time, "/", "ihelpers.co.kr");

이렇게 되져...

소멸방법은 여러가지인데 시간을 돌려도 된다고 하는데 저는 그냥
setcookie("VOTE","",$end_time, "/", "ihelpers.co.kr");
이렇게 빈문자열로 처리해 버립니다.

메모리에 저장되는 것은 소멸시기를 지정하지 않는 경우 입니다. 이렇게 저
장된 쿠키는 브라우저가 모두 종료되는 시점에서 쿠키도 자동 소멸됩니다.

어떻게 보면 세션보다는 소멸 주기가 더 이상적이라고 생각됩니다.

사용법은

setcookie("VOTE","값",0, "/", "ihelpers.co.kr");

이렇게 됩니다. 주로 사용하는 것은 메모리에 저장되는 것을 이용하게 되죠.
쿠키사용시의 가장 주의할 점은 어떠한 html 출력보다 이전에 위치해야 한다
는 것이죠.

쿠키가 익숙치 않을 경우는 개발시 브라우저의 셋팅을 쿠키사용을 확인 후 사용
으로 변경한 후 작업을 하게 되면 정확하게 쿠키가 저장되는지를 쉽게 알 수 있
죠.

그럼


쿠키란 무엇일까?
최재동 (2002.01.15 16:01:33 작성)

답변 감사합니다.

근데, 제가 좀 더 알고 싶은 것은,

쿠키의 소멸이란 것이 실제로 클라이언트 컴의 현 사용자 cookie 폴더에서 사라지는 것인지, 아님 쿠키의 유효기간만 소멸 되는 것인지 그게 궁금하거든요. ^^

어떤 댓가를 받는 것도 아닌데, 늘 성심성의껏 답변해주셔서 감사합니다.

이러다 자칫,

스스로의 해결 노력없이 무조건 이곳에 글 올리고 보는

그런 얍삽한 제 자신을 발견하게 될까 걱정되네요. ^^;;




쿠키란 무엇일까?
왕장기 (2002.01.16 12:01:55 작성)
테스트 해봤는데... 해당 파일이 삭제 되진 않습니다.

사용할 수 없을 뿐입니다.

그럼..


쿠키란 무엇일까?
최재동 (2002.01.16 20:01:31 작성)

안녕하세요.

쿠키 생성할때, 시간 설정 안해주면 세션과 비슷하게 브라우저 켜있는 동안만 작동되잖아요?
이 원리로 세션대신 아주 잘 써먹고 있는데요.

이 쿠키를 브라우저를 끄지 않고 삭제를 해야 하는 경우가 있네요. 로그아웃버튼 눌렀을 때처럼 말이죠.

그래서

setcookie("name"); 이런식으로 이름만 주던가, 혹은
setcookie("name",""); 이렇게 빈 문자열을 다시 지정해주던가 해서

브라우저 종료 없이 삭제 했습니다. 잘 삭제 되는 거 확인 했구요.

근데, 이렇게 쿠키를 삭제하고, 그 브라우저에서 다시 쿠키 생성하면 쿠키가 안생깁니다.

분명히 로직 오류 아닙니다. 브라우저 껐다가 다시 로그인 하면 쿠키 생성 또 잘 됩니다. 문제는 브라우저 안끄고 로그인 하면, 쿠키가 다시 생성 안되는 겁니다.

정리하자면...


쿠키를 한번 굽고, 그걸 함수로 없앤다음 다시 또 구으면 생성이 안된다는 겁니다. 브라우저 껐다 키기 전에는요.
원래 쿠키라는게 그런 건가요?

사용자의 로그인 로그아웃 구현인데...로그아웃 한번 했다고 브라우저를 강제로 종료시키거나, "껐다 다시 켜주십쇼" 할 수는 없는 거잖습니까?

"세션을 쓰세요" 이런 말 하시면 할말 없구요..^^;;

쿠키란 놈 하도 말썽 일으켜서 이 참에 한따까리 하려고 그러니까요. ^^

쿠키란 무엇일까?
왕장기 (2002.01.16 20:01:12 작성)
일단 현 아이헬퍼스 사이트가 메모리 쿠키를 사용하고 있습니다.

여기 로그인/로그아웃으로 한번 해보세요..

잘되죠?..

당근 잘되죠...

쿠키란 세션보다 사실 훨씬 개발자 입장에선 좋은 놈이죠... 보안이 맘에 걸리긴 하지만..

암튼...

안될리 없습니다.

저희가 사용하는 쿠키 저장 부분은 아래와 같습니다.

쿠키저장
setcookie("USER_ID",$ID,0,"/", "ihelpers.co.kr");

쿠키삭제
setcookie("USER_ID","",0, "/", "ihelpers.co.kr");

이렇게 됩니다.

위처럼 해서 다시 해보세요..

그럼..

쿠키란 무엇일까?
최재동 (2002.01.17 17:01:34 작성)

왕장기님이 말씀하신 방법뿐만 아니라, 책에 나온 쿠키 관련 내용 다 읽어보고, phpschool 가서 쿠키 관련 질/답 다 읽어보고, 별의 별짓 다 해도 안되는 겁니다.. 글쎄..

최후의 방법.

아무 문제 없는데 안될때는 파일에 귀신이 씌여서 그렇다란 말을 생각해내었죠.

그래서, 굿하는 심정으로...

똑같은 소스를, 파일명만 바꿔서 실행했더니 됩니다.

즉, login.php -> login_1.php 이렇게...
logout.php -> logout_1.php 이렇게...

정말 소스 한줄 안 건드렸습니다..파일명만 바꿨을뿐..

이런건 도대체 무슨 귀신의 장난일까요?

쿠키란 무엇일까?
왕장기 (2002.01.18 10:01:58 작성)
일반적으로 소스는 분명 같은데 파일명에 의해 이상한 현상이 일어날때는
십중팔구는 캐쉬때문입니다.

이 캐쉬는 크게 서버쪽 캐쉬와 클라이언트 캐쉬로 나눌 수 있죠.

클라이언트 캐쉬는 브라우저와 상관이 있으니 php 코드에서 클라이언트에 캐쉬를
남기지 않는 명령 라인을 넣어주면 해결됩니다.

하지만 서버 캐쉬는 좀 특이하죠.. 웹서버 마다 좀 다르기두 하구요..
즉 php 의 실행 결과인 html 내용을 서버가 미리 캐쉬로 메모리에 저장을 해버리죠
그리고 나면 php파일의 소스를 수정해도 프로그램이 갱신이 안되고 캐쉬된 이전
결과인 html을 계속 뿌리게 되는 현상이 가끔 있습니다.

이런 현상은 iis도 가끔 있구요... 아파치는 별루 그런적없었던 거 같은데..
그리고 옛날 netscape웹서버라는 넘은 아주 심했던 걸루 기억합니다.

이런 부분은 개발을 하다 보면 자주 발생합니다(심지어 이미지 파일을 수정했는
데도 이전 파일이 계속 보여지는 경우도 있습니다. 브라우저 종료하구 다시 실행
해도 안되죠.. 이땐 정말 웹서버 재실행을 하던가 해야 하는데 운영중인 웹서버를
재실행 하는 것은 참 무서운 일이기에 보통 파일명을 바꿉니다. ^^)

그럼.....


쿠키란 무엇일까?
최재동 (2002.01.18 13:01:54 작성)

그렇군요..

서버캐쉬 였다고 생각할 수 밖엔 없네요.

암튼,

장장 몇일에 걸친 쿠키와의 전쟁에 동참해주신 장기님께

심심한 감사의 말씀을 드리며,

아울러,

마지막 질문 하나만 올리겠습니다.

아이헬퍼스의 마일리지는 어디에 쓸 수 있나요? ^^



쿠키란 무엇일까?
왕장기 (2002.01.18 13:01:55 작성)
쿠쿠... 전에 이벤트를 몇번 했었는데..

그땐 그걸루 했었죠.. 현재는 계획이 없지만.. 하지만 언젠가...

사이트가 좀더 커지면 분명히 사용될 겁니다. 그때를 대비해서 열심히 모아주
세요..

목록 답변하기 추가질문하기

이름(N) 비밀번호(P)
내용(C)
Optimization For eBiz
서비스 이용약관 · 개인정보 보호정책 · 이메일 추출방지정책 · 문의 ·   RSS 대하여 ·   About you
Powered by WSOS