Проблема с сохранением сеанса и перенаправлением входа в систему в приложении PHPPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Проблема с сохранением сеанса и перенаправлением входа в систему в приложении PHP

Сообщение Anonymous »

Я реализовал обработку сеансов и форму входа, чтобы ограничить доступ к определенным страницам, таким как панель управления. Логика сеанса и форма входа обрабатываются в common.php с помощью кода ниже






Login






const sessionMonitor = {
checkInterval: 15000, // Check every 15 seconds
timeoutDuration: 70000, // 70 seconds for demo purposes
lastActivity: Date.now(),
sessionExpired: false, // Flag to stop further checks after session expiration

init: function() {
// Check if inside iframe
if (window.self !== window.top) {
console.log("Inside iframe, skipping session checks.");
return; // Skip session monitoring if in iframe
}

console.log("Not in iframe, starting session monitor.");

// Set up activity listeners
['mousedown', 'keydown', 'scroll', 'touchstart'].forEach(eventType => {
document.addEventListener(eventType, () => this.updateActivity());
});

// Start the check interval
this.startChecking();
},

updateActivity: function() {
if (!this.sessionExpired) {
this.lastActivity = Date.now();
}
},

startChecking: function() {
this.checkIntervalID = setInterval(() => this.checkSession(), this.checkInterval);
},

checkSession: function() {
// Check if user has been inactive
if (Date.now() - this.lastActivity >= this.timeoutDuration && !this.sessionExpired) {
fetch('check_session.php')
.then(response => response.json())
.then(data => {
console.log(data.status);
if (data.status === 'expired') {
this.sessionExpired = true; // Set the flag to stop further checks
clearInterval(this.checkIntervalID); // Stop the interval to prevent further refreshes
window.location.href = window.location.href; // Refresh the page
}
})
.catch(error => console.error('Session check failed:', error));
}
}
};

// Initialize the session monitor when the page loads
document.addEventListener('DOMContentLoaded', () => sessionMonitor.init());





И это включено в Dashboard.php как:


Когда я вхожу в систему, меня успешно перенаправляет на панель управления, и я могу просматривать содержимое страницы, как и ожидалось. Однако я столкнулся с проблемой при ручном вводе или обновлении URL-адреса в адресной строке браузера. Если я напрямую получаю доступ к URL-адресу Dashboard.php (например, вводя его в адресную строку или обновляя страницу), сеанс кажется потерянным, и я перенаправляюсь обратно к форме входа в систему.
Похоже, что сеанс не сохраняется при перезагрузке страницы или прямом доступе к URL-адресу. Я не уверен, чего мне не хватает в логике обработки сеанса, и был бы признателен за любые рекомендации о том, как это исправить, чтобы сеанс оставался активным при прямом доступе к URL-адресу.
Вот check_session.php



Подробнее здесь: https://stackoverflow.com/questions/791 ... pplication
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»