Webbserverprogrammering 1

Show sourcecode

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

webbsrvprg/projects/quiz/

access-deneid.png
diagramresultat.php
insert-admin.php
login.php
logout.php
personliga-resultat.php
quiz-sida.php
ransa-quiz-session.php
ransa-skapa-quiz-session.php
resultat.php
session-variabler-unset.php
signin.php
skapa-inloggning-tabell.php
skapa-quiz-tabeller.php
skapa-quiz.php
start.php
tabort-kunder-quiz.php
åtkomst-nekad.php

quiz-sida.php

348 lines UTF-8 Windows (CRLF)
<?php
  session_start
();


  if (!isset(
$_SESSION['loggedin']) || $_SESSION['loggedin'] != true){
    
header("Location: login.php");
    exit;
  }

  if (!isset(
$_SESSION["quizfråga"])) {
    
$_SESSION["quizfråga"] = 0;
  }

  if (!isset(
$_SESSION["quizTitel"])) {
    
$_SESSION["quizTitel"] = null;
  }
  if (!isset(
$_SESSION["quizId"])) {
    
$_SESSION["quizId"] = null;
  }

  if (!isset(
$_SESSION["antalRätt"])) {
    
$_SESSION["antalRätt"] = 0;
  }

  if (!isset(
$_SESSION["frågorLista"])) {
    
$_SESSION["frågorLista"] = array();
  }
  if (!isset(
$_SESSION["frågeIdLista"])) {
    
$_SESSION["frågeIdLista"] = array();
  }
  if (!isset(
$_SESSION["svarLista"])) {
    
$_SESSION["svarLista"] = array();
  }
  if (!isset(
$_SESSION["rättfelLista"])) {
    
$_SESSION["rättfelLista"] = array();
  }
  if (!isset(
$_SESSION["resultatUserIdLista"])) {
    
$_SESSION["resultatUserIdLista"] = array();
  }
  if (!isset(
$_SESSION["resultatQuizIdLista"])) {
    
$_SESSION["resultatQuizIdLista"] = array();
  }
  if (!isset(
$_SESSION["resultatAntalrättLista"])) {
    
$_SESSION["resultatAntalrättLista"] = array();
  }

  if (!isset(
$_SESSION["svarFråga1"])) {
    
$_SESSION["svarFråga1"] = null;
  }
  if (!isset(
$_SESSION["svarFråga2"])) {
    
$_SESSION["svarFråga2"] = null;
  }
  if (!isset(
$_SESSION["svarFråga3"])) {
    
$_SESSION["svarFråga3"] = null;
  }
  if (!isset(
$_SESSION["svarFråga4"])) {
    
$_SESSION["svarFråga4"] = null;
  }
  if (!isset(
$_SESSION["svarFråga5"])) {
    
$_SESSION["svarFråga5"] = null;
  }

?>

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Quiz Start</title>
  <style>
    h1{
      margin-bottom:0;
    }
    h3{
      margin-top:0;
    }
    table{
      border-collapse:collapse;
      margin:20px 0;
      font-size:16px;
      text-align: left;
    }
    table,th,td{
      border:1px solid #ddd;
    }
    th,td {
      padding: 10px;
    }
    tr:hover{
      background-color:#f1f1f1;
    }
    caption{
      background-color:darkblue;
      color:white;
      font-weight:bold;
      font-size:20px;
    }
    .rättsvar {
      color:green;
    }
    .felsvar {
      color:red;
    }
    .användarsvarVidFel {
      background-color:lightgreen;
    }
    
  </style>
</head>
<body>
  <?php
  
include ('../../dbconnection.php');
  
