Show sourcecode
The following files exists in this folder. Click to view.
db-test.php
ovn_form1.php
ovn_form2.php
ovn_form3.php
ovn_form4.php
ovn_form5.php
ovn_form6.php
ovn_form7.php
ovn_form8.php
ovn_fragetavling.php
ovn_funk1.php
ovn_funk2.php
ovn_funk3.php
ovn_funk4.php
ovn_funk5.php
ovn_funk6.php
ovn_gr1.php
ovn_gr2.php
ovn_gr3.php
ovn_gr4.php
ovn_gr5.php
svar/
tarningsduellen.php
ovn_fragetavling.php
202 lines UTF-8 Unix (LF)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
<?php
error_reporting(-1);
ini_set('display_errors', 1);
ini_set('output_buffering', 0);
session_start();
$rattLosenord = "Axelärbäst";
$fragor = [
1 => [
"fraga" => "Hur hämtar PHP värden från ett formulär som skickas med metoden POST?",
"alternativ" => ["a" => '$_GET', "b" => '$_POST', "c" => '$_SERVER', "d" => '$_SESSION'],
"ratt" => "b"
],
2 => [
"fraga" => "Vilken funktion används för att visa användarens text säkert i HTML?",
"alternativ" => ["a" => "mail()", "b" => "include()", "c" => "htmlspecialchars()", "d" => "strlen()"],
"ratt" => "c"
],
3 => [
"fraga" => "Vilken formulärmetod skickar vanligtvis värdena i förfrågans innehåll i stället för i webbadressen?",
"alternativ" => ["a" => "GET", "b" => "POST", "c" => "LINK", "d" => "HTML"],
"ratt" => "b"
]
];
$felLosenord = false;
$fel = "";
$namn = isset($_POST["namn"]) && is_string($_POST["namn"]) ? trim($_POST["namn"]) : "";
$epost = isset($_POST["epost"]) && is_string($_POST["epost"]) ? trim($_POST["epost"]) : "";
$svar = [
1 => isset($_POST["svar1"]) && is_string($_POST["svar1"]) ? $_POST["svar1"] : "",
2 => isset($_POST["svar2"]) && is_string($_POST["svar2"]) ? $_POST["svar2"] : "",
3 => isset($_POST["svar3"]) && is_string($_POST["svar3"]) ? $_POST["svar3"] : ""
];
if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST["losenord"])) {
if (is_string($_POST["losenord"]) && $_POST["losenord"] === $rattLosenord) {
$_SESSION["fragetavling_inloggad"] = true;
} else {
$felLosenord = true;
}
}
$inloggad = isset($_SESSION["fragetavling_inloggad"]) && $_SESSION["fragetavling_inloggad"] === true;
$steg = 1;
$visaResultat = false;
$mejlSkickat = false;
$antalRatt = 0;
$skickat = $_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST["skicka"]);
if ($inloggad && $skickat) {
if ($namn === "" || !filter_var($epost, FILTER_VALIDATE_EMAIL)) {
$fel = "Namn eller e-postadress saknas eller är ogiltig.";
} else {
foreach ($fragor as $nummer => $fraga) {
if (!array_key_exists($svar[$nummer], $fraga["alternativ"])) {
$fel = "Ett eller flera svar saknas. Börja om och svara på alla frågor.";
break;
}
if ($svar[$nummer] === $fraga["ratt"]) {
$antalRatt++;
}
}
}
if ($fel === "") {
$visaResultat = true;
$meddelande = "Resultat for " . $namn . ": " . $antalRatt . " av 3 ratt.\n\n";
foreach ($fragor as $nummer => $fraga) {
$meddelande .= "Fraga " . $nummer . ": " . $fraga["alternativ"][$svar[$nummer]] . "\n";
}
$rubrik = "Quiz result";
$mejlhuvud = "From: " . $epost . "\r\nReply-To: " . $epost;
$mejlSkickat = mail($epost, $rubrik, $meddelande, $mejlhuvud);
}
} elseif ($inloggad && $_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST["nasta"])) {
$forraSteget = (int)($_POST["steg"] ?? 0);
if ($forraSteget === 1) {
if ($namn === "" || !filter_var($epost, FILTER_VALIDATE_EMAIL) || !array_key_exists($svar[1], $fragor[1]["alternativ"])) {
$fel = "Fyll i namn, en giltig e-postadress och ett svar på fråga 1.";
} else {
$steg = 2;
}
} elseif ($forraSteget === 2) {
if (!array_key_exists($svar[1], $fragor[1]["alternativ"]) || !array_key_exists($svar[2], $fragor[2]["alternativ"])) {
$steg = 2;
$fel = "Välj ett svar på fråga 2.";
} else {
$steg = 3;
}
}
}
?>
<!DOCTYPE html>
<html lang="sv">
<head>
<meta charset="UTF-8">
<title>Frågetävling</title>
</head>
<body>
<h1>Frågetävling om PHP</h1>
<?php if (!$inloggad): ?>
<p>Ange lösenordet för att öppna frågorna.</p>
<?php if ($felLosenord): ?>
<p>Fel lösenord. Försök igen.</p>
<?php endif; ?>
<form action="" method="POST">
<p>
<label for="losenord">Lösenord:</label>
<input type="password" id="losenord" name="losenord" required>
</p>
<button type="submit">Öppna frågorna</button>
</form>
<?php elseif ($visaResultat): ?>
<p><?= htmlspecialchars($namn, ENT_QUOTES, "UTF-8") ?> fick <?= $antalRatt ?> av 3 rätt.</p>
<?php if ($mejlSkickat): ?>
<p>Resultatet skickades till <?= htmlspecialchars($epost, ENT_QUOTES, "UTF-8") ?>.</p>
<?php else: ?>
<p>Resultatet kunde inte skickas med e-post här. Prova på labbservern.</p>
<?php endif; ?>
<h2>Dina svar</h2>
<?php foreach ($fragor as $nummer => $fraga): ?>
<h3>Fråga <?= $nummer ?>: <?= htmlspecialchars($fraga["fraga"], ENT_QUOTES, "UTF-8") ?></h3>
<ul>
<?php foreach ($fraga["alternativ"] as $bokstav => $text): ?>
<li>
<span style="color: <?= $bokstav === $fraga["ratt"] ? "green" : ($bokstav === $svar[$nummer] ? "red" : "black") ?>;">
<?= htmlspecialchars($text, ENT_QUOTES, "UTF-8") ?>
</span>
<?php if ($bokstav === $fraga["ratt"]): ?> (rätt svar)<?php endif; ?>
<?php if ($bokstav === $svar[$nummer]): ?> (ditt svar)<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
<?php endforeach; ?>
<p><a href="">Gör frågetävlingen igen</a></p>
<?php elseif ($skickat): ?>
<p><?= htmlspecialchars($fel, ENT_QUOTES, "UTF-8") ?></p>
<p><a href="">Börja om frågetävlingen</a></p>
<?php else: ?>
<?php if ($fel !== ""): ?>
<p><?= htmlspecialchars($fel, ENT_QUOTES, "UTF-8") ?></p>
<?php endif; ?>
<?php if ($steg === 1): ?>
<h2>Fråga 1 av 3</h2>
<form action="" method="POST">
<input type="hidden" name="steg" value="1">
<p>
<label for="namn">Namn:</label>
<input type="text" id="namn" name="namn" value="<?= htmlspecialchars($namn, ENT_QUOTES, "UTF-8") ?>" required>
</p>
<p>
<label for="epost">E-postadress (använd din @varmdogymnasium.se-adress på labbservern):</label>
<input type="email" id="epost" name="epost" value="<?= htmlspecialchars($epost, ENT_QUOTES, "UTF-8") ?>" required>
</p>
<p>Hur hämtar PHP värden från ett formulär som skickas med metoden POST?</p>
<p><label><input type="radio" name="svar1" value="a" <?= $svar[1] === "a" ? "checked" : "" ?> required> $_GET</label></p>
<p><label><input type="radio" name="svar1" value="b" <?= $svar[1] === "b" ? "checked" : "" ?>> $_POST</label></p>
<p><label><input type="radio" name="svar1" value="c" <?= $svar[1] === "c" ? "checked" : "" ?>> $_SERVER</label></p>
<p><label><input type="radio" name="svar1" value="d" <?= $svar[1] === "d" ? "checked" : "" ?>> $_SESSION</label></p>
<button type="submit" name="nasta" value="1">Nästa fråga</button>
</form>
<?php elseif ($steg === 2): ?>
<h2>Fråga 2 av 3</h2>
<form action="" method="POST">
<input type="hidden" name="steg" value="2">
<input type="hidden" name="namn" value="<?= htmlspecialchars($namn, ENT_QUOTES, "UTF-8") ?>">
<input type="hidden" name="epost" value="<?= htmlspecialchars($epost, ENT_QUOTES, "UTF-8") ?>">
<input type="hidden" name="svar1" value="<?= htmlspecialchars($svar[1], ENT_QUOTES, "UTF-8") ?>">
<p>Vilken funktion används för att visa användarens text säkert i HTML?</p>
<p><label><input type="radio" name="svar2" value="a" <?= $svar[2] === "a" ? "checked" : "" ?> required> mail()</label></p>
<p><label><input type="radio" name="svar2" value="b" <?= $svar[2] === "b" ? "checked" : "" ?>> include()</label></p>
<p><label><input type="radio" name="svar2" value="c" <?= $svar[2] === "c" ? "checked" : "" ?>> htmlspecialchars()</label></p>
<p><label><input type="radio" name="svar2" value="d" <?= $svar[2] === "d" ? "checked" : "" ?>> strlen()</label></p>
<button type="submit" name="nasta" value="1">Nästa fråga</button>
</form>
<?php else: ?>
<h2>Fråga 3 av 3</h2>
<form action="" method="POST">
<input type="hidden" name="namn" value="<?= htmlspecialchars($namn, ENT_QUOTES, "UTF-8") ?>">
<input type="hidden" name="epost" value="<?= htmlspecialchars($epost, ENT_QUOTES, "UTF-8") ?>">
<input type="hidden" name="svar1" value="<?= htmlspecialchars($svar[1], ENT_QUOTES, "UTF-8") ?>">
<input type="hidden" name="svar2" value="<?= htmlspecialchars($svar[2], ENT_QUOTES, "UTF-8") ?>">
<p>Vilken formulärmetod skickar vanligtvis värdena i förfrågans innehåll i stället för i webbadressen?</p>
<p><label><input type="radio" name="svar3" value="a" required> GET</label></p>
<p><label><input type="radio" name="svar3" value="b"> POST</label></p>
<p><label><input type="radio" name="svar3" value="c"> LINK</label></p>
<p><label><input type="radio" name="svar3" value="d"> HTML</label></p>
<button type="submit" name="skicka" value="1">Skicka in svar</button>
</form>
<?php endif; ?>
<?php endif; ?>
<p><a href="../exercises.php">Tillbaka till Mina övningar</a></p>
</body>
</html>