Webbserverprogrammering 1

Källkod

Välj en PHP-fil för att visa dess källkod.

exercises/fragtavling.php

<?php
$quizLosenord 
= 'webb123';
$mottagare = 'elihag25@varmdogymnasium.se';

$steg = isset($_POST['steg']) ? $_POST['steg'] : 'losenord';
$fel = '';
$namn = isset($_POST['namn']) ? trim($_POST['namn']) : '';
$epost = isset($_POST['epost']) ? trim($_POST['epost']) : '';
$svar1 = isset($_POST['svar1']) ? $_POST['svar1'] : '';
$svar2 = isset($_POST['svar2']) ? $_POST['svar2'] : '';
$svar3 = isset($_POST['svar3']) ? $_POST['svar3'] : '';
$poang = 0;
$mejlTillDig = false;
$mejlTillSpelare = false;

// Kontrollera lösenordet innan frågorna visas.
if ($steg == 'kontrollera_losenord') {
    if (isset(
$_POST['losenord']) && $_POST['losenord'] == $quizLosenord) {
        
$steg = 'namn';
    } else {
        
$fel = 'Fel lösenord. Försök igen.';
        
$steg = 'losenord';
    }
} elseif (
$steg != 'losenord') {
    
// Lösenordet följer med i formulären med ett hidden-fält.
    
if (!isset($_POST['losenord']) || $_POST['losenord'] != $quizLosenord) {
        
$fel = 'Fel lösenord. Försök igen.';
        
$steg = 'losenord';
    } elseif (
$steg == 'spara_namn') {
        
$steg = 'fraga1';
    } elseif (
$steg == 'spara1') {
        
$steg = 'fraga2';
    } elseif (
$steg == 'spara2') {
        
$steg = 'fraga3';
    } elseif (
$steg == 'spara3') {
        
$steg = 'resultat';

        
// Räkna ett poäng för varje rätt svar.
        
if ($svar1 == 'a') {
            
$poang++;
        }
        if (
$svar2 == 'b') {
            
$poang++;
        }
        if (
$svar3 == 'a') {
            
$poang++;
        }

        
// Skicka resultatet både till dig och till spelaren.
        
$mejltext = $namn . ' fick ' . $poang . ' av 3 rätt i frågetävlingen.';
        if (
filter_var($epost, FILTER_VALIDATE_EMAIL)) {
            
$mejlTillDig = mail($mottagare, 'Resultat från frågetävlingen', $mejltext);
            
$mejlTillSpelare = mail($epost, 'Ditt resultat från frågetävlingen', $mejltext);
        } else {
            
$fel = 'Mejladressen verkar inte vara giltig.';
        }
    }
}
?>
<!DOCTYPE html>
<html lang="sv">
<head>
    <meta charset="UTF-8">
    <title>Frågetävling</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 30px; max-width: 650px; }
        fieldset { margin: 15px 0; padding: 15px; }
        .green { color: green; font-weight: bold; }
        .red { color: red; font-weight: bold; }
    </style>
