Webbserverprogrammering 1

Show sourcecode

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

Webserver1/Ovningar/Cookie/

cookie1.php
cookie2.php
cookie3login.php
cookie3secret.php
cookie4.php
cookie5.php

cookie5.php

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

  if (isset(
$_POST['password'])) $_SESSION['password'] = $_POST['password'];
  if (isset(
$_POST['name'])) $_SESSION['name'] = $_POST['name'];
  if (isset(
$_POST['Vegetables'])) $_SESSION['Vegetables'] = $_POST['Vegetables'];
  if (isset(
$_POST['Mountain'])) $_SESSION['Mountain'] = $_POST['Mountain'];
  if (isset(
$_POST['PHP'])) $_SESSION['PHP'] = $_POST['PHP'];

  
$password = isset($_SESSION["password"]) ? $_SESSION["password"] : "";
  
$name = isset($_SESSION["name"]) ? htmlspecialchars($_SESSION["name"]) : ''// Konvertera symboler till html säkra karaktärer
  
$A1 = isset($_SESSION["Vegetables"]) ? htmlspecialchars($_SESSION["Vegetables"]) : '';
  
$A2 = isset($_SESSION["Mountain"]) ? htmlspecialchars($_SESSION["Mountain"]) : '';
  
$A3 = isset($_SESSION["PHP"]) ? htmlspecialchars($_SESSION["PHP"]) : '';
?>

<!DOCTYPE html>
<html lang="sv">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Många frågor, få svar</title>
</head>

<body>
  <form action="" method="post">
    <?php
    
if ($password == "") {
    
?>
      <h1>För att få göra quizet måste du ha ett lösenord:</h1>
      <label for="password">Lösenord:</label>
      <input type="password" name="password" id="password">
      <input type="submit" value="Logga in">
  </form>
<?php
    
} elseif ($password != "Superhemligt") {
?>
  <h1>Fel lösenord!</h1>
  <label for="password">Lösenord:</label>
  <input type="password" name="password" id="password">
  </form>
<?php
    
} else {
?>
  <?php
      $Q 
= isset($_POST["Q"]) ? htmlspecialchars($_POST["Q"]) : '0';
      
$email = isset($_POST["email"]) ? htmlspecialchars($_POST["email"]) : '';

      
$Q1HTML '<h3>Fråga 1: Vad är den botaniska definitionen för en grönsak?</h3>
        <input type="radio" name="Vegetables" value="1" required> En ätbar växtdel som oftast konsumeras som en del av en huvudmåltid.<br>
        <input type="radio" name="Vegetables" value="2"> En frukt som äts som en del av en huvudmåltid.<br>
        <input type="radio" name="Vegetables" value="3"> En växt som odlas för sina ätbara blad.<br>
        <input type="radio" name="Vegetables" value="4"> Det finns ingen botanisk definition.<br>'
;

      
$Q2HTML '<h3>Fråga 2: Vilken är den högsta bergstoppen i världen?</h3>
        <input type="radio" name="Mountain" value="1" required> K2<br>
        <input type="radio" name="Mountain" value="2"> Mount Everest<br>
        <input type="radio" name="Mountain" value="3"> Kangchendzönga<br>
        <input type="radio" name="Mountain" value="4"> Lhotse<br>'
;

      
$Q3HTML '<h3>Fråga 3: Vad står PHP för?</h3>
        <input type="radio" name="PHP" value="1" required> Personal Home Page<br>
        <input type="radio" name="PHP" value="2"> PHP: Hypertext Preprocessor<br>
        <input type="radio" name="PHP" value="3"> Private Hosting Platform<br>
        <input type="radio" name="PHP" value="4"> Programming Hypertext Parser<br>'
;

      if (
$Q == '0') :

  
?>
    <h2>Välkommen! Skriv ditt namn för att börja:</h2>
    <input type="text" id="name" name="name" required>
    <button type="submit" name="Q" value="1">Starta</button>

  <?php elseif ($Q == '1') : echo $Q1HTML?>
    <button type="submit" name="Q" value="2">Nästa fråga</button>

  <?php elseif ($Q == '2') : echo $Q2HTML;?>
    <button type="submit" name="Q" value="3">Nästa fråga</button>

  <?php elseif ($Q == '3') : echo $Q3HTML;?>
    <button type="submit" name="Q" value="4">Skicka in</button>

  <?php elseif ($Q == '4') :
  
?>
    <h2>Tack för att du deltog, <?php echo $name?>.</h2>
    <?php
        $A1Correct 
4;
        
$A2Correct 2;
        
$A3Correct 2;
        
$correct 0;
        if (
$A1 == $A1Correct$correct++;
        if (
$A2 == $A2Correct$correct++;
        if (
$A3 == $A3Correct$correct++;

        
$message "<h3> Du fick $correct/3 rätt! </h3>";

        
// Markerar rätt svar och fel svar
        
function highlightAnswers(&$str, &$n, &$ans, &$ansCorrect) : void {
          if (
$n == $ansCorrect && $ansCorrect == $ans) {
                
$str "<span style='color:limegreen'>" $str "</span>";
              }
              elseif (
$n == $ansCorrect) {
                
$str "<span style='color:green'>" $str "</span>";
              }
              elseif (
$n == $ans) {
                
$str "<span style='color:red'>" $str "</span>";
              }
        }

        foreach ([
$Q1HTML$Q2HTML$Q3HTML] as $i => $value) {
          
$text = [];
          
preg_match_all("/>.+</"$value$text);
          
          foreach (
$text[0] as $j => $str) {
            
$str substr($str1, -1);
            if (
substr($str06) == "Fråga") {
              
$str "<h4>" $str "</h4>";
            }
            
// Fuck it vi hårdkodar det
            
if ($i == 0) {
              
highlightAnswers($str$j$A1$A1Correct);
            }
            elseif (
$i == 1) {
              
highlightAnswers($str$j$A2$A2Correct);
            }
            elseif (
$i == 2) {
              
highlightAnswers($str$j$A3$A3Correct);
            }
            
$str .= "<br>";
            
// echo $str;
            
$message .= $str;
          }
        }

    echo 
$message "<hr>" ?>
    <p>Vill du ha det skickat på epost?</p>
    <input type="email" name="email" id="email">
    <button type="submit" name="Q" value="4">Skicka epost</button>

    <br><br>
    <input type="submit" value="Kör igen">
    <?php
        
if ($email == "") {
          
// Do nothing
        
} elseif (!preg_match("/.+@.{3,}\..{2,}/"$email)) {
          echo 
"Ogiltig epost!";
        } else {
          
$mailhead "MIME-Version: 1.0\r\n";
          
$mailhead .= "Content-type: text/html; charset=utf-8\r\n";
          
$mailhead .= "From: " $_GET["email"];
          
mail($email"Dina resultat"$message$mailhead);
          echo 
"Epost skickat!";
        }
    
?>
  <?php endif; ?>
  </form>
<?php ?>
</body>

</html>