Webbserver - Love Blomberg

Show sourcecode

The following files exists in this folder. Click to view.

public_html/crumbs/includes/

footer.php
header.php

header.php

124 lines UTF-8 Windows (CRLF)
<?php
// header.php - Shared layout: topbar + sidebar + main content start
// Required variables before including:
//   $basePath  - relative path to project root (e.g. './', '../', '../../')
//   $pageTitle - page title for <title> tag
//   $activePage - identifier for active sidebar link

if (!isset($basePath)) $basePath './';
if (!isset(
$pageTitle)) $pageTitle 'Crumbs';
if (!isset(
$activePage)) $activePage '';

// Session & auth
if (session_status() === PHP_SESSION_NONEsession_start();
$loggedIn = isset($_SESSION['logged_in']) && $_SESSION['logged_in'] == 1;
$isAdmin = isset($_SESSION['is_admin']) && $_SESSION['is_admin'] == 1;
$userName $loggedIn && isset($_SESSION['name']) ? htmlspecialchars($_SESSION['name']) : 'Guest';
$userLogin $loggedIn && isset($_SESSION['username']) ? htmlspecialchars($_SESSION['username']) : $userName;

// Auth guard - redirect to login if not logged in
if (!$loggedIn) {
  
header('Location: ' $basePath 'login.php');
  die();
}
?>
<!DOCTYPE html>
<html lang="sv">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title><?= htmlspecialchars($pageTitle?> | Crumbs</title>
  <link rel="shortcut icon" href="<?= $basePath ?>icons/cookie_24dp_E3E3E3_FILL0_wght400_GRAD0_opsz24.svg" type="image/svg">
  <link rel="stylesheet" href="<?= $basePath ?>style/stylesheet.css">
  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap">
</head>

<body>
  <!-- Topbar -->
  <header class="topbar">
    <div class="topbar-left">
      <button class="topbar-toggle" onclick="toggleSidebar()" aria-label="Toggle sidebar">
        <span class="material-symbols-rounded">menu</span>
      </button>
      <a href="<?= $basePath ?>index.php" class="topbar-brand">
        <span class="material-symbols-rounded">cookie</span>
        Crumbs Demo
      </a>
    </div>
    <div class="topbar-right">
      <div class="topbar-user">
        <span class="material-symbols-rounded">account_circle</span>
        <span><?= $userName ?></span>
      </div>
      <!-- SÄKERHET: Utloggning via POST-formulär istället för GET-länk (skyddar mot CSRF) -->
      <form method="post" action="<?= $basePath ?>logout.php" style="margin:0;display:inline;">
        <button type="submit" class="topbar-logout" style="border:none;background:none;cursor:pointer;display:flex;align-items:center;gap:4px;color:inherit;font:inherit;padding:inherit;">
          <span class="material-symbols-rounded" style="font-size:18px">logout</span>
          Logga ut
        </button>
      </form>
    </div>
  </header>

  <!-- Sidebar -->
  <nav class="sidebar" id="sidebar">
    <div class="sidebar-section">
      <div class="sidebar-label">Meny</div>
      <div class="sidebar-divider"></div>
      <a href="<?= $basePath ?>index.php" class="sidebar-link <?= $activePage === 'dashboard' 'active' '' ?>">
        <span class="material-symbols-rounded">dashboard</span>
        <span>Dashboard</span>
      </a>
      <a href="<?= $basePath ?>order/neworder.php" class="sidebar-link <?= $activePage === 'neworder' 'active' '' ?>">
        <span class="material-symbols-rounded">add_shopping_cart</span>
        <span>Ny beställning</span>
      </a>
      <a href="<?= $basePath ?>order/vieworders.php" class="sidebar-link <?= $activePage === 'vieworders' 'active' '' ?>">
        <span class="material-symbols-rounded">receipt_long</span>
        <span>Dina beställningar</span>
      </a>
    <?php if (!$isAdmin): ?>
    </div>
    <?php else: ?>
        <div class="sidebar-label">Admin</div>
        <div class="sidebar-divider"></div>
        <a href="<?= $basePath ?>admin/orders/orders.php" class="sidebar-link <?= $activePage === 'admin-orders' 'active' '' ?>">
          <span class="material-symbols-rounded">list_alt</span>
          <span>Beställningar</span>
        </a>
        <a href="<?= $basePath ?>admin/orders/statusdisplay.php" target="_blank" class="sidebar-link <?= $activePage === 'status-display' 'active' '' ?>">
          <span class="material-symbols-rounded">monitor</span>
          <span>Status Display</span>
        </a>
        <a href="<?= $basePath ?>admin/products/addproduct.php" class="sidebar-link <?= $activePage === 'addproduct' 'active' '' ?>">
          <span class="material-symbols-rounded">add_box</span>
          <span>Skapa produkt</span>
        </a>
        <a href="<?= $basePath ?>admin/products/editproduct.php" class="sidebar-link <?= $activePage === 'editproduct' 'active' '' ?>">
          <span class="material-symbols-rounded">edit_note</span>
          <span>Hantera produkter</span>
        </a>
        <div class="sidebar-label">Användare</div>
        <div class="sidebar-divider"></div>
        <a href="<?= $basePath ?>admin/users/adduser.php" class="sidebar-link <?= $activePage === 'adduser' 'active' '' ?>">
          <span class="material-symbols-rounded">person_add</span>
          <span>Skapa användare</span>
        </a>
        <a href="<?= $basePath ?>admin/users/edituser.php" class="sidebar-link <?= $activePage === 'edituser' 'active' '' ?>">
          <span class="material-symbols-rounded">manage_accounts</span>
          <span>Redigera användare</span>
        </a>
        <a href="<?= $basePath ?>admin/users/deleteuser.php" class="sidebar-link <?= $activePage === 'deleteuser' 'active' '' ?>">
          <span class="material-symbols-rounded">person_remove</span>
          <span>Ta bort användare</span>
        </a>
      </div>
    <?php endif; ?>
  </nav>

  <!-- Mobile overlay -->
  <div class="sidebar-overlay" onclick="toggleSidebar()"></div>

  <!-- Main content -->
  <main class="main-content">