Webbserverprogrammering 1

Show sourcecode

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

webbsrvprg/projekt/quiz/

account.php
admin_register.php
create_quiz.php
create_tables.php
index.php
login.php
nav.css
nav.php
quiz.php
quiz_select.php
register.php
result_details.php
result_simple.php
submit_create_quiz.php
submit_quiz.php

submit_create_quiz.php

82 lines UTF-8 Windows (CRLF)
<?php
session_start
();
include(
'../../incl/dbconnect.php');

// Kontrollera om användaren är inloggad och om de är administratör
if (!isset($_SESSION['user_id'])) {
    die(
"Åtkomst nekad du måste vara inloggad.");
}
$user_id $_SESSION['user_id'];
$stmt $dbconn->prepare("SELECT is_admin FROM users_quiz WHERE id = ?");
$stmt->execute([$user_id]);
$is_admin $stmt->fetchColumn();
if (!
$is_admin) {
    die(
"Åtkomst nekad bara för administratörer");
}

if (
$_SERVER["REQUEST_METHOD"] == "POST") {
    
// Använd 'titel' eftersom formuläret skickar fältet med detta namn
    
$quiz_title = isset($_POST['titel']) ? trim($_POST['titel']) : '';
    if (empty(
$quiz_title)) {
        die(
"Quiz-titeln får inte vara tom");
    }
    
    
// Hämta beskrivningen om den finns
    
$beskrivning = isset($_POST['beskrivning']) ? trim($_POST['beskrivning']) : '';

    try {
        
// Lägg in testinformationen i testinfo_quiz-tabellen
        
$stmt $dbconn->prepare("INSERT INTO testinfo_quiz (titel, beskrivning) VALUES (:titel, :beskrivning)");
        
$stmt->execute([':titel' => $quiz_title':beskrivning' => $beskrivning]);
        
$quiz_id $dbconn->lastInsertId();

        
// Kontrollera att vi fått in frågor
        
if (!isset($_POST['fraga_text']) || !is_array($_POST['fraga_text'])) {
            die(
"Frågetext saknas.");
        }

        
// Loopar igenom de 5 frågorna
        
foreach ($_POST['fraga_text'] as $i => $question_text) {
            
$question_text trim($question_text);
            if (empty(
$question_text)) {
                die(
"Fråga $i får inte vara tom");
            }
            
// Lägg till frågan i questions_quiz-tabellen
            
$stmt $dbconn->prepare("INSERT INTO questions_quiz (test_id, fråga_text) VALUES (:quiz_id, :question_text)");
            
$stmt->execute([':quiz_id' => $quiz_id':question_text' => $question_text]);
            
$question_id $dbconn->lastInsertId();

            
// Kontrollera att svarsalternativen finns för denna fråga
            
if (!isset($_POST['svar_text'][$i]) || !is_array($_POST['svar_text'][$i])) {
                die(
"Svar saknas för fråga $i.");
            }
            if (!isset(
$_POST['korrekt'][$i])) {
                die(
"Välj vilket svar som är korrekt för fråga $i");
            }
            
$correct_choice $_POST['korrekt'][$i];

            
// Loopar igenom de 3 svarsalternativen för denna fråga
            
foreach ($_POST['svar_text'][$i] as $choice => $answer_text) {
                
$answer_text trim($answer_text);
                if (empty(
$answer_text)) {
                    die(
"Svarsalternativet får inte vara tomt för fråga $i, alternativ $choice.");
                }
                
$is_correct = ($choice == $correct_choice) ? 0;
                
$stmt $dbconn->prepare("INSERT INTO answers_quiz (fråga_id, svar_text, korrekt) VALUES (:question_id, :answer_text, :is_correct)");
                
$stmt->execute([':question_id' => $question_id':answer_text' => $answer_text':is_correct' => $is_correct]);
            }
        }

        echo 
"Quiz har skapats<br>";
        echo 
"<a href='create_quiz.php'>Skapa ett till quiz</a><br><br>";
        
        echo 
"<a href='quiz_select.php'>Spela ett quiz</a>";

    } catch (
PDOException $e) {
        die(
"Fel vid skapande av quiz " $e->getMessage());
    }
} else {
    die(
"Ogiltig begäran");
}
?>