회원가입∴아이디/비번찾기
홈으로


사용자 인증...쿠키~
15년 전
쿠키라는것....많이 들어보셨으리라 생각되는데;;;
navyism@php메뉴의 위에 보면 모노로그가 있죠.....
엇;; 그런데 이름쓰는 란이 없습니다. -_-a;;;
그런데 내용을 쓰고 나면...글쓴이 이름이 찍히죠......오로;;;

또 왜 이런게 있습니다....
투표같은걸 하고 한번 더 할라고 그러면 안되죠-_-a

쿠키라는 놈이 그 비밀입니다....

쿠키는 방문자(클라이언트)의 컴터 하드에 저장되는 인증 방법입니다.
세션이란게 있는데 이것은 서버에 저장되는 것이죠;
암튼...모노로그의 경우에서는 미리 사용자 이름을 받아서 쿠키로 사용자의 컴터에 이사람 이름은 뭐다.....라고 저장해 놓은거죠...
누가? -_,-제가;;;

그랬다가...글이 쓰여질때 그 쿠키를 샤샥 꺼내와서 이름을 찍어 주는것입니다.

쿠키는 간단하게.......쿠키의 이름과 쿠키의 값으로 이루어 집니다..
그러니까 변수랑 똑같은거죠....;;

SetCookie(이름,값,시간);

가장 간단한 쿠키 설정 방법 입니다.
예제를 볼까요?...

<?
setcookie("login","ID",0);
?>

이름에 login이라 주고 값에 ID를...그리고 시간은 0으로 주었습니다.
실행을 하면 login이라는 쿠키가 만들어 지죠...그리고 그 login이라는 쿠키에 ID라는 값이 들어가고 시간이 0이라는 얘기는 브라우져를 종료 하면 쿠키가 사라져 버린다는 것입니다.
보통 사이트에서 로그인을 하고 브라우져를 닫으면 다시 로그인을 해야 하죠? -.- 그거랑 같은겁니다...

암튼...다음소스를 보죠;;

<?
echo "쿠키굽기";
setcookie("login","ID",0);
?>

실행하면?..............
-.- 에러납니다..

cookie는 서버에서 HTTP프로토콜을 이용하는 header정보에 해당하기 때문에 cookie를 설정하는 소스앞에 화면에 표시되는 어떠한 소스도 올수 없습니다.... 그러니까 앞에 echo문이 있으면 화면에 "쿠키굽기"라는 문자가 찍히기 때문에 에러가 납니다.

이렇게 수정해야죠;;

<?
setcookie("login","ID",0);
echo "쿠키굽기";
?>

저도 첨엔 이게 뭔상관이길래;;;; 했는데....
뭐 하다보니.....그냥 그러려니 하고 삽니다.....

그러려니 하세요.....우리가 뭔 힘이 있나요;;;

자 그럼 다른 예제를 보죠;;

<?
setcookie("login","ID",3600);
?>

시간에 3600을 넣었네요...이건 현재 시간으로 부터 3600초 동안 지속된다는 것이죠....브라우져를 닫아버리건...컴터를 끄건 간에... 3600초 동안 쿠키는 남아있습니다.
보통 투표같은곳엔 이렇게 사용을 하겠죠...
그럼 1년동안 쿠키를 남기려면?

365일x24시간x60분x60초.....
즉.....365*24*60*60 으로 주시면 되죠...

그럼 이제 쿠키를 가져오는 방법 입니다.

그냥 간단히 쿠키이름을 변수로 해서 가져와도 된다죠...볼까요?

<?
echo $login;
?>

이렇게 하면 login이란 쿠키의 값이 찍힙니다...
그러니까 ID라고 찍히겠죠...
그런데 이런 방법은 보안상으로 심각한 문제가 있습니다.
예를 들어 이 문서를 test.php라고 한다면...
주소창에.......

http://DOMAIN/test.php?login=ID

이렇게 get방식으로 전달하면 $login이란 변수에 ID라는 값이 들어가서
쿠키가 없더라도 ID가 찍힙니다....
만약 보안상으로 중요한 인증이었다면 문제가 되겠죠...
그래서 이런 변수처럼 쿠키를 사용하면 안됩니다;;;

쿠키값을 가져오는 방법은 이렇게 합니다..

$HTTP_COOKIE_VARS[login]

위와 같은 방법을쓰는데 위 변수에 login이라는 쿠키의 값이 들어갑니다.
사용은 이렇게 하죠..

<?
echo $HTTP_COOKIE_VARS[login];
?>