$id null;


  if (isset(
$_POST['valtQuizid']) && !empty($_POST['valtQuizid']) && $_SERVER["REQUEST_METHOD"] == "POST" && $_SESSION["quizfråga"] != 1) {
    
$quizId $_POST['valtQuizid'];
    
$_SESSION["quizId"] = $_POST['valtQuizid'];
    
$_SESSION["quizfråga"] = 1;
        
    try {    
      
$sql "SELECT namn FROM quizer WHERE id = $quizId";
      
$stmt $dbconn->query($sql);
      
$posts $stmt->fetchAll(PDO::FETCH_ASSOC);

      foreach (
$posts as $post) {
        
$_SESSION["quizTitel"] = $post['namn'];
      }

      
$sql "SELECT * FROM quizfrågor WHERE quizid = $quizId";
      
$stmt $dbconn->prepare($sql);
      
$data = array();  
      
$stmt->execute($data);
      while (
$res $stmt->fetch(PDO::FETCH_ASSOC)) {
        
array_push($_SESSION["frågorLista"], htmlentities($res['frågatext']));
        
array_push($_SESSION["frågeIdLista"], htmlentities($res['id']));
      }
    

      
$sql2 "SELECT * FROM quizsvar WHERE frågeid IN (".
      
$_SESSION['frågeIdLista'][0]. "," .
      
$_SESSION['frågeIdLista'][1]. "," .
      
$_SESSION['frågeIdLista'][2]. "," .
      
$_SESSION['frågeIdLista'][3]. "," .
      
$_SESSION['frågeIdLista'][4] .")";
      
$stmt2 $dbconn->prepare($sql2);
      
$stmt2->execute();
      while (
$res2 $stmt2->fetch(PDO::FETCH_ASSOC)) {
        
array_push($_SESSION["svarLista"], htmlentities($res2['svartext']));
        
array_push($_SESSION["rättfelLista"], htmlentities($res2['rättfel']));
      }


    }

    catch(
PDOException $e)
        {
        
$e->getMessage();
    }
  }

  if (
$_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["fråga5"]) && $_SESSION["antalRätt"] == 0) {
    
$_SESSION["quizfråga"] = 2;

    if (
$_SERVER["REQUEST_METHOD"] == "POST") {


      
// sparar användarens svar och ger poäng
      
for ($i 1$i <= 5$i++) { 
        
$frågaNyckel "fråga" $i
        
        if (isset(
$_POST[$frågaNyckel])) {
          
$valtSvar $_POST[$frågaNyckel];
          
          
$svarIndex = ($i 1) * 3;
          
          if (
$valtSvar == "svar1" && $_SESSION["rättfelLista"][$svarIndex] == 1) {
            
$_SESSION["antalRätt"] += 1;
          } 
          else if (
$valtSvar == "svar2" && $_SESSION["rättfelLista"][$svarIndex 1] == 1) {
            
$_SESSION["antalRätt"] += 1;
          } 
          else if (
$valtSvar == "svar3" && $_SESSION["rättfelLista"][$svarIndex 2] == 1) {
            
$_SESSION["antalRätt"] += 1;
          }

          if (
$valtSvar == "svar1") {
            
$_SESSION["svarFråga". ($i)] = 1;
          }
          else if (
$valtSvar == "svar2") {
            
$_SESSION["svarFråga". ($i)] = 2;
          }
          else if (
$valtSvar == "svar3") {
            
$_SESSION["svarFråga". ($i)] = 3;
          }
          
        }
      }
      try {
        
$userId $_SESSION['userId'];
    
        
$sql "SELECT * FROM resultat WHERE kundid = $userId";
        
$stmt $dbconn->prepare($sql);
        
$stmt->execute();
        while (
$res $stmt->fetch(PDO::FETCH_ASSOC)) {
          
array_push($_SESSION["resultatUserIdLista"], $res['kundid']);
          
array_push($_SESSION["resultatQuizIdLista"], $res['quizid']);
          
array_push($_SESSION["resultatAntalrättLista"], $res['antalrätt']);
        }
    
        
$insertId null;
        
$antalRätt $_SESSION["antalRätt"];
    
        if (isset(
$_SESSION["resultatUserIdLista"], $_SESSION["resultatQuizIdLista"]) &&
            
count($_SESSION["resultatUserIdLista"]) === count($_SESSION["resultatQuizIdLista"])) {
    
          for (
$i 0$i count($_SESSION["resultatUserIdLista"]); $i++) {
            if (
$_SESSION["resultatUserIdLista"][$i] == $userId &&
              
$_SESSION["resultatQuizIdLista"][$i] == $_SESSION["quizId"]) {
              
$insertId $i
              break; 
            }
          }
        }
    
        if (
$insertId === null) {
          
$sql "INSERT INTO resultat (kundid, quizid, antalrätt) VALUES (?, ?, ?)";
          
$stmt $dbconn->prepare($sql);
          
$stmt->execute([$userId$_SESSION["quizId"], $_SESSION["antalRätt"]]);
        } else if (
$_SESSION["antalRätt"] > $_SESSION["resultatAntalrättLista"][$insertId]) {
            
$resultatUserId $_SESSION["resultatUserIdLista"][$insertId];
            
$resultatQuizId $_SESSION["resultatQuizIdLista"][$insertId]; // Använd rätt index
            
$sql "UPDATE resultat 
            SET antalrätt = 
$antalRätt 
            WHERE kundid = 
$resultatUserId AND quizid = $resultatQuizId";
            
$stmt $dbconn->prepare($sql);
            
$stmt->execute();
        }
      } catch (
PDOException $e) {
        echo 
"Error: " $e->getMessage(); // Visa felmeddelandet tydligt
      
}

    }


  }


  
// Skriva ut quiz som går att välja i tabeller 
  
