이 기사의 예에서는 PHP가 쿠키를 사용하여 사용자와의 세션을 구현하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
PHP에는 단순 쿠키, 본격적인 사용자 세션 등 사용자 정보를 관리하고 기록하는 데 사용할 수 있는 많은 기능이 포함되어 있습니다. 세션은 슈퍼전역 변수를 참조하는 것처럼 간단하게 상태를 저장하는 PHP 언어에 내장된 기술을 사용합니다.
1. 쿠키 소개
PHP 스크립트와 함께 쿠키를 사용하여 사용자에 대한 일부 작은 정보를 저장할 수 있습니다. 쿠키는 서버나 스크립트의 요청에 따라 사용자의 브라우저에 저장되는 소량의 데이터입니다. 사용자의 브라우저를 통해 단일 호스트는 20개의 쿠키 저장을 요청할 수 있습니다. 각 쿠키에는 이름, 값, 만료 날짜는 물론 호스트 및 경로 정보가 포함됩니다. 단일 쿠키의 크기 제한은 4KB입니다.
쿠키를 설정한 후에는 요청한 호스트만 데이터를 읽을 수 있으므로 사용자의 개인정보가 보호됩니다. 또한 사용자는 자신을 통한 모든 쿠키 요청을 수락하거나 거부하도록 브라우저를 구성할 수 있습니다. 따라서 쿠키는 자제해서 사용해야 하며 구현이 사용자에게 경고하도록 설계되지 않은 환경에서는 필수 요소로 의존해서는 안 됩니다.
웹 브라우저가 쿠키를 저장하도록 구성된 경우 쿠키 기반 정보는 만료일까지 유지됩니다. 사용자가 브라우저를 사용하여 쿠키의 경로 및 도메인과 일치하는 페이지를 탐색하면 쿠키가 서버로 다시 전송됩니다. 이후 PHP 스크립트는 쿠키에 액세스할 수 있습니다. 쿠키는 환경 변수 HTTP_COOKIE에 있거나 $COOKIE 슈퍼 전역 변수의 일부로 다음 세 가지 방법으로 액세스할 수 있습니다.
echo $_SERVER["HTTP_COOKIE"]
echo getenv("HTTP_COOKIE");
echo $_COOKIE["야채"];
2. PHP를 사용하여 쿠키를 설정
두 가지 방법으로 PHP 스크립트에서 쿠키를 설정할 수 있습니다. 먼저 header() 함수를 사용하여 SetCookie 헤더를 설정합니다. Header() 함수는 서버 응답의 헤더 부분에 포함될 문자열을 기대합니다. 헤더가 자동으로 전송되므로 Jehol 출력이 브라우저에 전송되기 전에 header()를 호출해야 합니다.
head("Set Cookie:vegetable=artichoke; 만료=화,07 -3월- 06 14:39:58 GMT;path=/;domain=yourmain.com");
어렵지는 않지만 이 쿠키 설정 방법을 사용하려면 헤더 문자열을 작성하는 함수를 작성해야 합니다. 이 예와 같이 날짜 형식과 URL 인코딩 이름/값 쌍을 지정하는 것은 특별히 어려운 작업은 아니지만 PHP가 이를 수행하는 함수(setcookie())를 제공하기 때문에 여전히 반복적인 작업입니다.
Setcookie() 함수는 이름에서 알 수 있듯이 Set-Cookie 헤더를 출력합니다. 따라서 다른 콘텐츠가 브라우저로 전송되기 전에 호출되어야 합니다. 이 함수는 쿠키 이름, 쿠키 값, UNIX 타임스탬프 형식의 만료 날짜, 경로, 도메인 및 쿠키가 보안 연결을 통해서만 전송되는 경우 1로 설정된 정수를 허용합니다. 이 기능은 선택 사항입니다.
setcookie ( "야채" , "아티초크" , 시간 () 3600, "/" , ".yourdomain.com" , 0);
if ( isset ( $_COOKIE [ "야채" ])){
echo "
안녕하세요. " . $_COOKIE [ "야채" ]를 선택하셨습니다.
}
그렇지 않으면 {
echo "
안녕하세요. 이번이 처음 방문이군요.
"
}
?>
스크립트를 처음 실행할 때 쿠키를 설정하더라도 이때는 $_COOKIE["vegetable"] 변수가 생성되지 않습니다. 쿠키는 브라우저가 서버에 쿠키를 보낼 때만 읽혀지므로 사용자가 이 도메인 내의 페이지를 다시 방문할 때까지 쿠키를 읽을 수 없습니다.
공식적으로 말하면, 쿠키를 삭제하려면 쿠키 이름 매개변수와 함께 setcookies():
를 호출하면 됩니다.
setcookie("야채");
그러나 이 접근 방식은 항상 작동하는 것은 아니며 신뢰할 수 없습니다. 대신 쿠키를 삭제하려면 만료된 것이 확실한 시간으로 쿠키를 설정하세요. 이것이 가장 안전한 방법입니다.
Setcookie("야채", "", time()-60, "/", "yourdomain.com", 0);
또한 원래 쿠키를 설정할 때 사용했던 것과 동일한 경로, 도메인 및 보안 매개변수를 setcookie()에 전달해야 합니다.
3. 세션 기능 개요
방문자가 세션이 활성화된 페이지에 액세스하면 새 식별자가 할당되거나 사용자가 이전 방문에 대해 이미 설정된 식별자와 다시 연결됩니다. 이미 세션과 연결된 모든 변수는 $_SESSION 슈퍼전역 변수를 통해 코드에서 사용할 수 있습니다.
session_set_save_handler()라는 함수를 사용하여 데이터베이스 저장소를 구현할 수 있지만 세션 상태는 일반적으로 임시 파일에 저장됩니다.
4. 대화 시작
session_start ();
echo "
귀하의 세션 ID는 " 입니다. "
"
?>
5. 세션 변수 사용
모든 PHP 문서의 고유 세션 식별자에 액세스하는 것은 세션 기능의 시작일 뿐입니다. 세션이 시작되면 슈퍼전역 변수 $_SESSION에 원하는 만큼 많은 변수를 저장한 다음 세션 인식 페이지에서 해당 변수에 액세스할 수 있습니다.
다음 프로그램은 슈퍼전역 변수 $_SESSION에 두 개의 변수를 추가합니다.
session_start ();
$_SESSION [ "product1" ] = "소닉 드라이버" ;
$_SESSION [ "product2" ] = "HAL 2000" ;
echo "상품이 등록되었습니다." ;
?>
위 프로그램의 마법은 사용자가 새 페이지로 이동할 때까지 실현되지 않습니다. 다음 프로그램은 슈퍼전역 변수 $_SESSION에 저장된 변수에 액세스하는 단일 PHP 스크립트를 생성합니다.
session_start ();
echo "선택한 제품은 다음과 같습니다:" ;
에코 "
" ;
echo "- " . $_SESSION [ "제품1" ] ;
echo " - " . $_SESSION [ "제품2" ].
에코 "
" ;
?>
다음 프로그램 목록은 사용자가 여러 제품을 선택할 수 있는 양식을 만듭니다. 세션 변수를 사용하여 기본 장바구니를 만들 수 있습니다.
arraysession.php:
코드 복사 코드는 다음과 같습니다.
session_start ();
?>
세션
을 사용하여 배열 저장
머리>
제품 선택 페이지
if ( isset ( $_POST [ "form_products" ])){
if (! 비어 있음 ( $_SESSION [ "제품" ])){
$products = array_unique (
array_merge ( 직렬화 취소 ( $_SESSION [ "제품" ]),
$_POST [ "form_produces" ]));
}
그 외
{
$_SESSION [ "제품" ] = 직렬화( $_POST [ "form_products" ]);
}
echo "
귀하의 제품이 등록되었습니다!
" ;
}
?>