8. Kontroller dine sider

Du er her: StartIndholdsfortegnelse → Kontroller dine sider
Indhold

Indledning

Når man arbejder med variabler (se Kapitel 4 og Kapitel 5) er man nogle gange nødt til at kunne kontrollere om variablen har en værdi eller om den er tom. Når indholdet af variablen er kontrolleret kan man så beslutte, hvad der skal ske. I Kapitel 5 skulle du oprette 2 sider: En hvor man skulle indtaste et navn og den næste, hvor ens navn ville blive vist på skærmen.

Men prøv nu at gå ind direkte på siden vis.php og se, hvad der sker.
Alt efter hvordan PHP er blevet installeret får du nu vist en fejl (fordi variablen $navn ikke eksisterer) eller du får bare vist sætningen uden det forventede navn. Med lidt kontrol kan dette undgås.

Der er flere forskellige måde at lave kontrol på, men en af de mest grundlæggende er brugen af funktionen if (oversat til dansk: hvis). (Helt korrekt er if ikke en funktion men en sætnings- eller betingelses-konstuktion).

Syntaks

Den simple måde at bruge if på er som følger:

<?php
if (et udtryk)
    kommando 
?>

Den måde if oftest bliver brugt på, er når man har brug for at udfører flere kommandoer efter hinanden.

<?php
if (et udtryk)
{
	kommando 1;
	kommando 2;
}
?>

Her bliver man nødt til at "omslutte" alle kommandoerne med krøllede parenteser: { og }

Sætningen (et udtryk) står for en betingelse som enten kan være sand eller falsk. Hvis betingelsen er sand, så bliver kommandoerne udført ellers ikke.

Nok snak. Nu skal du prøve det i praksis.

Opret ny mappe og kopier filer

Du skal bruge de to sider du oprettede i Kapitel 5.

  1. Opret en ny mappe. Kald den form2
  2. Åbn mappen form1
  3. Åbn siden index.htm og gem den som index.php i mappen form2
  4. Åbn siden vis.php og gem den som vis.php i mappen form2

Rediger vis.php

Du skal nu oprette en kontrol med om brugeren har indtastet noget i feltet $navn. Hvis ikke brugeren har det, skal brugeren automatisk stilles om til startsiden (index.php), med besked om at indtaste navn.

  1. Skift til siden vis.php
  2. Indsæt et par tomme linier foroven og skriv således:
    <?
    if(empty($_GET['navn']))
    {
    header("Location: index.php");
    exit;
    }
    ?>
    
    OBS: Der må ikke være tomme linier over koden <?!!!!! Forklaring:
    Funktionen empty() bruger vi til at kontrollere om variablen $_GET['navn'] (som kommer fra startsiden index.php) er tom. Hvis dette er rigtigt så bliver brugeren automatisk sendt til startsiden index.php. Vi sender brugeren tilbage til startsiden med funktionen header("Location: index.php");. Jeg forklarer ikke brugen af header her. Det kommer senere. For at PHP ikke skal køre resten af siden igennem, hvis $navn er tom, så bruger vi exit; til at stoppe kørslen.

Forbedring af kontrollen - Besked til bruger

Nu kunne det jo godt være, at brugeren ikke lige forstår, hvorfor han (eller hun) er blevet sendt tilbage til startsiden. Derfor skal du lige rette dette eksempel lidt til: Du skal sende en besked med tilbage til startsiden.

  1. Ret linie 4, så der kommer til at stå således:
    <?
    if(empty($_GET['navn']))
    {
    header("Location: index.php?advarsel=Skriv dit navn herunder");
    exit;
    }
    ?>
    
    Altså et spørgsmålstegn efterfulgt af: advarsel=Skriv dit navn herunder.
    På denne måde har vi oprettet en variabel med navnet advarsel og sendt indholdet (som er "Skriv dit navn herunder") tilbage til startsiden.
    Nu skal du bare ændre en lille smule på startsiden.

Rediger startsiden

  1. Åbn siden index.php
  2. På linie 10 (lige under afsnitsoverskriften <h2>) skriver du:
    <?
    if(!empty($_GET['advarsel']))
    {
    $advarsel = $_GET['advarsel'];
    echo "<p><b> $advarsel </b></p>";
    }
    ?>
    
    Læg mærke til udråbstegnet ( ! ) foran funktionen empty(). Dette betyder ikke. Oversat til dansk:
    Hvis ikke variablen $advarsel er tom, så skal advarslen vises på skærmen.
  3. Upload derefter siderne til din server (husk at oprette en mappe med navnet form2 på serveren før du uploader).
  4. Prøv at gå direkte ind på vis.php og se, hvad der sker.