if ($_SESSION["quizfråga"] == 0) {

    echo 
"<h1> Välj Quiz </h1>";

    
$sql "SELECT * FROM quizer";
    
$stmt $dbconn->prepare($sql);
    
$data = array();  
    
$stmt->execute($data);
    
$output "<table><caption>Quizer</caption>";
    while (
$res $stmt->fetch(PDO::FETCH_ASSOC)) {
      
$idx htmlentities($res['id']);
      
$namn htmlentities($res['namn']);
      
      
$output .= "<tr>".
          
"<td>$idx</td>".
          
"<td>$namn</td>".
          
"<td><form method='post' action=''>".
          
"<input type='hidden' name='valtQuizid' value='$idx'>".
          
"<button type='submit'>Välj</button></form></td>".
      
"</tr>";
    }
    
$output .= "</table>";
    echo 
"$output"
  }

  
// skriver ut valt quiz
  
if ($_SESSION["quizfråga"] == 1) {

    echo 
"<h1>" $_SESSION["quizTitel"] ." Quiz""</h1><br>";
    echo 
"<form method='post'>";

    for (
$i 0$i 5$i++) {
      echo (
$i+1).". ".$_SESSION["frågorLista"][$i] . "<br>";
      echo 
"<input type='radio' name='fråga" . ($i 1) . "' value='svar1' required> " $_SESSION["svarLista"][$i 3] . "<br>";
      echo 
"<input type='radio' name='fråga" . ($i 1) . "' value='svar2' required> " $_SESSION["svarLista"][$i 1] . "<br>";
      echo 
"<input type='radio' name='fråga" . ($i 1) . "' value='svar3' required> " $_SESSION["svarLista"][$i 2] . "<br>";
      echo 
"<br><br>";
    }

    echo 
"<input type='submit' value='Skicka'>";
    echo 
"</form>";
  }
  
?>
  <?php
  
  
//Skriv ut genomfört quiz med rättning
  
if ($_SESSION["quizfråga"] == 2) {
    
    echo 
"<h1>" $_SESSION["quizTitel"] ." Quiz""</h1><br>";
    echo 
"<form method='post'>";
    echo 
"<h3> Du fick "$_SESSION["antalRätt"]. " av 5 möjliga! </h3>";

    for (
$i 0$i 5$i++) {
      echo (
$i+1).". ".$_SESSION["frågorLista"][$i] . "<br>";
      
?>
      &nbsp; &nbsp; 
      <span <?php if($_SESSION["svarFråga". ($i+1)] == && $_SESSION["rättfelLista"][$i 3] == ) { 
        echo 
'class="rättsvar"';} 
        else if (
$_SESSION["svarFråga". ($i+1)] == && $_SESSION["rättfelLista"][$i 3] == 0) {
        echo 
'class="felsvar"'; }
        else if (
$_SESSION["svarFråga". ($i+1)] != && $_SESSION["rättfelLista"][$i 3] == 1) {
        echo 
'class="användarsvarVidFel"'; } ?><?php echo $_SESSION["svarLista"][$i 3?></span> <br>      
      &nbsp; &nbsp; 
      <span <?php if($_SESSION["svarFråga". ($i+1)] == && $_SESSION["rättfelLista"][$i 1] == ) { 
        echo 
'class="rättsvar"';} 
        else if (
$_SESSION["svarFråga". ($i+1)] == && $_SESSION["rättfelLista"][$i 3+1] == 0) {
        echo 
'class="felsvar"'; }
        else if (
$_SESSION["svarFråga". ($i+1)] != && $_SESSION["rättfelLista"][$i 3+1] == 1) {
        echo 
'class="användarsvarVidFel"'; } ?><?php echo $_SESSION["svarLista"][$i 1?> </span> <br>
      &nbsp; &nbsp; 
      <span <?php if($_SESSION["svarFråga". ($i+1)] == && $_SESSION["rättfelLista"][$i +] == ) { 
        echo 
'class="rättsvar"';} 
        else if (
$_SESSION["svarFråga". ($i+1)] == && $_SESSION["rättfelLista"][$i 2] == 0) {
        echo 
'class="felsvar"'; }
        else if (
$_SESSION["svarFråga". ($i+1)] != && $_SESSION["rättfelLista"][$i 2] == 1) {
        echo 
'class="användarsvarVidFel"'; } ?><?php echo $_SESSION["svarLista"][$i 2?> </span> <br>
      <br>
      </form>

      <?php
    
}
  }

  
$dbconn null;

  
?>
  <a href="start.php">Tillbaka till start</a> <br>
  <?php if($_SESSION["quizfråga"] >= 2){ ?>
    <a href="ransa-quiz-session.php">Kör ett till quiz</a> <br> <br>
    <a href="resultat.php">Se topplista</a> <br>
    <a href="personliga-resultat.php">Se dina person bästa</a> <br>
  <?php
  

  
?>

</body>
</html>