Webbserverprogrammering 1

Show sourcecode

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

webbsrvprg1/exercises/

index.php
ovn_class.php
ovn_cookies1.php
ovn_cookies2.php
ovn_cookies3.php
ovn_cookies3_hemlig.php
ovn_cookies4.php
ovn_cookies5.php
ovn_cookies_main.php
ovn_form1.php
ovn_form1_svar.php
ovn_form2.php
ovn_form2_svar.php
ovn_form3.php
ovn_form3_svar.php
ovn_form4.php
ovn_form4_svar.php
ovn_form5.php
ovn_form5_svar.php
ovn_form6.php
ovn_form6_svar.php
ovn_form7.php
ovn_form7_svar.php
ovn_form8.php
ovn_form_main.php
ovn_funk1.php
ovn_gr1.php
ovn_ink1_main.php
ovn_ink1_text.php
ovn_ink2_1.php
ovn_ink2_2.php
ovn_ink2_3.php
ovn_ink2_footer.php
ovn_ink2_header.php
ovn_ink2_main.php
ovn_ink_main.php
ovn_quiz.php
ovn_str.php
test.html

ovn_cookies5.php

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

$losenord = "lösenord";

$fragor = [
    
1 => [
        
"fraga" => "När släpptes Hollow Knight?",
        
"alternativ" => [
            
"A" => "24 februari 2017",
            
"B" => "4 september 2025",
            
"C" => "6 december 2018",
            
"D" => "3 november 2023"
        
],
        
"ratt" => "A"
    
],
    
2 => [
        
"fraga" => "Vilket är det sämsta stället i Hollow Knight?",
        
"alternativ" => [
            
"A" => "Deepnest",
            
"B" => "The Hive",
            
"C" => "Royal Waterways",
            
"D" => "Greenpath"
        
],
        
"ratt" => "C"
    
],
    
3 => [
        
"fraga" => "Vilken ending får man om man klarar av Pantheon of Hallownest?",
        
"alternativ" => [
            
"A" => "The Hollow Knight",
            
"B" => "Sealed Siblings",
            
"C" => "Dream No more",
            
"D" => "Embrace the Void"
        
],
        
"ratt" => "D"
    
]
];

$felmeddelande = "";

if (isset(
$_POST["losenord"])) {
    if (
$_POST["losenord"] == $losenord) {
        
$_SESSION["inloggad"] = true;
    } else {
        
$felmeddelande = "Fel lösenord!";
    }
}

if (isset(
$_POST["borja_om"])) {
    
session_unset();
    
session_destroy();
    
header("Location: " . $_SERVER["PHP_SELF"]);
    exit;
}

if (isset(
$_POST["borja"])) {
    
$_SESSION["namn"] = trim($_POST["namn"]);
    
$_SESSION["email"] = trim($_POST["email"]);
    
$_SESSION["steg"] = 1;
    
$_SESSION["svar"] = [];
}

if (isset(
$_POST["nasta"]) || isset($_POST["skicka"])) {

    
$steg = $_SESSION["steg"];

    if (isset(
$_POST["svar"])) {
        
$_SESSION["svar"][$steg] = $_POST["svar"];
    }

    if (isset(
$_POST["nasta"])) {
        
$_SESSION["steg"]++;
    }

    if (isset(
$_POST["skicka"])) {
        
$_SESSION["resultat"] = true;
    }
}

function 
sakerText($text) {
    return 
htmlspecialchars((string)$text, ENT_QUOTES, "UTF-8");
}
?>

<!DOCTYPE html>
<html lang="sv">
<head>
    <meta charset="UTF-8">
    <title>Frågetävling</title>

    <style>
        body {
            font-family: Arial, sans-serif;
            max-width: 700px;
            margin: 40px auto;
            padding: 20px;
            background: #f4f4f4;
        }

        main {
            background: white;
            padding: 25px;
            border-radius: 10px;
        }

        .alternativ {
            display: block;
            margin: 12px 0;
            padding: 10px;
            border: 1px solid #ddd;
            border-radius: 5px;
        }

        .ratt {
            background: #b8f2c2;
        }

        .fel {
            background: #ffc4c4;
        }

        button {
            margin-top: 15px;
            padding: 10px 18px;
            cursor: pointer;
        }

        .felmeddelande {
            color: red;
        }
    </style>
</head>

<body>
<main>

<h1>Frågetävling</h1>

