Webbserver - Love Blomberg

Show sourcecode

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

public_html/crumbs/admin/users/

adduser.php
deleteuser.php
edituser.php

deleteuser.php

96 lines UTF-8 Windows (CRLF)
<?php
$basePath 
'../../';
$pageTitle 'Ta bort Användare';
$activePage 'deleteuser';

session_start();
if (!isset(
$_SESSION['is_admin']) || $_SESSION['is_admin'] != 1) {
  
header('Location: ../../login.php');
  die();
}

include(
'../../dbconnection.php');
if (!
$dbconn) {
  die(
"Connection failed: Can't connect to database.");
}

$message null;
$messageClass 'alert-warning';

if (isset(
$_POST['user_id']) && !empty($_POST['user_id'])) {
  
$user_id = (int)$_POST['user_id'];

  
// SÄKERHET: Förhindra borttagning av admin-kontot (ID 1) på serversidan
  // (klientsidans disabled-attribut kan kringgås)
  
if ($user_id === 1) {
    
$messageClass 'alert-error';
    
$message "Admin-kontot kan inte tas bort.";
  } else {
    try {
      
$sql "DELETE FROM users WHERE user_id=?";
      
$stmt $dbconn->prepare($sql);
      
$stmt->execute(array($user_id));

      
$messageClass 'alert-success';
      
$message "Användare borttagen.";
    } catch (
PDOException $e) {
      
// SÄKERHET: Visa inte detaljerade databasfel (kan avslöja intern information)
      
error_log("deleteuser error: " $e->getMessage());
      
$messageClass 'alert-error';
      
$message "Ett databasfel uppstod. Försök igen senare.";
    }
  }
}

include(
'../../includes/header.php');
?>

<div class="page-header">
  <div class="page-header-text">
    <h1>Ta bort Användare</h1>
    <p>Ta bort ett användarkonto från systemet.</p>
  </div>
</div>

<div class="alert alert-warning">
  <span class="material-symbols-rounded" style="font-size:18px">warning</span>
  Alla beställningar kopplade till kontot tas bort. Detta kan ej ångras.
</div>

<?php if ($message): ?>
  <div class="alert <?= $messageClass ?>"><?= $message ?></div>
<?php endif; ?>

<div class="card">
  <h2><span class="material-symbols-rounded" style="font-size:20px; vertical-align:middle; margin-right:6px">group</span>Användare</h2>
  <?php
  $sql 
"SELECT * FROM users";
  
$stmt $dbconn->prepare($sql);
  
$stmt->execute();
  
$output '<table class="table"><thead><tr><th>ID</th><th>Användarnamn</th><th>Admin</th><th></th></tr></thead><tbody>';
  while (
$res $stmt->fetch(PDO::FETCH_ASSOC)) {
    
$idx htmlentities($res['user_id']);
    
$username htmlentities($res['username']);
    
$is_admin $res['is_admin'] == 'Ja' 'Nej';

    
$output .= "<tr>" .
      
"<td>$idx</td>" .
      
"<td>$username</td>" .
      
"<td>$is_admin</td>" .
      
"<td><form method='post' action=''>" .
      
"<input type='hidden' name='user_id' value='$idx'>";

    if (
$idx == 1) {
      
$output .= "<button type='submit' disabled class='btn btn-danger btn-sm'><span class='material-symbols-rounded' style='font-size:16px'>delete</span> Ta bort</button></form></td></tr>";
    } else {
      
$output .= "<button type='submit' class='btn btn-danger btn-sm'><span class='material-symbols-rounded' style='font-size:16px'>delete</span> Ta bort</button></form></td></tr>";
    }
  }
  
$output .= "</tbody></table>";
  echo 
$output;

  
$dbconn null;
  
?>
</div>

<?php include('../../includes/footer.php'); ?>