Show sourcecode
The following files exists in this folder. Click to view.
webbserverprogrammering/submissions/projekt-quiz/includes/
db_connect.php
footer.php
functions.php
header.php
session_config.php
session_config.php
60 lines UTF-8 Unix (LF)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
<?php
// Sessionkonfiguration och säkerhet
// Endast ställ in session-inställningar om sessionen inte redan är aktiv
if (session_status() === PHP_SESSION_NONE) {
// Förhindra session fixation
ini_set('session.use_strict_mode', 1);
// Använd endast cookies för sessions
ini_set('session.use_cookies', 1);
ini_set('session.use_only_cookies', 1);
// Gör cookies säkrare
ini_set('session.cookie_httponly', 1);
// Session timeout (30 minuter)
ini_set('session.gc_maxlifetime', 1800);
}
// Kontrollera inaktivitet
function checkSessionTimeout() {
$timeout = 1800; // 30 minuter
if (isset($_SESSION['last_activity'])) {
$inactive = time() - $_SESSION['last_activity'];
if ($inactive > $timeout) {
session_unset();
session_destroy();
header("Location: login.php?timeout=1");
exit();
}
}
$_SESSION['last_activity'] = time();
}
// Kontrollera att användare är inloggad (eller admin)
function requireLogin() {
// Allow both regular users and admins
$isUser = isset($_SESSION['logged_in']) && $_SESSION['logged_in'] === true;
$isAdmin = isset($_SESSION['admin_logged_in']) && $_SESSION['admin_logged_in'] === true;
if (!$isUser && !$isAdmin) {
header("Location: login.php");
exit();
}
checkSessionTimeout();
}
// Kontrollera att admin är inloggad
function requireAdmin() {
if (!isset($_SESSION['admin_logged_in']) || $_SESSION['admin_logged_in'] !== true) {
header("Location: admin/admin_login.php");
exit();
}
checkSessionTimeout();
}
?>