if (isset($_SESSION['last_ip']) === false) {
$_SESSION['last_ip'] = $_SERVER['REMOTE_ADDR'];
}
세션 "last_ip는"아직 생성되지 않은 경우,이 생성 및 사용자의 현재 IP의 값을 저장된다는 것을 의미합니다. 코드 위
if ($_SESSION['last_ip'] != $_SERVER['REMOTE_ADDR']){
session_unset();
session_destroy();
}
는 "last_ip"의 세션 값이 현재의 IP와 동일하지 않은 경우, 모든 세션 변수 (session_unset)를 확보하고 세션 (로 세션)에 등록 된 모든 데이터를 파괴하는 것을 나타냅니다.
실제 시나리오를 설명해 보겠습니다.
귀하의 웹 사이트에 먼저 액세스하므로 코드의 블럭이 현재의 현재 IP를 저장합니다. 이제 내 인터넷 연결이 끊어졌습니다. 그리고 dhcp가 활성화 된 내 isp에 다시 연결하고 에 새 IP를 제공합니다. 따라서 웹 사이트를 다시 방문하면 두 번째 코드 블록이 다른 IP를 가지고 있는지 확인하여 나를 로그 아웃합니다.
"last_ip"세션이 아직 생성되지 않은 경우 PHP의 알림을 표시하지 않도록 두 번째 코드 블록도 편집하십시오. 세션이 삭제 한 경우
if (isset($_SESSION['last_ip']) && $_SESSION['last_ip'] != $_SERVER['REMOTE_ADDR']){
session_unset();
session_destroy();
}
, 사용자들은 그래, 그들은 것 –
에 로그인하면 새로운 IP에서 새 세션을 얻을 수있을 것입니다. – Halcyon
나는 session_regenerate_id를 추가했다. (true); 그렇다면이 2 개가 어떻게 함께 작동합니까? –