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)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
<!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>