Visa Källkod

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

NamnTypStorlek
actions.phpPHP Fil7.9 KB
admin.phpPHP Fil13.7 KB
auth.phpPHP Fil4.5 KB
change_password.phpPHP Fil4.1 KB
check_login.phpPHP Fil911 B
index.phpPHP Fil4 KB
json_store.phpPHP Fil2.1 KB
transactions.jsonJSON Fil4.6 KB
users.jsonJSON Fil1.5 KB

auth.php

145 lines UTF-8 Windows (CRLF) - Type: PHP Fil
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<?php
session_start
();
// Tidszon
if (function_exists('date_default_timezone_set')) {
    @
date_default_timezone_set('Europe/Stockholm');
}
require_once 
'json_store.php';

// Vilken åtgärd? (register|login|logout|delete)
$action $_GET['action'] ?? '';

switch (
$action) {
    case 
'register':
        
// Registrera ny användare och ge 1000 kr i startsaldo på deras 'Huvudkonto'
        
$username trim($_POST['username'] ?? '');
        
$password $_POST['password'] ?? '';

        
// Validering: båda fält måste vara ifyllda
        
if (empty($username) || empty($password)) {
            
header("Location: index.php?error=empty");
            exit;
        }

        
// Kontrollera att användarnamn inte redan finns
        
$users load_users();
        foreach (
$users as $u) {
            if (isset(
$u['username']) && $u['username'] === $username) {
                
header("Location: index.php?error=exists");
                exit;
            }
        }

        
// Spara ny användare med hashat lösenord
        
$passwordHash password_hash($passwordPASSWORD_BCRYPT);
        
$users[] = [
            
'username' => $username,
            
'password' => $passwordHash,
            
'role' => 'user'
        
];
        if (!
save_users($users)) {
            
header("Location: index.php?error=unknown");
            exit;
        }

        
// Skapa transaktion för startsaldo (beräkna saldo från transaktioner)
        
append_transaction([
            
'username' => $username,
            
'account' => 'Huvudkonto',
            
'amount' => 1000,
            
'type' => 'deposit',
            
'date' => now_str()
        ]);

        
header("Location: index.php?success=registered");
        exit;

    case 
'login':
        
// Logga in befintlig konto
        
$username trim($_POST['username'] ?? '');
        
$password $_POST['password'] ?? '';
        
$remember = isset($_POST['remember']);

        
// Kontroller att lösenord & användnamn är ifyllda och inte tom
        
if (empty($username) || empty($password)) {
            
header("Location: index.php?error=invalid");
            exit;
        }
        
// Hämta användare och matcha namn
        
$users load_users();
        
$user null;
        foreach (
$users as $u) {
            if (isset(
$u['username']) && $u['username'] === $username) {
                
$user $u;
                break;
            }
        }
        
// Om användaren inte finns, skicka tillbaka till inloggning och stoppa koden
        
if (!$user) {
            
header("Location: index.php?error=invalid");
            exit;
        }

        
// Verifiera lösenordet mot hash
        
if (!password_verify($password$user['password'])) {
            
header("Location: index.php?error=invalid");
            exit;
        }

        
// Sätt cookie om "Håll mig inloggad" är valt
        
if ($remember) {
            
setcookie('username'$user['username'], time() + (60 60 24 3), '/');
        }

        
// Spara användardata i session
        
$_SESSION['username'] = $user['username'];
        
$_SESSION['role'] = $user['role'] ?? 'user';
        
$_SESSION['loggedin'] = true;

        
header("Location: admin.php");
        exit;

    case 
'logout':
        
// Logga ut
        
setcookie('username'''time() - 3600'/');
        
session_destroy();
        
header("Location: index.php");
        exit;

    case 
'delete':
        
// Radera användare och transaktioner
        // Hämta användarnamn; om saknas, omdirigera
        
$uname $_SESSION['username'] ?? null;
        if (!
$uname) {
            
header("Location: index.php");
            exit;
        }

        
// Ta bort användare ur users.json
        
$users load_users();
        
$users array_values(array_filter($users, function ($u) use ($uname) {
            return (
$u['username'] ?? null) !== $uname;
        }));
        
save_users($users);

        
// Ta bort användarens transaktioner
        
$txs load_transactions();
        
$txs array_values(array_filter($txs, function ($t) use ($uname) {
            return (
$t['username'] ?? null) !== $uname;
        }));
        
save_transactions($txs);

        
// Ta bort cookie
        
setcookie('username'''time() - 3600'/');
        
        
// Avsluta session och omdirigera med bekräftelse
        
session_destroy();
        
header("Location: index.php?success=deleted");
        exit;

    default:
        
header("Location: index.php");
        exit;
}

?>