Правильно. Благодарю. исправлено ... теперь винить в том, что это пятница после недолгой недели.
од Это простая операция, чтобы проверить, что идентификатор сеанса не был подделан, проверяя 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"
}