PHP에서 $ _session은 사용자의 브라우저와 서버간에 상태 정보를 보존하는 일반적으로 사용되는 세션 메커니즘입니다. 그러나 세션 변수가 증가하거나 논리가 더욱 복잡해지면 때로는 현재 세션의 내용을 지우고 현재 세션 ID를 파괴하지 않고 기본 초기 상태로 재 구축하려고합니다. 이 시점에서 Session_Reset () 함수는 유용 할 수 있습니다.
이 기사는 Session_Reset () 함수를 올바르게 사용하여 PHP 세션을 지우고 재건하는 방법을 자세히 설명합니다.
Session_Reset ()는 세션을 파괴하지 않지만 현재 메모리의 $ _session 값을 서버 측 세션 스토리지의 원래 값으로 재설정합니다. 즉, Session_Start () 이후 $ _session 으로 만든 수정을 취소하지만 세션 ID를 변경하거나 전체 세션 파일을 파괴하지는 않습니다.
이것은 session_destroy () 또는 $ _session = array () 와 분명히 다른 것입니다.
현재 세션의 데이터를 지우고 기본 구조로 초기화하려면 일반적인 보안 사례는 다음과 같습니다.
세션을 시작하십시오.
$ _session 배열을 지우십시오.
초기화 된 구조를 $ _session 에 할당하십시오.
쓸 수있는 session_write_close ()를 호출하십시오.
초기 구조를 복원하려면 Session_Reset ()를 사용할 수 있습니다.
<?php
session_start();
// 전류를 지우십시오 session 데이터
$_SESSION = array();
// 기본값을 초기화하십시오 session 데이터结构
$_SESSION = [
'user' => null,
'cart' => [],
'preferences' => [
'language' => 'zh-CN',
'theme' => 'light'
]
];
// 새로운 구조에 쓰십시오
session_write_close();
// 새로 고침 session 그리고 사용 session_reset 기본값을 복원하십시오
session_start();
$_SESSION['user'] = 'admin';
$_SESSION['cart'][] = '상품A';
// 수정을 취소하고 방금 쓴 기본 구조로 재설정
session_reset();
// 출력 전류 session 콘텐츠
header('Content-Type: application/json');
echo json_encode($_SESSION);
이 코드는 다음과 같이 처리됩니다.
먼저 세션 데이터를 지우고 초기화합니다.
사용자 수정 세션 (예 : 로그인 또는 쇼핑 카트 추가)의 프로세스를 시뮬레이션합니다.
Session_Reset ()을 사용하여 기본 구조로 복원하십시오.
복원 된 세션 데이터가 마침내 출력됩니다.
사용자는 작업을 취소 한 후 초기 세션 상태를 복원하기를 희망합니다.
양식 프로세스 중에 사용자는 모든 선택을 재설정합니다.
디버그 또는 테스트 세션 초기화 로직.
"빈 및 초기 상태로 돌아 가기"기능을 작성할 때 사용됩니다.
기능 | 기능에 대한 설명 |
---|---|
session_reset () | 디스크에 저장된 원래 세션 값으로 복원하십시오 |
session_destroy () | 세션 파일을 삭제하고 세션을 로그 아웃하십시오 |
session_unset () | $ _session 의 모든 값을 지우십시오 |
session_write_close () | 세션을 작성하고 세션 파일을 닫습니다 |
Session_Reset ()는 세션 파일을 삭제하지 않으며 세션 ID를 변경하지 않으므로 사용자의 로그인 상태 또는 세션 ID에 영향을 미치지 않습니다.
일부 고급 시나리오에서는 초기화 기본 구조가 구성 센터 또는 원격 인터페이스에서 시작될 수 있습니다. CURL 또는 기타 HTTP 클라이언트를 통해 https://gitbox.net/api/default-session-structure 에서 초기 구조를 가져올 수 있습니다.
<?php
function fetchDefaultSessionStructure() {
$json = file_get_contents('https://gitbox.net/api/default-session-structure');
return json_decode($json, true);
}
session_start();
$_SESSION = fetchDefaultSessionStructure();
session_write_close();
이러한 방식으로 기본 세션 데이터를 동적으로로드하여 시스템을보다 유연하게 만들 수 있습니다.
Session_Reset () 은 무시되지만 매우 실용적인 PHP 기능으로 세션을 파괴하지 않고 모든 세션 수정을 취소 할 수 있습니다. Session_Reset ()를 합리적으로 사용하면 사용자 세션을 처리 할 때 유연성과 안정성을 크게 향상시킬 수 있습니다. 특히 양식 프로세스 제어 및 사용자 행동 붕괴와 같은 시나리오에서는 실질적인 의미가 있습니다.
작업 메커니즘을 이해함으로써 강력한 세션 관리 로직을 쉽게 구축 할 수 있습니다.