Webbserverprogrammering 1

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)
<?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();
}
?>