PHP 에서 쿠키 를 설정,사용,삭제 하 는 해결 방법

3752 단어 phpcookie
1.쿠키 설정
PHP 는 SetCookie 함수 로 Cookie 를 설정 합 니 다.주의해 야 할 점 은 쿠키 는 HTTP 프로 토 콜 헤더 의 일부분 으로 브 라 우 저 와 서버 간 에 정 보 를 전달 하 는 데 사용 되 므 로 HTML 파일 자체 의 콘 텐 츠 출력 전에 쿠키 함 수 를 호출 해 야 합 니 다.
SetCookie 함 수 는 Cookie 를 정의 하고 HTTP 헤더 뒤에 추가 합 니 다.SetCookie 함수 의 원형 은 다음 과 같 습 니 다.
int SetCookie(string name, string value, int expire, string path, string domain, int secure);
name 을 제외 한 모든 인 자 는 선택 할 수 있 습 니 다.value,path,domain 세 개의 매개 변 수 는 빈 문자열 로 대체 할 수 있 으 며 설정 되 지 않 았 음 을 표시 합 니 다.expire 와 secure 두 매개 변 수 는 수치 형 으로 0 으로 표시 할 수 있 습 니 다.expire 인 자 는 표준 유 닉 스 시간 표시 로 time()또는 mktime()함수 로 얻 을 수 있 으 며 초 단위 입 니 다.secure 매개 변 수 는 이 쿠키 가 암호 화 된 HTTPS 프로 토 콜 을 통 해 네트워크 에서 전 송 될 지 여 부 를 나 타 냅 니 다.현재 설 정 된 쿠키 는 즉시 효력 이 발생 하 는 것 이 아니 라 다음 페이지 를 기 다 려 야 볼 수 있 습 니 다.이 는 설 정 된 이 페이지 에서 쿠키 가 서버 에서 클 라 이언 트 브 라 우 저 에 전달 되 고,다음 페이지 브 라 우 저 에서 쿠키 를 클 라 이언 트 기기 에서 꺼 내 서버 로 전송 하 는 이유 입 니 다.같은 페이지 에 Cookie 를 설정 합 니 다.실제 적 으로 뒤에서 앞으로 가기 때문에 새로운 Cookie 를 삽입 하기 전에 하 나 를 삭제 하려 면 삽 입 된 문 구 를 먼저 쓰 고 삭 제 된 문 구 를 써 야 합 니 다.그렇지 않 으 면 원 치 않 는 결과 가 나 올 수 있 습 니 다.몇 가지 예 를 살 펴 보 자.
간단 한:
SetCookie("MyCookie", "Value of MyCookie");
실효 시간의:
SetCookie("WithExpire", "Expire in 1 hour", time()+3600);//3600 초=1 시간
모든 것 이 다 있다.
SetCookie("FullCookie", "Full cookie value", time()+3600, "/forum", ".phpuser.com", 1);
여기 서 설명 할 것 이 있 습 니 다.예 를 들 어 사이트 에 몇 개의 다른 디 렉 터 리 가 있 습 니 다.그러면 경로 가 없 는 Cookie 만 사용 하면 한 디 렉 터 리 아래 페이지 에 설 치 된 Cookie 는 다른 디 렉 터 리 의 페이지 에서 볼 수 없습니다.즉,Cookie 는 경 로 를 향 한 것 입 니 다.실제로 지정 한 경로 가 없 더 라 도 WEB 서버 는 현재 경 로 를 브 라 우 저 에 자동 으로 전달 하고,지정 한 경 로 는 서버 가 설정 한 경 로 를 사용 하도록 강제 합 니 다.이 문 제 를 해결 하 는 방법 은 SetCookie 를 호출 할 때 경로 와 도 메 인 이름 을 추가 하 는 것 이다.도 메 인 이름 의 형식 은'www.phopuser.com'일 수도 있 고'phopuser.com'일 수도 있다.SetCookie 함수 에서 value 를 나타 내 는 부분 은 전달 할 때 자동 으로 encode 되 는데,즉 value 의 값 이'test value'이면 전달 할 때'test%20value'가 되 고 URL 의 방법 과 같다 는 것 이다.물론 프로그램 으로 서 는 PHP 가 쿠키 값 을 받 을 때 자동 으로 decode 하기 때문에 투명 합 니 다.
같은 이름 의 여러 Cookie 를 설정 하려 면 배열 을 사용 해 야 합 니 다.방법 은:
SetCookie("CookieArray[]", "Value 1");
SetCookie("CookieArray[]", "Value 2");
혹시
SetCookie("CookieArray[0]", "Value 1");
SetCookie("CookieArray[1]", "Value 2");
2.쿠키 접수 및 처리
PHP 는 Cookie 의 수신 과 처리 에 대한 지원 이 매우 좋 고 완전 자동 이 며 FORM 변수의 원칙 과 마찬가지 로 매우 간단 합 니 다.예 를 들 어 MyCookier 라 는 Cookie 를 설정 하면 PHP 는 자동 으로 WEB 서버 에서 받 은 HTTP 헤드 에서 이 를 분석 하고 일반 변수 와 같은 변 수 를 형성 합 니 다.$myCookie 라 고 하 는데 이 변수의 값 은 Cookie 의 값 입 니 다.배열 이 똑 같이 적용 된다.
또 다른 방법 은 PHP 의 전역 변 수 를 참조 하 는 것 입 니 다$HTTPCOOKIE_VARS 배열.
각각 예 를 들 면 다음 과 같다.(이것들 이 모두 이전의 페이지 에 설정 되 었 고 유효 하 다 고 가정 하면)
echo $MyCookie;
echo $CookieArray[0];
echo count($CookieArray);
echo $HTTP_COOKIE_VARS["MyCookie"];
이렇게 간단 해.
3.쿠키 삭제
이미 존재 하 는 쿠키 를 삭제 하려 면 두 가지 방법 이 있 습 니 다.
첫째,name 인자 만 있 는 SetCookie 를 호출 하면 이 name 이라는 Cookie 는 관계 기기 에서 삭 제 됩 니 다.
또 다른 방법 은 쿠키 의 실효 시간 을 time()또는 time()-1 로 설정 하 는 것 입 니 다.그러면 이 쿠키 는 이 페이지 를 탐색 한 후에 삭 제 됩 니 다(사실은 효력 이 없습니다).주의해 야 할 것 은 쿠키 가 삭 제 될 때 현재 페이지 에 있 는 값 이 유효 합 니 다.
4.쿠키 사용 의 제한
우선 HTML 파일 의 내용 출력 전에 설정 해 야 합 니 다.
그 다음으로 브 라 우 저 마다 쿠키 처리 에 대한 인사말 이 다 르 고 오류 가 발생 할 수 있 습 니 다.예 를 들 어 MS IE+SERVICE PACK 1 은 도 메 인 이름과 경 로 를 가 진 Cookie 를 정확하게 처리 하지 못 하고 Netscape Communicator 4.05 와 MS IE 3.0 은 경로 와 시간 이 없 는 Cookie 를 정확하게 처리 하지 못 한다.MS IE 5 에 대해 서 는 도 메 인 이름,경로,시간 이 있 는 Cookie 를 처리 할 수 없 을 것 같 습 니 다.이것 은 내 가 본 사이트 의 페이지 를 설계 할 때 발견 한 것 이다.
세 번 째 제한 은 클 라 이언 트 에 있 습 니 다.하나의 브 라 우 저가 만 들 수 있 는 쿠키 수 는 최대 30 개 이 며,각각 4KB 를 초과 할 수 없 으 며,웹 사이트 마다 설정 할 수 있 는 쿠키 수 는 총 20 개 를 초과 할 수 없습니다.
쿠키 에 관 한 이 야 기 는 여기까지 입 니 다.

좋은 웹페이지 즐겨찾기