PHP 세션은 웹의 고유 한 무국적 음성을 해결하여 쇼핑 카트, 웹 사이트 방문 추적 및 사용자 탐색 모니터링과 같은 기능을 가능하게합니다. 대부분의 경우 PHP의 기본 세션 처리 처리가 충분하지만 사용자 정의 솔루션은 확장 된 기능 및 대체 데이터 저장을 제공합니다. 이 기사는 기본 메커니즘을 설명하고 맞춤형 세션 관리를 위해이를 무시하는 방법을 보여줍니다.
주요 개념 :
PHP의 기본 세션 처리는 일반적으로 적절하지만 사용자 정의 처리기는 다양한 데이터 저장 (예 : MySQL, XML, Memcache)을 허용합니다.
직렬화 (, )는 스토리지 위치에 관계없이 기본 데이터 처리 방법으로 남아 있습니다.
기본 세션 핸들러를 교체 할 수 있습니다. 세션 개방, 마감, 읽기, 쓰기, 파괴 및 쓰레기 수집 : 사용자 정의 처리기는 종종 각 세션의 수명주기 단계에 대한 방법을 제공하는 클래스를 구현하는 클래스를 사용합니다.
PHP에 의해 주기적으로 호출 된 쓰레기 수집은 구식 세션 데이터를 제거합니다. 그 주파수는 in 에서 및 에 의해 제어됩니다.
기본 세션 스토리지 이해 : -
사용자 정의 핸들러를 만들기 전에 PHP의 기본 동작을 이해하십시오. 세션 데이터는 서버의 개별 파일에 저장되며 각각 고유 ID (브라우저 쿠키 또는 URL 매개 변수에 저장)에 연결되어 있습니다. PHP는이 ID를 사용하여 후속 요청에서 데이터를 검색합니다.
세션 데이터 디렉토리를 찾으려면
이 경로를 - 또는 로 변경할 수 있습니다. 웹 루트 디렉토리 외부에 세션 데이터를 저장하면 보안이 향상됩니다.
serialize()
세션 파일 ( "sess_"라는 이름으로 이름이 붙어서 세션 ID - 를 통해 얻을 수 있음)에는 직렬화 된 데이터가 포함되어 있습니다. 예를 들어, 를 저장하면 다음이 포함 된 파일이 포함됩니다
unserialize()
이 직렬화는 사용자 정의 핸들러에서도 일관됩니다. 당신은
데이터가 저장되는 곳을 변경합니다. - 가 어떻게 처리되는지.
session_set_save_handler()
세션 수명주기 및 : -
SessionHandlerInterface
는 세션 파일을 열고 데이터를 에로드합니다. 스크립트가 끝나면 (또는 를 통해) 데이터가 저장됩니다. 는 다음을위한 사용자 정의 콜백으로 이것을 재정의 할 수 있습니다
세션 열기
세션을 닫습니다
세션 데이터 읽기
쓰기 세션 데이터
세션 파괴
쓰레기 수집
-
각 라이프 사이클 단계에는 등록 된 콜백 함수가 필요합니다. 그렇지 않으면 PHP가 경고를 발행합니다. 콜백은 함수, 클로저, 객체 메소드 또는 정적 클래스 메소드가 될 수 있습니다.
사용자 정의 핸들러 구축 (MySQL 예제) : -
이 예제는 MySQL 데이터베이스를 사용하여 세션 데이터를 저장합니다. 데이터베이스 테이블에는 세션 ID, 데이터 및 마지막 액세스 시간에 대한 필드가 있어야합니다.
다음 함수는 데이터베이스 상호 작용에 PDO를 사용하여 6 개의 콜백을 보여줍니다.
-
자리 표시 자 데이터베이스 자격 증명을 자신의 것으로 바꾸는 것을 잊지 마십시오. 이 예제는 기본 프레임 워크를 제공합니다. 생산 사용을 위해 오류 처리 및보다 강력한 데이터베이스 상호 작용을 추가해야합니다. 및
내의 데이터 처리는 특정 요구에 맞게 조정할 수 있습니다 (예 : 스토리지 전 데이터 비시 지화 데이터).
- 결론 :
사용자 정의 세션 핸들러는 세션 관리에 대한 유연성과 제어를 제공합니다. 이 기사는 MySQL 기반 솔루션을 시연했습니다. 동일한 원칙이 다른 스토리지 메커니즘에 적용됩니다. 직렬화/사제화를 올바르게 처리하고 적절한 오류 처리 및 보안 조치를 구현해야합니다.
위 내용은 맞춤형 세션 핸들러를 작성합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!