Правильно. Благодарю. исправлено ... теперь винить в том, что это пятница после недолгой недели.

од Это простая операция, чтобы проверить, что идентификатор сеанса не был подделан, проверяя IP-адрес:

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;
}

Если я вставлюvar_dump($_SESSION) сразу послеsession_start() и снова в конце скрипта, затем в самый первый раз, когда я запускаю код (без набора файлов cookie сеанса), я вижу, что сначала массив пуст, затем ему присваивается мой IP-адрес для ключа 'SESSION_IP_ADDRESS'. Все идет нормально. Но когда я снова запускаю код, теперь он показывает, что «SESSION_IP_ADDRESS» хранится какссылка сразу после начала сеанса (могу сказать по амперсанду перед строкой). Когда я запускаю его в третий раз, я вижу, что 'SESSION_IP_ADDRESS' теперь является пустой ссылкой ('SESSION_IP_ADDRESS' => &null) сразу после начала сеанса. Что происходит?!

Повторим, это вывод в первый раз:

array(0) {
}
array(1) {
  ["SESSION_IP_ADDRESS"]=>
  string(11) "xx.xx.xxx.x"
} 

Это вывод во второй раз:

array(1) {
  ["SESSION_IP_ADDRESS"]=>
  &string(11) "xx.xx.xxx.x"
}
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"
}

Ответы на вопрос(4)

Ваш ответ на вопрос