$HTTP_COOKIE_VARS는 꼭 대문자로 쓰셔야 합니다...
암튼 이렇게 하면 아까 처럼 get방식으로 변수를 전달하더라도 문제가 발생하지 않는다는것이죠....

인증은 이렇게 해야겠죠?

<?
if($HTTP_COOKIE_VARS[login] && $HTTP_COOKIE_VARS[login]=="ID")
{.......}
?>

if문을 보면 login이라는 쿠키가 존재하고....
그 값이 ID일때 실행문을 실행하는것입니다.
그러니까 제대로 쿠키인증을 받았다면 실행이 되는것이겠죠...

그럼 로그아웃은 어떻게 해야 할까요?...
쿠키의 값을 0으로 주어서 쿠키를 구워주면 됩니다.

setcookie("login",0,0);

이렇게 해주면 login이라는 쿠키의 값이 없어지기 때문에 로그아웃이 되는거겠죠......

쿠키를 주는 setcookie라는 함수에는 몇가지 요소가 더 들어갑니다...

setcookie(쿠키이름,쿠키값,적용시간,적용할디렉토리,호스트이름,보안사용);

이렇게 들어가는데.....뒤에 값들은...그다지 -_-a;;;;
따로 공부를 더 하시는게 좋을것 같네요;;;

쿠키란게 상당히 어렵고 복잡한것 같지만...
일단 이해를 하고 나면....엄청 간단하고 편리한 것이죠;;;

그리고 쿠키를 너무 남발하지 않는게 좋을듯하네요..
php에서는 쿠키남발을 막기 위해 쿠키갯수가 제한이 되어있다고 하네요.. 또 기존의 쿠키가 이유없이 날아가 버리기도 한답니다...
또 서버의 php버전에 따라서 쿠키가 잘 안먹는 경우도 있으며...
공부하시면서..또는 작업하시면서...알수없는 에러를 많이 만나시게 될겁니다...
추천추천 : 541 추천 목록
번호 제목
2,891
입력 필드에서 특정단어(예:#err)가 포함되었을 때 실시간 감지 및 경고창 띄우기
2,890
데이터베이스 최적화와 쿼리 효율성을 높이 검색 성능을 개선하는 방법
2,889
간단한 게시판 만들기
2,888
PHP의 php.ini 파일에서 설정할 수 있는 주요 항목들을 카테고리별로 정리
2,887
유튜브 동영상의 썸네일 이미지를 체크하여 유효한 영상이아닐때 연결된 체크박스를 자동으로 체크
2,886
이미지 URL이 유효하지 않을 때, 해당 이미지와 연결된 체크박스를 자동으로 체크
2,885
HTTPS로 접속한 사용자를 강제로 HTTP로 리디렉션 하려면
2,884
PHP에서 MP3 파일을 직접 읽고 스트리밍 하기
2,883
현재 페이지가 location.reload()에 의해 새로고침되었는지
2,882
텍스트 파일을 읽고, 각 줄의 끝에서 6글자를 삭제한 후, 결과를 새로운 파일에 저장합니다.
2,881
cURL을 사용하여 리다이렉트를 따라가 최종 URL 가져오기
2,880
[PHP] $_SERVER 환경변수
2,879
10진수 <-> 16진수 변환기 PHP소스
2,878
텍스트에 직접 그라데이션 색상을 적용하려면?
2,877
CSS를 사용하여 요소의 내용물에 따라 width를 조정하는 방법
2,876
웹서버 ip 확인
2,875
웹호스팅의 절대경로를 확인
2,874
input 입력 필드 앞뒤 공백 실시간 제거
2,873
Placeholder 포커스시 감추기
2,872
MySQL 중복된 데이터를 삭제
2,871
MySQL 중복 데이터 확인
2,870
sessionStorage.getItem 와 sessionStorage.setItem
2,869
제이쿼리 랜덤으로 배경색 변경
2,868
preg match에 관한 정규식
2,867
Stream an audio file with MediaPlayer 오디오 파일 스트리밍 하기
2,866
Audio Streaming PHP Code
2,865
PHP $ SERVER 환경 변수 정리
2,864
Vimeo (비메오) API 를 사용하여 플레이어 컨트롤하기
2,863
iframe 사용시 하단에 발생하는 공백 제거방법
2,862
아이프레임(iframe) 전체화면 가능하게 하기
목록
뮤직트로트 부산광역시 부산진구 가야동 ㅣ 개인정보취급방침ㅣ모바일버전
Copyright ⓒ musictrot All rights reserved.