<?php if (!isset($_SESSION["inloggad"]) ||
          
$_SESSION["inloggad"] !== true) { ?>

    <h2>Ange lösenord</h2>

    <p class="felmeddelande">
        <?= sakerText($felmeddelande) ?>
    </p>

    <form method="post">
        <label>Lösenord:</label>
        <input type="password" name="losenord" required>
        <button type="submit">Logga in</button>
    </form>

<?php } elseif (isset($_SESSION["resultat"])) { ?>

    <?php
    $poang 
= 0;
    
$namn = $_SESSION["namn"];
    
$email = $_SESSION["email"];
    
$svar = $_SESSION["svar"];

    
$mejltext = "Resultat från frågetävlingen\n\n";
    
$mejltext .= "Spelare: $namn\n";
    
$mejltext .= "Mejl: $email\n\n";

    foreach (
$fragor as $nummer => $fraga) {
        
$valt = $svar[$nummer] ?? "";

        if (
$valt == $fraga["ratt"]) {
            
$poang++;
        }

        
$mejltext .= "Fråga $nummer: " . $fraga["fraga"] . "\n";
        
$mejltext .= "Ditt svar: " . ($fraga["alternativ"][$valt] ?? "Inget svar") . "\n";
        
$mejltext .= "Rätt svar: " . $fraga["alternativ"][$fraga["ratt"]] . "\n\n";
    }

    
$mejltext .= "Resultat: $poang av 3 rätt.";

    if (!isset(
$_SESSION["resultat_mail_skickat"])) {

        
$amne = "Ditt resultat från frågetävlingen";
        
$headers = "From: webb@noreply.se\r\n";
        
$headers .= "Reply-To: webb@noreply.se\r\n";
        
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";

        if (
filter_var($email, FILTER_VALIDATE_EMAIL) &&
            
mail($email, $amne, $mejltext, $headers)) {
            
$_SESSION["resultat_mail_skickat"] = true;
            
$mejl_skickat = true;
        } else {
            
$mejl_skickat = false;
        }

    } else {
        
$mejl_skickat = true;
    }
    
?>

    <h2>Resultat</h2>

    <p>Spelare: <strong><?= sakerText($namn) ?></strong></p>
    <p>Du fick <strong><?= $poang ?> av 3 rätt!</strong></p>

    <?php if ($mejl_skickat) { ?>
        <p>Resultatet har skickats till <?= sakerText($email) ?>.</p>
    <?php } else { ?>
        <p class="felmeddelande">
            Mejlet kunde inte skickas.
        </p>
    <?php } ?>

    <?php foreach ($fragor as $nummer => $fraga) { ?>

        <h3>Fråga <?= $nummer ?>:
            <?= sakerText($fraga["fraga"]) ?></h3>

        <?php foreach ($fraga["alternativ"] as $bokstav => $text) {

            
$klass = "";

            if (
$bokstav == $fraga["ratt"]) {
                
$klass = "ratt";
            } elseif ((
$svar[$nummer] ?? "") == $bokstav) {
                
$klass = "fel";
            }
        
?>

            <div class="alternativ <?= $klass ?>">
                <?= sakerText($bokstav) ?>.
                <?= sakerText($text) ?>

                <?php if ($bokstav == $fraga["ratt"]) {
                    echo 
" - Rätt svar";
                } elseif ((
$svar[$nummer] ?? "") == $bokstav) {
                    echo 
" - Ditt svar";
                } 
?>
            </div>

        <?php } ?>
    <?php } ?>

    <form method="post">
        <button type="submit" name="borja_om">
            Börja om
        </button>
    </form>

<?php } elseif (isset($_SESSION["inloggad"]) &&
                
$_SESSION["inloggad"] === true) { ?>

    <?php if (!isset($_SESSION["steg"])) { ?>

        <h2>Välkommen!</h2>

        <form method="post">
            <label>Ditt namn:</label><br>
            <input type="text" name="namn" required maxlength="100"><br><br>

            <label>Din mejladress:</label><br>
            <input type="email" name="email" required><br><br>

            <button type="submit" name="borja">
                Börja tävlingen
            </button>
        </form>

    <?php } elseif ($_SESSION["steg"] <= 3) { ?>

        <?php $steg = $_SESSION["steg"]; ?>

        <h2>Fråga <?= $steg ?> av 3</h2>

        <p><?= sakerText($fragor[$steg]["fraga"]) ?></p>

        <form method="post">

            <?php foreach ($fragor[$steg]["alternativ"] as $bokstav => $text) { ?>

                <label class="alternativ">
                    <input type="radio" name="svar"
                           value="<?= sakerText($bokstav) ?>" required>

                    <?= sakerText($bokstav) ?>.
                    <?= sakerText($text) ?>
                </label>

            <?php } ?>

            <?php if ($steg < 3) { ?>
                <button type="submit" name="nasta">
                    Nästa fråga
                </button>
            <?php } else { ?>
                <button type="submit" name="skicka">
                    Skicka in svar
                </button>
            <?php } ?>

        </form>

    <?php } ?>

<?php } ?>

</main>
</body>
</html>