PHP를 사용하여 상태 지원 애플리케이션 개발
사용자가 웹사이트를 검색하고 한 웹페이지에서 다른 웹페이지로 서핑할 때, 때때로 웹사이트는 사용자가 수행한 작업(예: 선택)을 기억해야 합니다. 예를 들어, DVD를 판매하는 웹 사이트에서 사용자는 일반적으로 DVD 목록을 탐색하고 쇼핑 세션이 끝나면 결제할 개별 DVD를 선택합니다. 사용자가 체크아웃할 때 선택한 항목이 사용자에게 다시 표시되어야 하기 때문에 웹사이트는 사용자가 선택한 DVD를 기억해야 합니다. 즉, 웹사이트는 사용자의 탐색 활동 상태(선택한 항목)를 기억해야 합니다.
그러나 HTTP는 상태 비저장 프로토콜이므로 상태를 처리하기에는 적합하지 않습니다. 표준 HTML 웹사이트는 기본적으로 사용자에게 정보를 제공하고 사용자를 다른 관련 웹페이지로 안내하는 일련의 링크를 제공합니다. HTTP의 이러한 상태 비저장 특성을 통해 웹 사이트는 로드 밸런싱 목적으로 여러 서버에 복제될 수 있습니다. 주요 단점은 한 페이지에서 다른 페이지로 탐색하는 동안 웹사이트가 탐색 세션의 상태를 기억하지 못한다는 것입니다. 이로 인해 상호작용이 거의 불가능해졌습니다.
상호 작용성을 높이기 위해 개발자는 브라우징 세션 상태를 기억하기 위해 PHP의 세션 처리 기능을 사용하여 HTTP 기능을 강화할 수 있습니다. 기본적으로 PHP가 이를 수행하는 두 가지 방법은 다음과 같습니다.
1. 쿠키의 사용
2. 세션 사용
다음 편에서는 쿠키를 사용하여 세션을 관리하는 방법에 대해 설명합니다.
할부 2
쿠키
쿠키는 브라우저에 상태 정보를 저장하는 데 사용됩니다. 브라우저는 각 도메인에 대해 최대 20개의 쿠키를 보관할 수 있으며 쿠키에 저장된 값은 4KB를 초과할 수 없습니다. 웹사이트에서 쿠키가 20개 이상 생성된 경우 최신 20개만 저장됩니다. 쿠키는 복잡한 세션 통신이 필요하지 않고 개인 정보 보호 문제로 인해 일부 개발자가 선호하지 않는 경우에만 적합합니다. 또한 일부 사용자는 브라우저에서 쿠키 지원을 비활성화합니다.
다음은 쿠키가 사용될 때 발생하는 일반적인 서버-브라우저 이벤트 시퀀스입니다.
1. 서버는 브라우징 세션 상태를 기억해야 한다는 것을 알고 있습니다.
2. 서버는 쿠키를 생성하고 HTTP 응답의 Set-Cookie 헤더 필드를 사용하여 쿠키를 브라우저에 전달합니다.
3. 브라우저는 HTTP 응답의 쿠키 필드를 읽고 쿠키를 저장합니다.
4. 이 쿠키 정보는 향후 브라우저-서버 통신을 통해 전달되며 PHP 스크립트에서 변수로 사용될 수 있습니다.
PHP는 쿠키를 쉽게 생성할 수 있도록 setcookie()라는 함수를 제공합니다. setcookie의 구문은 다음과 같습니다.
int setcookie(문자열 이름, [문자열 값], [int 만료_날짜], [문자열 경로], 문자열 도메인, [int secure])
매개변수는 다음과 같습니다.
1. 이름 – 필수 매개변수이며 이후에 쿠키를 식별하는 데 사용됩니다 답례품.
2. value – 쿠키의 값 – 예: 쿠키가 사용자 이름을 저장하는 데 사용되는 경우 value 매개변수는 실제 이름을 저장합니다. 남자
3. 만료_날짜 – 쿠키의 수명입니다. 이 날짜 이후에는 쿠키가 만료되어 사용할 수 없습니다.
4. 경로 – 경로는 쿠키가 유효하고 허용되는 URL을 나타냅니다.
5. 도메인 – 쿠키를 생성하고 쿠키의 내용을 읽을 수 있는 도메인입니다.
6. 보안 – 쿠키가 보안 연결을 통해서만 전송될 수 있는지 여부를 지정합니다. SSL 활성화 세션
다음은 특정 웹 페이지가 사용자에게 표시된 횟수를 사용자에게 표시하는 예입니다. 아래 코드(php 및 html 모두)를 .php 확장자를 가진 파일에 복사하고 테스트해 보세요.
[?php
//$count 변수가 count 쿠키와 연관되어 있는지 확인
if (!isset($count)) {
$카운트 = 0;
} 또 다른 {
$개수++;
}
setcookie(“count”, $count, time()+600, “/”, “”, 0);
?]
[html]
[머리]
[title]쿠키를 사용한 세션 처리[/title]
[/머리]
[몸]
이 페이지는 [?=$count ?]회 표시되었습니다.
[/몸]
[/html]
다음 기사에서는 쿠키가 활성화된 PHP 세션 처리 기능을 사용하여 세션을 관리하는 방법에 대해 설명합니다.
할부 3
PHP 세션 처리 – 쿠키 활성화
쿠키를 사용하여 브라우저에 세션 정보를 저장하는 대신 정보를 세션 파일로 서버에 저장할 수 있습니다. 각 사용자 세션마다 하나의 세션 파일이 생성되고 유지됩니다. 예를 들어, 웹 사이트를 탐색하는 동시 사용자가 3명인 경우 각 사용자당 하나씩 3개의 세션 파일이 생성되고 유지 관리됩니다. 세션이 PHP 스크립트 또는 PHP에서 제공하는 데몬 가비지 수집 프로세스에 의해 명시적으로 닫히면 세션 파일이 삭제됩니다. 좋은 프로그래밍 방법은 스크립트에서 세션을 명시적으로 닫는 것입니다.
다음은 PHP 세션 처리가 사용될 때 발생하는 일반적인 서버-브라우저 이벤트 시퀀스입니다.
1. 서버는 브라우징 세션 상태를 기억해야 한다는 것을 알고 있습니다.
2. PHP는 세션 ID를 생성하고 후속 페이지에서 요구하는 대로 향후 정보를 저장하기 위한 세션 파일을 생성합니다.
3. 브라우저에서 세션 ID를 사용하여 쿠키가 생성됩니다.
4. 세션 ID를 저장하는 이 쿠키는 서버에 대한 모든 후속 요청에 대해 투명하고 자동으로 서버로 전송됩니다.
다음 PHP 세션 처리 예제는 이전 쿠키 예제와 동일한 결과를 달성합니다. 아래 코드(php 및 html 모두)를 .php 확장자를 가진 파일에 복사하고 테스트해 보세요.
[?php
//세션을 시작합니다
세션_시작();
//세션 파일에 카운트 정보를 기억해야 함을 PHP에 알립니다.
if (!session_is_registered(“count”)) {
session_register(“개수”);
$카운트 = 0;
}
또 다른 {
$개수++;
}
$session_id = 세션_id();
?]
[html]
[머리]
[title]PHP 세션 처리 – 쿠키 사용[/title]
[/머리]
[몸]
현재 세션 ID는 다음과 같습니다: [?=$session_id ?]
이 페이지는 [?=$count ?]회 표시되었습니다.
[/몸]
[/html]
세션 처리를 위해 PHP가 제공하는 기능 요약은 다음과 같습니다.
1. 부울 start_session() – 세션을 초기화합니다.
2. string session_id([string id]) – 현재 세션 ID를 반환하거나 세션 생성 시 사용할 세션 ID를 지정합니다.
3. boolean session_register(mixed name [, Mixed …]) – 세션 파일에 저장될 변수를 등록합니다. 함수에 전달된 각 매개변수는 별도의 변수입니다.
4. boolean session_is_registered(string Variable_name) – 이전에 세션 파일에 저장되도록 변수가 등록되었는지 확인합니다.
5. session_unregister(string varriable_name) – 세션 파일에서 변수 등록을 취소합니다. 등록되지 않은 변수는 더 이상 세션에서 참조할 수 없습니다.
6. session_unset() – 모든 세션 변수를 설정 해제합니다. 모든 변수는 등록된 상태로 유지된다는 점에 유의하는 것이 중요합니다.
7. 부울 session_destroy() – 세션을 삭제합니다. 이는 start_session 함수와 반대입니다.
다음 기사에서는 쿠키가 비활성화된 경우 PHP 세션 처리 기능을 사용하여 세션을 관리하는 방법에 대해 설명합니다.
할부 4
PHP 세션 처리 – 쿠키 없음
브라우저에서 쿠키가 비활성화된 경우 위의 예는 작동할 수 없습니다. 이는 모든 변수를 저장하는 세션 파일이 서버에 보관되어 있지만 세션 및 관련 세션 파일을 식별하는 데 사용되는 세션 ID를 저장하려면 브라우저에 쿠키가 여전히 필요하기 때문입니다. 이 문제를 해결하는 가장 일반적인 방법은 세션 ID를 URL의 쿼리 매개변수로 브라우저에서 서버로 명시적으로 다시 전달하는 것입니다.
예를 들어, PHP 스크립트는 start_session 호출 이후에 다음 형식으로 요청을 생성합니다.
http://www.yourhost.com/yourphpfile.php?PHPSESSID=[실제 세션 ID]
다음은 토론을 설명하는 발췌문입니다.
수동으로 URL 작성:
$url = “http://www.yoursite.com/yourphppage.php?PHPSESSID=” . 세션ID();
[a href=”[?=$url ?]”]앵커 텍스트[/a]
SID를 사용하여 URL 구축:
[a href=”http://www.yoursite.com/yourphppage.php?[?=SID ?]”]앵커 텍스트[/a]