Webbserverprogrammering 1

Show sourcecode

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

webbsrvprg/quiz/

admin.php
createQuiz.php
createadmin.php
logIn.php
myStats.php
playquiz.php
result.php
scoreboard.php
signIn.php
start.php
startsida.php
stats.php
style.css
tables.php
update.php

createQuiz.php

150 lines UTF-8 Windows (CRLF)
<?php 
  
/** @var PDO $dbconn */
  
include ("start.php");

  if (
$_COOKIE["type"] != "admin") {
    
header("location: startsida.php");
  }
?>

    <?php
      session_start
();
      
$quizDone false;

      try {
        
// Kör koden om quizets namn har sats
        
if (isset($_POST["quizName"]) && isset($_POST["questions"])) {
          
$quizName $_POST["quizName"];

          
// Sätt antalet frågor till 1 om det är mindre än 1
          
$questions = (int)$_POST["questions"];
          if (
$questions <= 0) {
            
$questions 1;
          }

          
// Spara quizets namn i en tabell
          
$sql "INSERT INTO quizes (quizname)
          VALUES (?)"
;

          
$stmt $dbconn->prepare($sql);

          
$data = array($quizName);
          
$stmt->execute($data);

          
$quizId $dbconn->lastInsertId();

          
// Spara quizets namn, id, antal frågor och vilke fråga skaparen skriver just nu i en session
          
$_SESSION["quizName"] = $quizName;
          
$_SESSION["quizId"] = $quizId;
          
$_SESSION["questions"] = $questions;
          
$_SESSION["currentQuestion"] = 0;
        } 
        
// Körs varje gång en fråga och antalet svarsalternativ den har skickas
        
else if (isset($_POST["question"]) && isset($_POST["answers"])) {
          
// Öka värdet som håller koll på vilken fråga som skrivs med 1
          
$_SESSION["currentQuestion"]++;

          
$question $_POST["question"];
          
$answers = (int)$_POST["answers"];

          
// Sätt antalet svarsalternativ till 1 om det är mindre än 1
          
if ($answers <= 0) {
            
$answers 1;
          }

          
// Spara frågan och id:t till quizet den tillhör i en tabell
          
$sql "INSERT INTO questions (question, quizId)
          VALUES (?, ?)"
;

          
$stmt $dbconn->prepare($sql);

          
$data = array($question$_SESSION["quizId"]);
          
$stmt->execute($data);

          
$questionId $dbconn->lastInsertId();

          
// Spara frågan, dess id och antalet svarsalternativ i sessionen
          
$_SESSION["question"] = $question;
          
$_SESSION["questionId"] = $questionId;
          
$_SESSION["answers"] = $answers;
        } 
        
// Körs om en av svarsalternativen valts som korrekt(då har även svarsalternativen fyllt i)
        
else if (isset($_POST["isCorrect"])) {
          
$currentAnswer 1;
          
          while (isset(
$_POST["answer$currentAnswer"])) {
            
// Lägg till alla svarsalternativ i en tabell med id:t till 
            // frågan de tillhör och om de är korrekt eller inte
            
$sql "INSERT INTO answers (answer, isCorrect, questionId)
            VALUES (?, ?, ?)"
;

            
$answer $_POST["answer$currentAnswer"];

            
$isCorrect 0;
            if (
$currentAnswer == $_POST["isCorrect"]) {
              
$isCorrect 1;
            }

            
$stmt $dbconn->prepare($sql);

            
$data = array($answer$isCorrect$_SESSION["questionId"]);
            
$stmt->execute($data);

            
$currentAnswer++;
          }

          
// Rensa frågan så att processen kan upprepas med nästa fråga
          
$_SESSION["question"] = null;

          
// Om nuvarande frågan var den sista, quizet är klart
          
if ($_SESSION["currentQuestion"] >= $_SESSION["questions"]) {
            
$quizDone true;
          }
        }
      } catch (
PDOException $e) {
        echo 
$e->getMessage() . "<br>";
      }
      
      if (
$quizDone) {
        
// Är quizet klart, avsluta sessionen och skriv ut att quizet är klart
        
session_destroy();
        echo 
"Quizet är klart";
      } else {
        
// Om quizet inte är klart, skapa ett formulär
        
echo "<form method='post'>";

        if (!isset(
$_SESSION["quizName"])) {
          
// Om quiznamnet inte är satt, be om det och antalet frågor
          
echo "<input type='text' name='quizName' placeholder='Quiznamn' required><br>";
          echo 
"<input type='number' name='questions' placeholder='Antal frågor' required><br>";
        } else if (!isset(
$_SESSION["question"]) && $_SESSION["currentQuestion"] <= $_SESSION["questions"]) {
          
// Annars, om det inte finns en fråga som skrivs och det ska finnas en till,
          //  be om det och antal svarsalternativ

          // Skriv ut quizets namn
          
echo "<h1>" $_SESSION["quizName"] . "</h1>";
          
          echo 
"<input type='text' name='question' placeholder='Fråga' required><br>";
          echo 
"<input type='number' name='answers' placeholder='Antal svar' required><br>";
        } else {
          
// Annars, skriv ut quizets namn, frågans namn, 
          // och be om alla svarsalternativ samt vilken som är korrekt
          
echo "<h1>" $_SESSION["quizName"] . "</h1>";
          echo 
"<h2>" $_SESSION["question"] . "</h2>";

          
$currentAnswer 1;
          while (
$currentAnswer <= (int)$_SESSION["answers"]) {
            echo 
"<input type='text' name='answer$currentAnswer' placeholder='Svar $currentAnswer' required>
            <input type='radio' name='isCorrect' value='
$currentAnswer' required><br>";

            
$currentAnswer++;
          }
        }
        
        
// Skriv ut slutet av formuläret
        
echo "<input type='submit' value='Skicka'></form>";
      }

    
?>
</body>
</html>