</head>
<body>
    <h1>Frågetävling</h1>

    <?php if ($fel != '') { ?>
        <p><?php echo htmlspecialchars($fel, ENT_QUOTES, 'UTF-8'); ?></p>
    <?php } ?>

    <?php if ($steg == 'losenord') { ?>
        <form method="post">
            <input type="hidden" name="steg" value="kontrollera_losenord">
            <label>Lösenord: <input type="password" name="losenord" required></label>
            <button type="submit">Fortsätt</button>
        </form>

    <?php } elseif ($steg == 'namn') { ?>
        <form method="post">
            <input type="hidden" name="steg" value="spara_namn">
            <input type="hidden" name="losenord" value="<?php echo htmlspecialchars($quizLosenord, ENT_QUOTES, 'UTF-8'); ?>">
            <label>Ditt namn: <input type="text" name="namn" required></label><br><br>
            <label>Din mejladress: <input type="email" name="epost" required></label>
            <button type="submit">Börja</button>
        </form>

    <?php } elseif ($steg == 'fraga1') { ?>
        <form method="post">
            <input type="hidden" name="steg" value="spara1">
            <input type="hidden" name="losenord" value="<?php echo htmlspecialchars($quizLosenord, ENT_QUOTES, 'UTF-8'); ?>">
            <input type="hidden" name="namn" value="<?php echo htmlspecialchars($namn, ENT_QUOTES, 'UTF-8'); ?>">
            <input type="hidden" name="epost" value="<?php echo htmlspecialchars($epost, ENT_QUOTES, 'UTF-8'); ?>">
            <fieldset>
                <legend>Fråga 1: Vad används HTML till?</legend>
                <label><input type="radio" name="svar1" value="a" required> Göra webbsidor</label><br>
                <label><input type="radio" name="svar1" value="b"> Lagra bilder</label><br>
                <label><input type="radio" name="svar1" value="c"> Starta datorn</label><br>
                <label><input type="radio" name="svar1" value="d"> Skicka post</label>
            </fieldset>
            <button type="submit">Nästa fråga</button>
        </form>

    <?php } elseif ($steg == 'fraga2') { ?>
        <form method="post">
            <input type="hidden" name="steg" value="spara2">
            <input type="hidden" name="losenord" value="<?php echo htmlspecialchars($quizLosenord, ENT_QUOTES, 'UTF-8'); ?>">
            <input type="hidden" name="namn" value="<?php echo htmlspecialchars($namn, ENT_QUOTES, 'UTF-8'); ?>">
            <input type="hidden" name="epost" value="<?php echo htmlspecialchars($epost, ENT_QUOTES, 'UTF-8'); ?>">
            <input type="hidden" name="svar1" value="<?php echo htmlspecialchars($svar1, ENT_QUOTES, 'UTF-8'); ?>">
            <fieldset>
                <legend>Fråga 2: Vilken tagg gör en länk?</legend>
                <label><input type="radio" name="svar2" value="a" required> &lt;p&gt;</label><br>
                <label><input type="radio" name="svar2" value="b"> &lt;a&gt;</label><br>
                <label><input type="radio" name="svar2" value="c"> &lt;h1&gt;</label><br>
                <label><input type="radio" name="svar2" value="d"> &lt;img&gt;</label>
            </fieldset>
            <button type="submit">Nästa fråga</button>
        </form>

    <?php } elseif ($steg == 'fraga3') { ?>
        <form method="post">
            <input type="hidden" name="steg" value="spara3">
            <input type="hidden" name="losenord" value="<?php echo htmlspecialchars($quizLosenord, ENT_QUOTES, 'UTF-8'); ?>">
            <input type="hidden" name="namn" value="<?php echo htmlspecialchars($namn, ENT_QUOTES, 'UTF-8'); ?>">
            <input type="hidden" name="epost" value="<?php echo htmlspecialchars($epost, ENT_QUOTES, 'UTF-8'); ?>">
            <input type="hidden" name="svar1" value="<?php echo htmlspecialchars($svar1, ENT_QUOTES, 'UTF-8'); ?>">
            <input type="hidden" name="svar2" value="<?php echo htmlspecialchars($svar2, ENT_QUOTES, 'UTF-8'); ?>">
            <fieldset>
                <legend>Fråga 3: Vad skriver man för att börja ett PHP-block?</legend>
                <label><input type="radio" name="svar3" value="a" required> &lt;?php</label><br>
                <label><input type="radio" name="svar3" value="b"> &lt;php&gt;</label><br>
                <label><input type="radio" name="svar3" value="c"> &lt;?html</label><br>
                <label><input type="radio" name="svar3" value="d"> &lt;script&gt;</label>
            </fieldset>
            <button type="submit">Skicka in svar</button>
        </form>

    <?php } elseif ($steg == 'resultat') { ?>
        <h2><?php echo htmlspecialchars($namn, ENT_QUOTES, 'UTF-8'); ?> fick <?php echo $poang; ?> av 3 rätt!</h2>

        <fieldset>
            <legend>Fråga 1: Vad används HTML till?</legend>
            <p class="green">A. Göra webbsidor (rätt svar) <?php if ($svar1 == 'a') { echo '(ditt svar)'; } ?></p>
            <p class="<?php if ($svar1 == 'b') { echo 'red'; } ?>">B. Lagra bilder <?php if ($svar1 == 'b') { echo '(ditt svar)'; } ?></p>
            <p class="<?php if ($svar1 == 'c') { echo 'red'; } ?>">C. Starta datorn <?php if ($svar1 == 'c') { echo '(ditt svar)'; } ?></p>
            <p class="<?php if ($svar1 == 'd') { echo 'red'; } ?>">D. Skicka post <?php if ($svar1 == 'd') { echo '(ditt svar)'; } ?></p>
        </fieldset>

        <fieldset>
            <legend>Fråga 2: Vilken tagg gör en länk?</legend>
            <p class="<?php if ($svar2 == 'a') { echo 'red'; } ?>">A. &lt;p&gt; <?php if ($svar2 == 'a') { echo '(ditt svar)'; } ?></p>
            <p class="green">B. &lt;a&gt; (rätt svar) <?php if ($svar2 == 'b') { echo '(ditt svar)'; } ?></p>
            <p class="<?php if ($svar2 == 'c') { echo 'red'; } ?>">C. &lt;h1&gt; <?php if ($svar2 == 'c') { echo '(ditt svar)'; } ?></p>
            <p class="<?php if ($svar2 == 'd') { echo 'red'; } ?>">D. &lt;img&gt; <?php if ($svar2 == 'd') { echo '(ditt svar)'; } ?></p>
        </fieldset>

        <fieldset>
            <legend>Fråga 3: Vad skriver man för att börja ett PHP-block?</legend>
            <p class="green">A. &lt;?php (rätt svar) <?php if ($svar3 == 'a') { echo '(ditt svar)'; } ?></p>
            <p class="<?php if ($svar3 == 'b') { echo 'red'; } ?>">B. &lt;php&gt; <?php if ($svar3 == 'b') { echo '(ditt svar)'; } ?></p>
            <p class="<?php if ($svar3 == 'c') { echo 'red'; } ?>">C. &lt;?html <?php if ($svar3 == 'c') { echo '(ditt svar)'; } ?></p>
            <p class="<?php if ($svar3 == 'd') { echo 'red'; } ?>">D. &lt;script&gt; <?php if ($svar3 == 'd') { echo '(ditt svar)'; } ?></p>
        </fieldset>

        <?php if ($mejlTillDig && $mejlTillSpelare) { ?>
            <p>Resultatet skickades till både dig och spelaren.</p>
        <?php } elseif ($mejlTillDig) { ?>
            <p>Resultatet skickades till dig, men inte till spelaren.</p>
        <?php } elseif ($mejlTillSpelare) { ?>
            <p>Resultatet skickades till spelaren, men inte till dig.</p>
        <?php } else { ?>
            <p>Mejlet kunde inte skickas från servern.</p>
        <?php } ?>
    <?php } ?>
</body>
</html>