PHP сессии через AJAX запросы
Давайте теперь поработаем с сессиями PHP.
Так как PHP сессии работают на куках,
то без правильной настройки credentials
при совершении AJAX запросов сессии не будут поддерживаться.
Давайте проверим это. На странице
index.php стартуем сессию
и запишем в нее некоторое значение:
<?php
session_start();
$_SESSION['test'] = '!!!';
?>
На странице ajax.php
выведем записанное значение:
<?php
session_start();
echo $_SESSION['test'];
?>
Зайдите вручную через браузер
сначала на index.php,
а потом на ajax.php.
Убедитесь, что значение из сессии выводится.
Проверим теперь в AJAX запросе.
Если мы сделаем запрос без
настройки credentials,
то значение сессии не выведется:
let response = await fetch('/ajax.php', {
method: 'GET',
});
let text = response.text();
console.log(text);
Давайте теперь установим настройку
credentials. Теперь
значение сессии выведется
при AJAX запросе:
let response = await fetch('/ajax.php', {
method: 'GET',
credentials: 'same-origin',
});
let text = response.text();
console.log(text);
По заходу на сайт запишите в сессию время захода. При AJAX запросе пусть сервер вычислит, сколько времени прошло между заходом на сайт и совершением AJAX запроса.