다음은 코드입니다. 내가 바로 session_start()
후 다시 스크립트의 끝에서 var_dump($_SESSION)
를 삽입 할 경우, 맨 처음 시간 I를PHP에서 내 세션 변수가 참조로 유지되는 이유는 무엇입니까?
session_start();
$session_ip_address = $_SERVER['REMOTE_ADDR'];
if((!isset($_SESSION['SESSION_IP_ADDRESS'])) || !$_SESSION['SESSION_IP_ADDRESS']) {
$_SESSION['SESSION_IP_ADDRESS'] = $session_ip_address;
}
if($_SESSION['SESSION_IP_ADDRESS'] != $_SERVER['REMOTE_ADDR']) {
session_destroy();
$_SESSION['security_error'] = true;
}
: 그것은 IP 주소를 확인하여 세션 ID가 스푸핑되지 않았는지 확인하는 간단한 조작입니다 (세션 쿠키 세트없이) 코드를 실행합니다. 배열이 비어있는 것을 보았습니다. 그러면 'SESSION_IP_ADDRESS'키에 할당 된 IP 주소가 있습니다. 여태까지는 그런대로 잘됐다. 하지만 코드를 다시 실행하면 'SESSION_IP_ADDRESS'가 참조로 저장되고 세션이 시작된 직후에으로 저장됩니다 (문자열 앞에 앰퍼샌드로 알 수 있음). 세 번째로 실행하면 세션이 시작된 직후 'SESSION_IP_ADDRESS'가 null 참조 ('SESSION_IP_ADDRESS' => &null
)가됩니다. 무슨 일 이니?
array(1) {
["SESSION_IP_ADDRESS"]=>
&string(11) "xx.xx.xxx.x"
}
array(1) {
["SESSION_IP_ADDRESS"]=>
&string(11) "xx.xx.xxx.x"
}
그리고 세번째 및 그로부터마다 :
이 출력이 제 시간array(0) {
}
array(1) {
["SESSION_IP_ADDRESS"]=>
string(11) "xx.xx.xxx.x"
}
: 반복하기
이 출력을 처음
array(1) {
["SESSION_IP_ADDRESS"]=>
&NULL
}
array(1) {
["SESSION_IP_ADDRESS"]=>
&string(11) "xx.xx.xxx.x"
}
"시력"을 의미한다고 생각합니다. – Walf
오른쪽. 감사. 고정 ... 이제 looooong 주 후 금요일되는 것을 비난합니다. –