Webbserverprogrammering 1

Show sourcecode

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

webbsrvprg/exercises/inlamning_1/

index.php
uppgifter1-3.php
uppgifter4-6.php

uppgifter4-6.php

144 lines UTF-8 Windows (CRLF)
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Frågor</title>
</head>

<body>
    <?php
    $q1 
= [
        
"question" => "Vad heter Harry?",
        
"alts" => ["Harry", "Något annat", "Göran", "Hemligt"],
        
"correct" => 0,
    ];
    
$q2 = [
        
"question" => "1 + 2?",
        
"alts" => ["1", "2", "3", "4"],
        
"correct" => 2,
    ];
    
$q3 = [
        
"question" => "Korvstroganof?",
        
"alts" => ["Kanske det", "Absolut inte", "Kanske inte det", "Absolut"],
        
"correct" => 3,
    ];
    
$q4 = [
        
"question" => "Vilke är den tionde bokstaven i alfabetet?",
        
"alts" => ["H", "I", "J", "Ö"],
        
"correct" => 2,
    ];

    
$questions = [$q1, $q2, $q3, $q4];
    
$correct_pswrd = "hej"; // Här defineras lösenordet
    
$currentQuestion = 0;
    
$prev_answers = "";
    if (isset(
$_GET["current"])) {
        
$currentQuestion = intval($_GET["current"]);
        
$newAns = ""; // Byter ut alla mellanslag mot _ så att man kan använda mellanslag för att skilja på olika svar

        
if (isset($_GET["name"])) {
            
// Då är det första formulärsidan och hanteras speciellt
            
$name = htmlspecialchars(str_replace(' ', '_', $_GET["name"]));
            
$mail = $_GET["mail"];
            
$newAns = $name . " " . $mail;
        } else {
            
$newAns = $_GET["ans"];
        }
        
$prev_answers = $_GET["prevAnswers"] . " " . $newAns; // Lägger på alla tidigare insamlade svar med den nya
    
}

    echo (
'<form style="margin: 100px 35vw;" method="get">');
    if (!isset(
$_GET["pswrd"]) || $_GET["pswrd"] != $correct_pswrd) { // Om lösenordet inte är inskrivet eller fel
        
if (isset($_GET["pswrd"])) {
            echo (
"Du skrev fel lösenord");
            
$prev_answers = ""; // Tömmer så att man inte får dubbla värden
            
$currentQuestion = 0;
            
// Om man skickas hit pga fel lösenord så måste currentQuestion återställas
        
}

        echo (
'<input type="text" name="name" id="name" placeholder="Harry" required><label for="name">Skriv ditt namn</label><br><br>');
        echo (
'<input type="mail" name="mail" id="mail" placeholder="harmol23@varmdogymnasium.se" required><label for="mail">Skriv din mejl</label><br><br>');
        echo (
'<input type="password" name="pswrd" id="pswrd" required><label for="pswrd">Skriv lösenordet (det är "hej")</label><br><br>');
    } else if (
$currentQuestion <= count($questions)) {
        
// Lägger ut den frågan som det är dags för
        
$qDict = $questions[$currentQuestion - 1];
        echo (
'<fieldset><legend>' . $qDict["question"] . '</legend>');
        for (
$i = 0; $i < count($qDict["alts"]); $i += 1) {
            
$alt = $qDict["alts"][$i];
            echo (
'<input type="radio" name="ans" value="' . $i . '" id="q' . $currentQuestion . '_' . $i . '" required><label for="q' . $currentQuestion . '_' . $i . '">' . $alt . '</label><br><br>');
        }
        echo (
'</fieldset>');
    } else {
        
$prev_answers_arr = array_slice(explode(" ", $prev_answers), 1); // Gav ett tomt i starten av nån anledning. Tar även bort lösenordet
        
$name = htmlspecialchars(str_replace("_", " ", $prev_answers_arr[0])); // Tar ut namnet och lägger på mellanslaget igen
        
$mail = $prev_answers_arr[1];
        
$q_answers = array_slice($prev_answers_arr, 2);
        
$num_of_correct = 0;

        for (
$i = 0; $i < count($questions); $i++) {
            if (
$questions[$i]["correct"] == $q_answers[$i]) {
                
$num_of_correct += 1;
            }
        }
        
$message = "Du heter $name och du har $num_of_correct rätta svar";
        echo (
$message . "<br>");


        for (
$i = 0; $i < count($questions); $i++) {
            
// Printar ut frågor, vad man svarat och vilket svar som var korrekt. Mejlar inte detta
            
$question = $questions[$i];
            
$user_ans = $q_answers[$i];

            echo (
"<br><br><br><b>" . $question["question"] . "</b><br><br>"); // Printar ut frågan

            
for ($j = 0; $j < count($question["alts"]); $j++) {

                echo (
$question["alts"][$j]); // Visar alternativ j

                
if ($j == $user_ans) {
                    
// Om användaren valde j så skrivs det
                    
echo ("<i> => Ditt svar</i> ");

                    if (
$j == $question["correct"]) {
                        
// Om j ÄVEN var korrekt
                        
echo ("<i>(korrekt)</i>");
                    }

                } else if (
$j == $question["correct"]) {
                    
// Om j var korrekt men användaren EJ valde det.
                    
echo ("<i> => Korrekt svar</i>");
                }

                echo (
"<br>");
            }
        }

        
$mail = str_replace(' ', '', $mail); // Tar bort mellanslag som råkat hamna där
        
mail($mail, "Fragor", $message);
    }


    if (
$currentQuestion <= count($questions)) {
        
// Lägger till gömda inputfälten
        
echo ('<input type="hidden" name="prevAnswers" value ="' . $prev_answers . '">');
        
$currentQuestion += 1;
        echo (
'<input type="hidden" name="current" value ="' . $currentQuestion . '">');
        if (
$currentQuestion != 1) {
            echo (
'<input type="hidden" name="pswrd" value ="' . $_GET["pswrd"] . '">');
            
// Om lösenordet redan skrivits någon gång så skrivs det här för att föras över till nästa steg
        
}

        
// Lägger ut submiten
        
if ($currentQuestion >= count($questions)) {
            echo (
'<button type="submit">Skicka in</button>');
        } else {
            echo (
'<button type="submit">Nästa</button>');
        }
    }
    
?>
    </form>
</body>

</html>