PHP 세션 및 PHP 쿠키(예제 포함)
쿠키란 무엇입니까?
쿠키는 웹서버가 클라이언트 컴퓨터에 저장하는 최대 크기 4KB의 작은 파일입니다.
쿠키가 설정되면 이후의 모든 페이지 요청은 쿠키 이름과 값을 반환합니다.
쿠키는 쿠키가 발행된 도메인에서만 읽을 수 있습니다. 예를 들어, 도메인을 사용하는 쿠키 세트 www.guru99.com 도메인에서 읽을 수 없습니다. Career.guru99.com.
인터넷상의 대부분의 웹사이트는 광고와 같은 다른 도메인의 요소를 표시합니다. 이러한 요소를 제공하는 도메인은 자체 쿠키를 설정할 수도 있습니다. 이를 제XNUMX자 쿠키라고 합니다.
사용자가 생성한 쿠키는 해당 사용자만 볼 수 있습니다. 다른 사용자는 해당 값을 볼 수 없습니다.
대부분의 웹 브라우저에는 쿠키, 제XNUMX자 쿠키 또는 둘 다를 비활성화하는 옵션이 있습니다.
이 경우 PHP는 URL에 쿠키 토큰을 전달하여 응답합니다.
아래 다이어그램은 쿠키 작동 방식을 보여줍니다.
여기
1) 이용자가 쿠키를 저장하는 페이지를 요청하는 경우
2) 서버는 이용자의 컴퓨터에 쿠키를 설정합니다.
3) 사용자의 다른 페이지 요청은 쿠키 이름과 값을 반환합니다.
쿠키를 사용하는 이유와 시기는 무엇입니까?
- Http는 상태 비저장 프로토콜입니다. 쿠키를 사용하면 사용자 컴퓨터에 저장된 작은 파일을 사용하여 응용 프로그램의 상태를 추적할 수 있습니다. 쿠키가 저장되는 경로는 브라우저에 따라 다릅니다. Internet Explorer는 일반적으로 쿠키를 Temporal Internet Files 폴더에 저장합니다.
- 사용자 경험 개인화 - 이는 사용자가 기본 설정을 선택할 수 있도록 허용함으로써 달성됩니다. 다음에 요청된 페이지는 쿠키에 설정된 기본 설정에 따라 개인화됩니다.
- 사용자가 방문한 페이지 추적
쿠키 만들기
이제 쿠키를 생성하는 데 사용되는 기본 구문을 살펴보겠습니다.
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
이리,
- Php "setcookie"는 PHP 기능 쿠키를 생성하는 데 사용됩니다.
- "cookie_name"은 서버가 $_COOKIE 배열 변수에서 값을 검색할 때 사용할 쿠키의 이름입니다. 필수입니다.
- "cookie_value"는 쿠키의 값이며 필수입니다.
- "[expiry_time]"은 선택 사항입니다. 쿠키의 만료 시간(예: 1시간)을 설정하는 데 사용할 수 있습니다. 시간은 PHP time() 함수를 사용하여 0보다 큰 초 수를 더하거나 빼서 설정됩니다. 즉, 3600시간 동안 time() + 1입니다.
- "[쿠키_경로]"는 선택 사항입니다. 서버에서 쿠키 경로를 설정하는 데 사용할 수 있습니다. 슬래시 "/"는 쿠키가 전체 도메인에서 사용 가능함을 의미합니다. 하위 디렉터리는 쿠키 액세스를 하위 도메인으로 제한합니다.
- "[도메인]"은 선택 사항입니다. 즉, 쿠키 액세스 계층 구조를 정의하는 데 사용할 수 있습니다.
www.cookiedomain.com
전체 도메인을 의미하고,www.sub.cookiedomain.com
쿠키 액세스를 다음으로 제한합니다.www.sub.cookiedomain.com
그리고 그 하위 도메인. 총 문자 수가 253자를 초과하지 않는 한 하위 도메인의 하위 도메인을 가질 수 있습니다. - "[보안]"은 선택 사항이며 기본값은 false입니다. 쿠키가 true로 설정된 경우 https를 통해 전송되는지, false로 설정된 경우 http를 통해 전송되는지를 결정하는 데 사용됩니다.
- “[Httponly]”는 선택 사항입니다. true로 설정되면 클라이언트 측 스크립팅 언어만 사용됩니다. Java스크립트 액세스할 수 없습니다.
참고 : PHP 설정 쿠키 기능은 HTML 여는 태그 이전에 실행되어야 합니다.
이제 쿠키를 사용하는 예를 살펴보겠습니다.
우리는 XNUMX초 후에 만료되는 쿠키에 사용자 이름을 저장할 수 있는 기본 프로그램을 만들 것입니다.
아래 코드는 위의 예제 "cookies.php"의 구현을 보여줍니다.
<?php setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds echo 'the cookie has been set for 60 seconds'; ?>
출력:
the cookie has been set for 60 seconds
쿠키 값 검색
다음 코드를 사용하여 “cookies_read.php”라는 이름의 다른 파일을 만듭니다.
<?php print_r($_COOKIE); //output the contents of the cookie array variable ?>
출력:
Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )
참고: $_COOKIE는 슈퍼 전역 변수에 내장된 PHP입니다.
여기에는 설정된 모든 쿠키의 이름과 값이 포함됩니다.
값의 개수
$_COOKIE 배열은 php.ini에 설정된 메모리 크기에 따라 포함될 수 있습니다.
기본값은 1GB입니다.
우리의 응용 프로그램을 테스트합니다.
PHP 파일을 phptus 폴더에 저장했다고 가정해 보겠습니다.
- 1단계 - 웹 브라우저를 열고 URL을 입력하세요. http://localhost/phptuts/cookies_read.php
참고: 빈 배열만 표시되었습니다.
- 2단계 - 브라우저에서 URL로 이동 http://localhost/phptuts/cookies.php
- 3단계 - 첫 번째 탭으로 다시 전환한 후 새로 고침 버튼을 클릭하세요.
잠시 기다린 후 새로고침 버튼을 다시 클릭하세요. 어떤 결과를 얻었나요?
쿠키 삭제
- 만료 시간 전에 쿠키를 삭제하려면 만료 시간을 이미 지나간 시간으로 설정하세요.
- 다음 코드를 사용하여 cookie_destroy.php라는 이름의 새 파일을 만듭니다.
<?php setcookie("user_name", "Guru99", time() - 360,'/'); ?>
- 쿠키 값 검색에 대한 위 섹션의 1~3단계를 반복합니다.
- URL 열기 http://localhost/phptuts/cookie_destroy.php
- URL로 전환 http://localhost/phptuts/cookies_read.php 어떤 결과가 표시되나요?
세션이란 무엇입니까?
- 세션은 서버에 저장된 전역 변수입니다.
- 각 세션에는 저장된 값을 검색하는 데 사용되는 고유 ID가 할당됩니다.
- 세션이 생성될 때마다 고유한 세션 ID를 포함하는 쿠키가 사용자의 컴퓨터에 저장되고 서버에 대한 모든 요청과 함께 반환됩니다. 클라이언트 브라우저가 쿠키를 지원하지 않으면 고유한 PHP 세션 ID가 URL에 표시됩니다.
- 세션은 쿠키에 비해 상대적으로 큰 데이터를 저장할 수 있는 용량을 가지고 있습니다.
- 브라우저를 닫으면 세션 값이 자동으로 삭제됩니다. 값을 영구적으로 저장하려면 해당 값을 데이터베이스에 저장해야 합니다.
- $_COOKIE 배열 변수와 마찬가지로 세션 변수도 $_SESSION 배열 변수에 저장됩니다. 쿠키와 마찬가지로 세션은 HTML 태그보다 먼저 시작되어야 합니다.
세션을 사용하는 이유와 시기는 무엇입니까?
- 사용자 ID와 같은 중요한 정보를 악의적인 사용자가 조작할 수 없는 서버에 보다 안전하게 저장하려고 합니다.
- 한 페이지에서 다른 페이지로 값을 전달하려고 합니다.
- 쿠키를 지원하지 않는 브라우저에서 쿠키에 대한 대안을 원합니다.
- 전역 변수를 URL로 전달하는 것보다 효율적이고 안전한 방법으로 저장하고 싶습니다.
- 4KB보다 큰 용량의 정보를 임시 저장해야 하는 장바구니와 같은 애플리케이션을 개발 중입니다.
세션 생성
세션을 생성하려면 먼저 PHP session_start 함수를 호출한 다음 $_SESSION 배열 변수에 값을 저장해야 합니다.
페이지가 로드된 횟수를 알고 싶다면 세션을 사용하여 이를 수행할 수 있습니다.
아래 코드는 세션에서 값을 생성하고 검색하는 방법을 보여줍니다.
<?php session_start(); //start the PHP_session function if(isset($_SESSION['page_count'])) { $_SESSION['page_count'] += 1; } else { $_SESSION['page_count'] = 1; } echo 'You are visitor number ' . $_SESSION['page_count']; ?>
출력:
You are visitor number 1
세션 변수 삭제
session_destroy() 함수는 전체 Php 세션 변수를 파괴하는 데 사용됩니다.
세션 단일 항목만 삭제하려면 unset() 함수를 사용합니다.
아래 코드는 두 가지 방법을 모두 사용하는 방법을 보여줍니다.
<?php session_destroy(); //destroy entire session ?>
<?php unset($_SESSION['product']); //destroy product session item ?>
Session_destroy는 세션과 관련된 쿠키를 포함한 모든 세션 데이터를 제거합니다.
Unset은 개별 세션 변수만 해제합니다.
다른 데이터는 그대로 유지됩니다.
요약
- 쿠키는 이용자의 컴퓨터에 저장되는 작은 파일입니다.
- 쿠키는 발급 도메인에서만 읽을 수 있습니다.
- 쿠키에는 만료 시간이 있을 수 있으며, 설정되지 않은 경우 브라우저를 닫을 때 쿠키가 만료됩니다.
- 세션은 서버에 저장된 전역 변수와 같습니다.
- 각 세션에는 사용자의 변수를 추적하는 데 사용되는 고유 식별 ID가 제공됩니다.
- HTML 태그가 브라우저에 전송되기 전에 쿠키와 세션이 모두 시작되어야 합니다.