Källkod
Följande filer och mappar finns under mappen webbserverprogrammering.
Mappar visas till vänster och filer till höger. Klicka på en fil eller mapp för att öppna nedan eller visa dess innehåll.
webbserverprogrammering/exercises/repetition/
4 filer
special_repetition.php
134 lines UTF-8 Windows (CRLF)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
<?php
error_reporting(-1); // Report all type of errors
ini_set('display_errors', 1); // Display all errors
ini_set('output_buffering', 0); // Do not buffer outputs, write directly
session_start();
if (!isset($_SESSION["guessRandNr"]) || empty($_SESSION["guessRandNr"]) || isset($_POST["reset"])) {
$_SESSION["guessRandNr"] = ["correctNr" => rand(1, 15), "guessesNr" => 0, "guessList" => [], "guessesNrList" => []];
}
?>
<!DOCTYPE html>
<html lang="sv">
<head>
<title>Specialrepetition, efter prov</title>
<meta charset="utf-8">
<style type="text/css">
input[type="number"] {
width: 80px;
}
input[type="submit"] {
margin-bottom: 6px;
}
#facit {
position: fixed;
top: 100px;
right: 100px;
}
.red, .orange, .green {
font-weight: bold;
}
.red {
color: red;
}
.orange {
color: orange;
}
.green {
color: #00cc00;
}
</style>
</head>
<body>
<h1>Specialrepetition</h1>
<br>
<form method="post" action="">
<?php
$correctNr = $_SESSION["guessRandNr"]["correctNr"];
$guessesNr = $_SESSION["guessRandNr"]["guessesNr"];
// Special copies for printing guess list
$guessList = $_SESSION["guessRandNr"]["guessList"];
$correctNrCache = $correctNr;
if (isset($_POST["name"])) {
$_SESSION["guessRandNr"]["name"] = $_POST["name"];
$name = $_POST["name"];
} else if (!isset($_SESSION["guessRandNr"]["name"])) {
?>
<input type="text" name="name" required placeholder="Fyll i ditt namn">
<?php
} else {
$name = $_SESSION["guessRandNr"]["name"];
}
if (isset($_POST["submitted"])) {
if ($_POST["guess"] !== "") {
$guessesNr++;
if (in_array($_POST["guess"], $_SESSION["guessRandNr"]["guessList"]))
$name = "Pucko";
$_SESSION["guessRandNr"]["guessList"][] = $_POST["guess"];
$guessList = $_SESSION["guessRandNr"]["guessList"]; // copy saved in variable for printout on correct guess
if ($_POST["guess"] == $correctNr) {
echo "Hej $name! <strong>Rätt gissat!</strong> Svaret var: <strong>$correctNr</strong>. Du behövde $guessesNr gissningar. ";
echo "Ett nytt tal har genererats, kör igen!";
$correctNr = rand(1, 15);
$_SESSION["guessRandNr"]["guessesNrList"][] = $guessesNr;
$guessesNr = 0;
$_SESSION["guessRandNr"]["guessList"] = [];
} else {
echo "Hej $name! <strong>Fel!</strong> Du har nu gissat $guessesNr gånger.<br>";
}
} else {
echo "<p>Hej $name! <strong>Inget ifyllt!</strong></p>";
}
}
$_SESSION["guessRandNr"]["correctNr"] = $correctNr;
$_SESSION["guessRandNr"]["guessesNr"] = $guessesNr;
?>
<h4>Gissa ett slumpgenererat tal:</h4>
<input type="number" name="guess" min="1" max="15" placeholder="Tal (1-15)">
<input type="submit" name="submitted" value="Gissa tal"><br>
<?php
echo "Gissningar: ";
foreach ($guessList as $guessNr) {
if (abs($guessNr - $correctNrCache) > 10)
$class = "red";
else if ($guessNr == $correctNrCache)
$class = "green";
else
$class = "orange";
echo "<span class='{$class}'>{$guessNr}</span> ";
}
if (count($_SESSION["guessRandNr"]["guessesNrList"]) > 0) {
echo "<br><br>Antal gissningar för varje omgång:<br>";
foreach ($_SESSION["guessRandNr"]["guessesNrList"] as $nrOfGuesses) {
echo $nrOfGuesses . " ";
}
echo "<br>Medelvärde av hur många gissningar som krävs: <strong>" . round(array_sum($_SESSION["guessRandNr"]["guessesNrList"]) / count($_SESSION["guessRandNr"]["guessesNrList"]), 2) . "</strong>";
}
?>
</form>
<br>
<br>
<br>
<form method="post" action="">
<input type="submit" name="reset" value="Återställ session">
</form>
</body>
</html>