Programmiersprache – die besten Beiträge

Ist mein Ansatz sicher genug gegen SQL-Injection und andere Angriffe, oder sollte ich zusätzliche Sicherheitsmaßnahmen ergreifen?

<?php
session_start();
include('connection.php');



if (!isset($_SESSION['username'])) {
    die("Session abgelaufen. Bitte loggen Sie sich erneut ein.");
}


$username_input = $_SESSION['username']; 


// SQL-Abfrage abhängig davon, ob der Benutzer Trainer ist
if ($_SESSION["Trainer"] == false) {
    $sql = "
        SELECT 
            u.username,
            k.kursbezeichnung,
            i.nachname AS trainer_name,
            d.path,
            d.displayname
        FROM user u
        JOIN kurs k ON u.kurs_idkurs = k.idkurs
        JOIN internal_user i ON k.internal_user_idinternal = i.idinternal
        JOIN dokumente d ON d.kurs_idkurs = k.idkurs
        WHERE u.username = ?
    ";
} else {
    $sql = "
        SELECT 
            u.username,
            k.kursbezeichnung,
            i.nachname AS trainer_name,
            d.path,
            d.displayname
        FROM internal_user u
        JOIN kurs k ON u.idinternal = k.internal_user_idinternal
        JOIN internal_user i ON k.internal_user_idinternal = i.idinternal
        JOIN dokumente d ON d.kurs_idkurs = k.idkurs
        WHERE u.username = ?
    ";
}



if ($stmt = mysqli_prepare($conn, $sql)) {
    
    mysqli_stmt_bind_param($stmt, "s", $username_input);


    if (mysqli_stmt_execute($stmt)) {
        
        mysqli_stmt_store_result($stmt);


       
        mysqli_stmt_bind_result($stmt, $username, $kursbezeichnung, $trainer_name, $path, $displayname);


       
        $documents = [];
        $course_name = null;


       
        while (mysqli_stmt_fetch($stmt)) {
            $course_name = $kursbezeichnung; 
            $documents[] = [
                'trainer_name' => $trainer_name,
                'path' => $path,
                'displayname' => $displayname
            ];
        }
    } else {
        die("Fehler bei der Abfrageausführung: " . mysqli_error($conn));
    }


    
    mysqli_stmt_close($stmt);
} else {
    die("Fehler bei der Abfragevorbereitung: " . mysqli_error($conn));
}
?>


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Kursübersicht</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f4f4f9;
            margin: 0;
            padding: 20px;
            text-align: center;
        }


        .course-container {
            margin-top: 20px;
        }


        h1 {
            font-size: 2em;
            color: #2c3e50;
        }


        h2 {
            font-size: 1.5em;
            color: #2980b9;
        }


        h3 {
            font-size: 1.2em;
            color: #7f8c8d;
        }


        .document-list {
            list-style-type: none;
            padding: 0;
        }


        .document-list li {
            margin-bottom: 10px;
        }


        .document-list li a {
            text-decoration: none;
            color: #3498db;
            font-weight: bold;
        }


        .document-list li a:hover {
            color: #e74c3c;
        }
    </style>
</head>
<body>
    <h1>Willkommen, <?= htmlspecialchars($_SESSION['vorname'] ?? 'Nutzer') ?>!</h1>


    <?php if ($course_name): ?>
        <div class="course-container">
            <h2>Kurs: <?= htmlspecialchars($course_name) ?></h2>
            <h3>Trainer: <?= htmlspecialchars($documents[0]['trainer_name']) ?></h3>
            <h3>Dokumente für diesen Kurs:</h3>
            <ul class="document-list">
                <?php foreach ($documents as $doc): ?>
                    <li><a href="<?= htmlspecialchars($doc['path']) ?>" download><?= htmlspecialchars($doc['displayname']) ?></a></li>
                <?php endforeach; ?>
            </ul>
        </div>
    <?php else: ?>
        <p>Keine Dokumente für den Benutzer gefunden.</p>
    <?php endif; ?>
</body>
</html>


Kurs, Programmiersprache

Meistgelesene Beiträge zum Thema Programmiersprache