Källkodsbrowser

login.php

40 lines UTF-8 Unix (LF)
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
<?php
session_start
(); // Starta sessionen

$username trim($_POST['username'] ?? '');
$password trim($_POST['password'] ?? '');
require 
'db_connect.php';

$validUser false;

try {
    
$stmt $pdo->prepare("SELECT password, role FROM users WHERE username = ?");
    
$stmt->execute([$username]);
    
$user $stmt->fetch();

    if (
$user && password_verify($password$user['password'])) {
        
// Om användaren hittas och lösenordet matchar
        
$validUser true;
        
$role $user['role'];
        
$_SESSION['logged_in'] = true;
        
$_SESSION['username'] = $username;
        
$_SESSION['role'] = $user['role'];

        
// Skicka användaren till rätt sida beroende på roll
        
if ($user['role'] === "admin")
            
header("Location: admin.php");
        else
            
header("Location: user.php");
        exit();
    }
} catch (
\PDOException $e) {
    
// Hantera databasfel
    
error_log("Database error in login: " $e->getMessage());
    
header("Location: index.php?msg=Ett fel uppstod vid inloggning.");
    exit();
}

// Om användaren inte finns, skicka tillbaka med felmeddelande
if (!$validUser)
    
header("Location: index.php?msg=Fel användarnamn eller lösenord!");
exit();