Show sourcecode

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

webbsrvprg1/exercises/ovning7/uppgift5/

index.php

index.php

411 lines UTF-8 Windows (CRLF)
<?php
    session_start
();

    
$rattPassword = "grahn";

    
$svar = [
        
"1" => "A",
        
"2" => "C",
        
"3" => "A"
    
];

    
$fragor = [
        
"1" => [
            
"text" => "Vad heter Kelvin?",
            
"alternativ" => [
                
"A" => "Kelvin Göran Hentze",
                
"B" => "Kevin Thomas Header",
                
"C" => "Kelvin Lilja Hentze",
                
"D" => "Kelvin Smirre Hentze"
            
]
        ],
        
"2" => [
            
"text" => "Vad heter Mathias?",
            
"alternativ" => [
                
"A" => "Thomas the train",
                
"B" => "Mathias Kelvin Grahn",
                
"C" => "Mathias Thomas Grahn",
                
"D" => "Mattias Choo Choo"
            
]
        ],
        
"3" => [
            
"text" => "Vad heter chatten?",
            
"alternativ" => [
                
"A" => "Kelvin",
                
"B" => "Chatten",
                
"C" => "ChatGPT",
                
"D" => "Choo Choo"
            
]
        ]
    ];

    if (isset(
$_GET["starta"])) {
        
session_unset();
        
session_destroy();

        
header("Location: " . strtok($_SERVER["REQUEST_URI"], "?"));
        exit;
    }

    if (!isset(
$_SESSION["steg"])) {
        
$_SESSION["steg"] = 0;
    }

    if (
$_SERVER["REQUEST_METHOD"] == "POST") {
        
$steg = $_SESSION["steg"];

        if (
$steg == 0 && isset($_POST["logga_in"])) {
            
$password = $_POST["password"] ?? "";

            if (
$password === $rattPassword) {
                
$_SESSION["steg"] = 1;

                
header("Location: " . strtok($_SERVER["REQUEST_URI"], "?"));
                exit;
            } else {
                
$felLosenord = true;
            }
        }

        elseif (
$steg == 1 && isset($_POST["nasta"])) {
            
$_SESSION["namn"] = $_POST["namn"] ?? "";
            
$_SESSION["mail"] = $_POST["mail"] ?? "";

            
$_SESSION["steg"] = 2;

            
header("Location: " . strtok($_SERVER["REQUEST_URI"], "?"));
            exit;
        }

        elseif (
            (
$steg == 2 || $steg == 3) &&
            isset(
$_POST["nasta"])
        ) {
            
$nummer = $steg - 1;

            
$_SESSION["fraga$nummer"] =
                
$_POST["fraga$nummer"] ?? null;

            
$_SESSION["steg"]++;

            
header("Location: " . strtok($_SERVER["REQUEST_URI"], "?"));
            exit;
        }

        elseif (
$steg == 4 && isset($_POST["skicka"])) {
            
$_SESSION["fraga3"] = $_POST["fraga3"] ?? null;

            
$points = 0;

            foreach (
$svar as $nummer => $ratt_svar) {
                if (
                    (
$_SESSION["fraga$nummer"] ?? null)
                    === 
$ratt_svar
                
) {
                    
$points++;
                }
            }

            
$namn = $_SESSION["namn"] ?? "";
            
$mail = $_SESSION["mail"] ?? "";
            
$amount = count($svar);

            
$till = $mail ?: "alewil25@varmdogymnasium.se";

            
$meddelande =
                
"$namn\n\nGrattis du fick $points av $amount poäng";

            
$amne = "Quiz";

            
$headers = "From: webb@noreply.se\r\n";
            
$headers .= "Reply-To: webb@noreply.se\r\n";
            
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";

            
$mejlSkickat = mail(
                
$till,
                
$amne,
                
$meddelande,
                
$headers
            
);

            
$_SESSION["resultat"] = [
                
"namn" => $namn,
                
"points" => $points,
                
"amount" => $amount,
                
"mejlSkickat" => $mejlSkickat
            
];

            
$_SESSION["steg"] = 5;

            
header("Location: " . strtok($_SERVER["REQUEST_URI"], "?"));
            exit;
        }
    }
?>

<!DOCTYPE html>
<html lang="sv">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Quiz</title>

    <style>
        body {
            font-family: Arial, sans-serif;
            max-width: 700px;
            padding: 0 20px;
        }

        .alternativ {
            display: block;
            padding: 10px;
            margin: 5px 0;
            border-radius: 5px;
        }

        .korrekt {
            background-color: #c8f7c5;
            color: #155724;
        }

        .fel {
            background-color: #f7c5c5;
            color: #721c24;
        }

        button {
            padding: 8px 14px;
            cursor: pointer;
        }
    </style>
</head>

<body>

