24. Password-beskyttelse

Du er her: StartIndholdsfortegnelse → Password-beskyttelse
Indhold

Indledning

Resultatet af denne opgave er en række sider, der alle er beskyttede af et password. Passwordet sættes på en "indgangs-side", som så sender brugeren videre til de andre sider, hvis passwordet er indtastet rigtigt.

Du kommer til at arbejde med sessioner.

Sessioner er baseret på cookies. Men specielle "session-cookies", der kun har en levetid, mens sessionen står på. De kan altså ikke gemmes i længere tid på brugerens pc, ligesom almindelige cookies.

Afprøv resultatet først

Prøv at gå ind på Logind-siden og log dig på. Kodeordet er farver. Prøv evt. først med en forkert kode.

Klik derefter på et af linkene Log ud, så kommer du tilbage hertil. Derefter kan du prøve at gå direkte ind på indholdssiden, som jo er beskyttet, ved at klikke her: indholdx.php. (Du burde nu blive sendt direkte til Log-ind-siden).

Opret en mappe

  1. Opret en ny mappe og kald den session

Opret 3 sider

Du skal nu oprette 3 sider. De skal alle gemmes med fil-endelsen .php. Den første af dem skal gemmes som indhold.php (for at det passer med koderne):

  1. Opret 3 sider
  2. Gem den første som indhold.php
  3. Gem de 2 andre sider på samme måde (vælg selv navn, bare det ender på .php).
  4. Opret link mellem de 3 sider.

Opret startsiden

Din startside skal ikke indeholde andet end en formular med et felt til at indtaste et password. Til dette skal du bruge en Formular. Desudens skal den indeholde de nødvendig koder, der kan checke om det indtastede password er korrekt.
Sådan gør du:

  1. Opret en ny side og vælg: Standard.wws som skabelon, så får du automatisk de nødvendige koder til siden.
  2. Sæt markøren lige efter <body> (hos mig er det på linie 9).
  3. Indtast nu følgende koder (du skal ikke skrive tallene, forklaring følger):
     9 <fieldset><legend>Indtast kode</legend>
    10 <form action="index.php" method="post">
    11
    12 <input type="password" name="kodeord"><br>
    13 <input type="submit" value="Videre"> 
    14 <input type="reset" value="Fortryd">
    15
    16 </form>
    17 </fieldset>
  4. Forklaring:
    1. fieldset og legend giver hhv. en ramme om og en overskrift til en samling felter i en formular.
    2. form starter formular-koden og action fortæller hvilken side brugeren skal sendes videre til (i dette tilfælde er det tilbage til den samme side), for at passwordet kan blive behandlet
    3. input type="password" opretter et tekstfelt til indtastning af password. Teksten bliver vist som stjerner. Dette felt sender en variabel videre, der kommer til at hedde kodeord
    4. input type="submit" er knappen, der sender brugeren videre.
    5. input type="reset" er "fortryd"-knappen
    6. Her afsluttes formularfeltet
    7. Her afsluttes rammen om formularen

Indtast PHP-koder

Du skal nu indtaste de PHP-koder, der kan kontrollerer om der er indtastet et kodeord og om kodeordet er rigtigt.

  1. Sæt markøren øverst på siden. Lige foran koden <!DOCTYPE...
  2. Indskriv følgende og vær meget opmærksom på at få de rigtige parenteser, gåseøjne, apostroffer og semikoloner med.
    <? session_start();
    $rigtigt = "farver";
    if(!empty($_POST['kodeord']))
    {
    $kodeord = $_POST['kodeord'];
    }
    if($kodeord AND $kodeord == $rigtigt)
    	{
    		session_register("kodeok");
    		$kodeok = $kodeord;
    ?>
    <html>
    <body>
    <SCRIPT LANGUAGE="JavaScript">
    top.location.replace ('indhold.php')
    </SCRIPT>
    </body>
    </html>
    <?
    	}
    else
    	{
    	session_destroy();
    ?>
    
  3. Forklaring:
    1. <? session_start(); starter sessionen. Denne linie skal stå først.
    2. $rigtigt = "farver"; opretter en variabel ($rigtigt), der indeholder det rigtige password.
    3. if(!empty($_POST['kodeord'])) checker, om der er sendt et variabel, derhedder kodeord og at den ikke er tom.
    4. {
      $kodeord = $_POST['kodeord'];
      }
      Disse 3 linier tildeler kodeordet fra formularen til en variabel, der hedder kodeord.
    5. if($kodeord AND $kodeord == $rigtigt) checker om variablen $kodeord (som stammer fra formularen) eksisterer og om det er det samme som det rigtige kodeord.
    6. De næste 4 linier:
      {
      session_register("kodeok");
      $kodeok = $kodeord;
      ?>
      registrerer variablen kodeord og giver denne variabel værdien fra passwordet. Den krøllede parentes starter indholdet af det der skal vises (og kodes), hvis passwordet er rigtigt. Den sidste linie sørger for at vi "springer ud af php", så vi kan vise almindelig HTML-kode.
    7. De næste linier er (næsten) almindelig HTML-kode med et lille JavaScript, der smider brugeren hen på den næste side.
    8. <?
      }
      else
      {
      session_destroy();
      ?>
      Disse linier springer ind i PHP igen og afslutter den første (sande) del af IF-sætningen. Derefter starter der en ELSE-sætning, der sørger for at afslutte sessionen og vise formularen (efter vi igen er "hoppet ud af" PHP).
    9. Derefter kommer hele formularen i HTML (den du har indtastet i forvejen).
  4. Afslut hele PHP'et med følgende krølle:
    <?
    	}
    ?>
  1. Gem siden som index.php i mappen session

De følgende sider

  1. Du skal nu hente hver af de andre sider ind i WebWriter og tilføje følgende foroven:
    <? session_start();
    if(!session_is_registered("kodeok"))
    {
    		session_destroy();
    		header("Location: index.php");
    		exit;
    }
    else
    {
    ?>
  2. Derefter skal du tilføje følgende krølle aller nederst på siden:
    <?
    	}
    ?>

Dine sider skulle nu være password-beskyttede. De kan kun ses af de brugere, der kender passwordet (i dette tilfælde er det farver, du skal selvfølgelig vælge et andet).

Log-ud-side

Sidste krølle på halen: En Log-ud side:

  1. Opret en ny side og gem den som farvel.php
  2. Indtast disse koder:
    <? session_start();
    session_destroy();
    header("Location: index.php");
    exit;
    ?>
  3. De steder, hvor du vil give brugeren en mulighed for at afslutte sessionen (logge ud) skal du lave et link til farvel.php. Sessionen bliver automatisk afsluttet i det øjeblike en bruger lukker browseren (men ikke automatisk ved at brugeren bare går hen til en helt anden side).

Upload siderne

For at afprøve siderne er du jo nødt til at uploade dem til en server med PHP ellers virker det ikke. Det bliver ikke gennemgået her.