Webbserverprogrammering 1

Show sourcecode

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

webbsrvprg/exercises/quiz/

create_test.php
create_test_fuckingtrasig.php
hash.php
index.php
login.php
main.php
personal_results.php
setup.php
sign_up.php
test_correcting.php
tests.php
user_administration.php
verification.php

tests.php

73 lines UTF-8 Windows (CRLF)
<?php
session_start
(["gc_maxlifetime" => 86400]);
?>
<!DOCTYPE html>
<html lang="sv">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Test</title>
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<style>
    fieldset{
        border: 2px solid black;
        margin: 1px;
    }
</style>
<body>
    <form method="POST" action="test_correcting.php">
    <?php

    $test_id 
$_GET["id"]; // ID't ska ha skickats med i GET, annars har användaren fifflat på något sätt och får hantera felmeddelandet själv
    
echo('<input type="hidden" name="test_id" value="' $test_id .'">'); // Så att man vet vilket test det är.
        
try {
            
/** @var PDO $dbconn */
            
include("../databaser/dbconnection.php");
            include(
"verification.php");

            
// Hittar testets namn. Väjer att inte använda JOIN för att hämta frågor och svar.
            
$sql "SELECT name FROM quiz_tests WHERE id=?";
            
$stmt $dbconn->prepare($sql);
            
$data = [$test_id]; 
            
$stmt->execute($data);
            
$test_name $stmt->fetch(PDO::FETCH_ASSOC)["name"]; // Plockar ut namnet
            
echo("<h1> $test_name</h1>");

            
$sql "SELECT * FROM quiz_questions WHERE test_id = ? ORDER BY id"// Sorterar ALLTID frågor efter id
            
$stmt $dbconn->prepare($sql);
            
$data = [$test_id]; // Repeterar för tydlighet
            
$stmt->execute($data);

            
$question_num 1// För namnen på inputsen. Börjar på 1.

            
while ($question $stmt->fetch(PDO::FETCH_ASSOC)){
                
$sql "SELECT * FROM quiz_answers WHERE question_id = ?";
                
$answers_stmt $dbconn->prepare($sql); // Annan för att inte sabba loopen
                
$data = [$question["id"]];
                
$answers_stmt->execute($data);
                echo(
'<fieldset><legend>' $question["text"] . '</legend>');

                
// Namnet på varje fråga är question_num.
                
while ($answer $answers_stmt->fetch(PDO::FETCH_ASSOC)){
                    
$answer_num $answer["answer_num"];
                    
$answer_text $answer["text"];
                    
$id $question_num "_" $answer_num;
                    echo(
'<input type="radio" name="' $question_num '" value =' $answer_num ' id = '$id ' required><label for="' $id '">' $answer_text '</label><br>');
                }

                
$question_num += 1;

                echo(
'</fieldset>');
            }



        } catch(
PDOException $e){
            echo(
$e->getMessage());
        }
    
?>
    <button type="submit">Rätta</button>
    </form>
</body>
</html>