Show sourcecode
The following files exists in this folder. Click to view.
public_html/crumbs/admin/users/
adduser.php
deleteuser.php
edituser.php
adduser.php
143 lines UTF-8 Windows (CRLF)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
<?php
$basePath = '../../';
$pageTitle = 'Skapa Användare';
$activePage = 'adduser';
session_start();
if (!isset($_SESSION['is_admin']) || $_SESSION['is_admin'] != 1) {
header('Location: ../../login.php');
die();
}
$message = null;
$messageClass = 'alert-warning';
$showMessage = false;
if (
isset($_POST['username']) && isset($_POST['password']) &&
!empty($_POST['username']) && !empty($_POST['password'])
) {
$username = trim($_POST['username']);
$password = $_POST['password'];
$is_admin = isset($_POST['is_admin']) ? 1 : 0;
$fullname = trim($_POST['fullname'] ?? '');
$email = trim($_POST['email'] ?? '');
$phone = trim($_POST['phone'] ?? '');
// Validera indata innan vi fortsätter
$errors = [];
if (strlen($password) < 4) {
$errors[] = "Lösenordet måste vara minst 4 tecken.";
}
if (!empty($email) && !filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = "Ogiltig e-postadress.";
}
if (empty($errors)) {
include('../../dbconnection.php');
if (!$dbconn) {
die("Connection failed: Can't connect to database.");
}
try {
// Kontrollera om användarnamnet redan är taget
$checkStmt = $dbconn->prepare("SELECT user_id FROM users WHERE username = ?");
$checkStmt->execute([$username]);
if ($checkStmt->fetch()) {
$errors[] = "Användarnamnet är redan taget.";
} else {
$passwordHash = password_hash($password, PASSWORD_DEFAULT);
$sql = "INSERT INTO users (username, password, is_admin, fullname, email, phone) VALUES (?, ?, ?, ?, ?, ?)";
$stmt = $dbconn->prepare($sql);
$stmt->execute([$username, $passwordHash, $is_admin, $fullname, $email, $phone]);
$lastId = $dbconn->lastInsertId();
$messageClass = 'alert-success';
$message = "Användare skapad! ID: " . (int)$lastId;
}
} catch (PDOException $e) {
// Logga det riktiga felet men visa ett generiskt meddelande för användaren
error_log("adduser error: " . $e->getMessage());
$messageClass = 'alert-error';
$message = "Ett databasfel uppstod. Försök igen senare.";
}
$dbconn = null;
}
if (!empty($errors)) {
$messageClass = 'alert-error';
$message = implode(' ', $errors);
}
$showMessage = true;
}
include('../../includes/header.php');
?>
<div class="page-header">
<div class="page-header-text">
<h1>Skapa Användare</h1>
<p>Lägg till ett nytt användarkonto.</p>
</div>
</div>
<?php if ($showMessage && $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">person_add</span>Användaruppgifter</h2>
<form method="post" action="">
<table>
<tr>
<td>Användarnamn *</td>
<td class="input-wrapper">
<input type="text" name="username" maxlength="32" required placeholder="Användarnamn">
<span class="char-count">32</span>
</td>
</tr>
<tr>
<td>Lösenord *</td>
<td class="input-wrapper">
<input type="password" name="password" maxlength="32" required placeholder="Lösenord">
<span class="char-count">32</span>
</td>
</tr>
<tr>
<td>Fullständigt namn</td>
<td class="input-wrapper">
<input type="text" name="fullname" maxlength="64" placeholder="Förnamn Efternamn">
<span class="char-count">64</span>
</td>
</tr>
<tr>
<td>E-Post</td>
<td class="input-wrapper">
<input type="email" name="email" maxlength="64" placeholder="namn@exempel.se">
<span class="char-count">64</span>
</td>
</tr>
<tr>
<td>Telefon</td>
<td class="input-wrapper">
<input type="tel" name="phone" maxlength="20" placeholder="+46 70 123 45 78">
<span class="char-count">20</span>
</td>
</tr>
<tr>
<td>Admin</td>
<td><input type="checkbox" name="is_admin"></td>
</tr>
<tr>
<td class="meta">* = Obligatoriskt</td>
<td>
<button type="submit" class="btn btn-success">
<span class="material-symbols-rounded">person_add</span>
Skapa
</button>
</td>
</tr>
</table>
</form>
</div>
<?php include('../../includes/footer.php'); ?>