Почему не модифицируются сессии между разными php скриптами?
У меня есть несколько по сути изолированных друг от друга скрипта, то есть каждый раз запускается какой-то из них при запросе, родителя как такового нет. Вот я делаю запрос на login.php
, проверяю данные и записываю сессию:
<?php
session_start();
$_SESSION['role'] = 2;
Затем в другой скрипте, getProducts.php
, я валидирую права доступа по значению в сессии
<?php
session_start();
if ($_SESSION['role'] !== 2) {
http_response_code(403);
exit();
}
else {
$resp['role'] = $_SESSION['role'];
http_response_code(200);
echo json_encode($resp);
exit();
}
В примере выше я просто возвращаю роль, чтобы из консоли наблюдать за ее состоянием. И в этой ситуации роль равняется "2" - скрипт работает, все ок, права доступа валидируются.
Сейчас я хочу удалить сессии пользователя, по сути разлогинить его, чтобы протестировать, что скрипты не будут пускать человека без сессии. Я создал logout.php
и поместил в него разные вариации кода:
<?php
session_start();
unset($_SESSION);
echo json_encode(['role' => $_SESSION['role'], 'id' => $_SESSION['id']]);
.
<?php
session_start();
unset($_SESSION['role']);
echo json_encode(['role' => $_SESSION['role'], 'id' => $_SESSION['id']]);
.
<?php
session_start();
session_unset();
session_destroy();
echo json_encode(['role' => $_SESSION['role'], 'id' => $_SESSION['id']]);
.
<?php
session_unset();
session_destroy();
session_abort();
echo json_encode(['role' => $_SESSION['role'], 'id' => $_SESSION['id']]);
и даже
<?php
session_start();
$_SESSION['role'] = 'dfdfdfdf';
echo json_encode(['role' => $_SESSION['role'], 'id' => $_SESSION['id']]);
и т.д.
В ответе на запрос к logout.php
я вижу, что $_SESSION['role'] === null
Но затем, когда я снова делаю запрос к getProducts.php
я снова получаю в ответе role = 2.
Почему сохранение сессий между отдельными скриптами работает (в файле login.php
) работает и переменная читается в других скриптах (getProducts.php
), но их дальнейшая модификация в других файлах ($_SESSION['role'] = 'dfdfdfdf';
) не меняет значение для всех остальных скриптов? Как очистить сессии в одном скрипте для остальных?