<?php if ($_SESSION["steg"] == 0): ?>

    <h2>Logga in till quizet</h2>

    <form method="post">
        <p>Lösenord</p>

        <input
            type="password"
            name="password"
            required
        >

        <br><br>

        <button type="submit" name="logga_in">
            Logga in
        </button>
    </form>

    <?php if (!empty($felLosenord)): ?>
        <p style="color: red;">
            Fel lösenord. Försök igen.
        </p>
    <?php endif; ?>

<?php elseif ($_SESSION["steg"] == 1): ?>

    <h2>Välkommen till quizet</h2>

    <form method="post">
        <p>Namn</p>

        <input
            type="text"
            name="namn"
            required
        >

        <p>Mail (valfritt)</p>

        <input
            type="email"
            name="mail"
        >

        <br><br>

        <button type="submit" name="nasta">
            Börja quiz
        </button>
    </form>

<?php elseif ($_SESSION["steg"] == 2): ?>

    <form method="post">
        <p>1. Vad heter Kelvin?</p>

        <label>
            <input type="radio" name="fraga1" value="A" required>
            Kelvin Göran Hentze
        </label><br>

        <label>
            <input type="radio" name="fraga1" value="B">
            Kevin Thomas Header
        </label><br>

        <label>
            <input type="radio" name="fraga1" value="C">
            Kelvin Lilja Hentze
        </label><br>

        <label>
            <input type="radio" name="fraga1" value="D">
            Kelvin Smirre Hentze
        </label><br><br>

        <button type="submit" name="nasta">
            Nästa
        </button>
    </form>

<?php elseif ($_SESSION["steg"] == 3): ?>

    <form method="post">
        <p>2. Vad heter Mathias?</p>

        <label>
            <input type="radio" name="fraga2" value="A" required>
            Thomas the train
        </label><br>

        <label>
            <input type="radio" name="fraga2" value="B">
            Mathias Kelvin Grahn
        </label><br>

        <label>
            <input type="radio" name="fraga2" value="C">
            Mathias Thomas Grahn
        </label><br>

        <label>
            <input type="radio" name="fraga2" value="D">
            Mattias Choo Choo
        </label><br><br>

        <button type="submit" name="nasta">
            Nästa
        </button>
    </form>

<?php elseif ($_SESSION["steg"] == 4): ?>

    <form method="post">
        <p>3. Vad heter chatten?</p>

        <label>
            <input type="radio" name="fraga3" value="A" required>
            Kelvin
        </label><br>

        <label>
            <input type="radio" name="fraga3" value="B">
            Chatten
        </label><br>

        <label>
            <input type="radio" name="fraga3" value="C">
            ChatGPT
        </label><br>

        <label>
            <input type="radio" name="fraga3" value="D">
            Choo Choo
        </label><br><br>

        <button type="submit" name="skicka">
            Skicka quiz
        </button>
    </form>

<?php elseif ($_SESSION["steg"] == 5): ?>

    <h2>Quiz klart!</h2>

    <p>
        Namn:
        <?= htmlspecialchars(
            
$_SESSION["resultat"]["namn"],
            
ENT_QUOTES,
            
"UTF-8"
        
) ?>
    </p>

    <p>
        Poäng:
        <?= $_SESSION["resultat"]["points"] ?>
        av
        <?= $_SESSION["resultat"]["amount"] ?>
    </p>

    <?php if ($_SESSION["resultat"]["mejlSkickat"]): ?>
        <p style="color: green;">
            Mejlet skickades utan problem!
        </p>
    <?php else: ?>
        <p style="color: red;">
            Kunde inte skicka mejlet.
        </p>
    <?php endif; ?>

    <hr>

    <h2>Genomgång av dina svar</h2>

    <?php foreach ($fragor as $nummer => $fraga): ?>

        <h3>
            <?= $nummer ?>.
            <?= htmlspecialchars($fraga["text"], ENT_QUOTES, "UTF-8") ?>
        </h3>

        <?php
        $egetSvar 
= $_SESSION["fraga$nummer"] ?? null;
        
$rattSvar = $svar[$nummer];
        
?>

        <?php foreach ($fraga["alternativ"] as $bokstav => $text): ?>

            <?php
            $klass 
= "";

            if (
$bokstav === $rattSvar) {
                
$klass = "korrekt";
            } elseif (
$bokstav === $egetSvar) {
                
$klass = "fel";
            }
            
?>

            <div class="alternativ <?= $klass ?>">
                <?= $bokstav ?>.
                <?= htmlspecialchars($text, ENT_QUOTES, "UTF-8") ?>

                <?php if ($bokstav === $rattSvar): ?>
                    - Rätt svar
                <?php elseif ($bokstav === $egetSvar): ?>
                    - Ditt svar
                <?php endif; ?>
            </div>

        <?php endforeach; ?>

    <?php endforeach; ?>

    <br>

    <a href="?starta=1">Starta ett nytt quiz</a>

<?php endif; ?>

</body>
</html>