WebThings - by Jan Weijers
Alle hoofdstukken...
Inhoudsopgave
Inleiding
Een eenvoudig HTML document
Afbeeldingen
Lijsten
Links
Tabellen
Frames
Formulieren
Cascading stylesheets
JavaScript
PHP programmeren
Server side includes
CGI & Perl
Speciale tekens
Kleurvoorbeelden
Meer informatie
Software
Recente toevoegingen
Alfabetische index
In dit hoofdstuk...
PHP verweven met HTML
Datum en tijd tonen
PHP is veeltalig
Datum van de huidige pagina
Datum van een andere pagina
Formulieren verwerken

 

 

Language choice...
You have chosen to use Dutch as your preferred language.Nederlands vlaggetje Click here to switch to English.

PHP programmeren

PHP, wat staat voor "PHP: Hypertext Preprocessor," is een veelgebruikte, open source scripttaal die verweven kan worden met HTML. De volledige documentatie van PHP is te vinden op www.php.net

PHP verweven met HTML

Invoegen van PHP in je pagina's is eenvoudig. Op de meeste webserver moet je het bestand een .php extensie geven in plaats van .html. Daardoor weet de webserver dat het bestand door PHP bewerkt moet worden. Op deze manier mix je PHP met HTML:

De tijd is: <?php echo time() ?> seconden sinds 1970...

De tijd is: 1490596731 seconden sinds 1970...

De tijd die je nu ziet is de Unix tijd, seconden sinds 1970. Langere PHP code kan ook zo met HTML worden gemengd:

De tafel van zeven:<BR>
<?php

   for ( $i=1; $i<11; $i++) {
      print $i . " x 7 = " . $i * 7 . "<BR>";
   }

?>

De tafel van zeven:
1 x 7 = 7
2 x 7 = 14
3 x 7 = 21
4 x 7 = 28
5 x 7 = 35
6 x 7 = 42
7 x 7 = 49
8 x 7 = 56
9 x 7 = 63
10 x 7 = 70

<?php vertelt PHP dat code daar begint, ?> geeft het eind van het script aan. In het eerste voorbeeld zie je het gebruikt van time(), een van de vele ingebouwde functies van PHP. Deze geeft de tijd in seconden sinds 1970, de Unix tijd. De echo en print functies doen hetzelfde, ze voeren iets uit naar de HTML pagina. Het tweede voorbeeld toont hoe je de variabele $i kunt gebruiken.

Elke regel in een PHP script eindigt met een puntkomma, tenzij er maar één regel in een script staat. Als een lezer je pagina bekijkt is niets van wat tussen <?php en ?> staat te zien. Ook niet als hij de bron van het bestand bekijkt. Alleen de resultaten van een print of echo functie verschijnen in de webpagina.

To the top

Datum en tijd tonen

PHP is erg nuttig om eenvoudige dynamische elementen in je pagina's te verwerken zoals het tonen van datum of tijd:

Welkom, vandaag is het <?php echo strftime("%A") ?> en de tijd is <?php echo strftime("%R") ?>.

Welkom, vandaag is het Monday en de tijd is 08:38.

De strftime() functie toont data en tijden. De functie heeft tenminste één argument nodig, een tekst om de datum te formatteren. Je hebt daarvoor veel opties, hier staan de belangrijkste:

%aafkorting van de dag
%Avolledige naam van de dag
%bafkorting van de maandnaam
%Bvolledige maandaam
%cvolledige datum volgens de ingestelde taal
%ddag van de maand als getal (01 tot 31)
%edag van de maand als getal ('1' tot '31')
%Huur volgens de 24-uurs klok (00 tot 23)
%Iuur volgens de 12-uurs klok (01 tot 12)
%mmaand als getal (01 tot 12)
%Mminuten
%p'am' of 'pm'
%rtijd, 12-uurs klok met 'am' of 'pm'
%Rtijd, 24-uurs klok
%Sseconden
%Thuidige tijd, gelijk aan %H:%M:%S
%udag van de week als getal
%Uweeknummmer
%xdatum volgens de ingestelde lokatie
%Xtijd volgens de ingestelde lokatie
%yjaar zonder de eeuw (00 tot 99)
%Yjaar met de eeuw
%Z or %z   naam of afkorting van de tijdzone

Je kunt een onbeprtk aantal van deze opties combineren in een strftime() functie.

<?php print "Vandaag is het: " . strftime("%a, %e %B '%y en de tijd is %H:%M:%S") ?>

Vandaag is het: Mon, 27 March '17 en de tijd is 08:38:51

De strftime() functie print de tijd op het moment dat de functie aangeroepen wordt. Je kunt de strftime() functie een tweede argument meegeven, de tijd in seconden sinds 1 januari 1970. Dat is de standaard Unix manier om de tijd vast te leggen. Bijvoorbeeld, 13 december 2003 is 1071270000:

<?php print "Een andere datum was " . strftime("%A, %d %B %Y", 1071270000) ?>

Een andere datum was Saturday, 13 December 2003

To the top

PHP is veeltalig

In de bovenstaande voorbeelden was de uitvoer van PHP in het Engels maar PHP spreekt prima Nederlands. En heel veel andere talen. Je gebruikt de set_locale() functie om er een te kiezen:

<?php
   setlocale(LC_ALL, "fr_FR");
   print strftime ("%A %d %B") . "<BR>";
   setlocale(LC_ALL, "nl_NL");
   print strftime ("%A %d %B");
?>

Monday 27 March
Monday 27 March

Dit is heel handig als je site in een andere taal dan het Engels is. Omdat ik in het voorbeeld hierboven als laatste setlocale(LC_ALL, "nl_NL") gebruikt heb, zijn alle volgende voorbeelden ook in het Nederlands. Dat blijft zo tot je met de set_locale() functie een andere taal kiest.

To the top

Datum van de huidige pagina

Met PHP kun je heel makkelijk de datum laten zien waarop de huidige pagina voor het laatst is aangepast. De getlastmod() functie geeft die tijd in Unix formaat en die kun je doorgeven aan de strftime() functie:

<?php print "Deze pagina is voor het laatst bijgewerkt op: " . strftime ("%A %d %B %Y", getlastmod()) ?>

Deze pagina is voor het laatst bijgewerkt op: Saturday 02 June 2012

Als je het bestand middels FTP op een webserver hebt gezet, krijg je waarschijnlijk de datum te zien van de laatste upload, niet de datum waarop het bestand voor het laatst is bewerkt.

To the top

Datum van een andere pagina

Om de datum te krijgen waarop een andere pagina voor het laatst is aangepast moet je iets meer werk doen:

<?php
   $filename = 'index.php';
   if (file_exists($filename)) {
    echo "$filename werd voor het laatst bewerkt op " . strftime("%A %d %B %Y.", filemtime($filename))
   }
?>

index.php werd voor het laatst bewerkt op Saturday 02 June 2012.

Dit kleine script gebruikt eerst de file_exists() functie om te controleren of het bestand bestaat. Als dat zo is wordt de filemtime() functie aangeroepen om de datum op te halen waarop het bestand voor het laatst is bewerkt. Je kunt deze functies alleen gebruiken voor bestanden die op dezelfde server staan als je script.

To the top

Datum afhankelijke pagina's

Met de datum en tijd functies van PHP kun je gemakkelijk interactieve pagina's maken. Kijk eens naar deze twee voorbeelden:

<?php
   if ( strftime("%H") < 12 ) {
      echo "Goedemorgen!";
   }
   elseif ( strftime("%H") < 18 ) {
      echo "Goedemiddag!";
   }
   else {
      echo "Goedenavond!";
   }
?>

Goedemorgen!

<?php
   if ( strftime("%m") == 12 ) {
      echo "December aanbod: 5 voor de prijs van 6!";
   }
   else {
      echo "Speciaal aanbod: 6 voor de prijs van 5!";
   }
?>

Speciaal aanbod: 6 voor de prijs van 5!

In beide voorbeelden zie je het gebruik van de "if, elseif, else" structuur. If en elseif worden gevolgd door een logische uitdrukking. Else wordt uitgevoerd as geen van de logische uitdrukkingen waar blijkt te zijn. Het aantal "elseif" uitdrukkingen wat je kunt gebruiken is onbeperkt.

To the top

Formulieren verwerken

In het hoofdstuk over formulieren gebruik ik een simpel script dat de resultaten van de formulieren verzamelt en afdrukt in een tabel. Dat script ziet er zo uit:

<HTML><HEAD><TITLE>Form output tester</TITLE></HEAD><BODY>

<TABLE BORDER="1" CELLPADDING="3">
<TR><TD><B>Name / Naam</B></TD><TD><B>Value / Waarde</B></TD></TR>

<?php
   foreach ( $_POST as $i => $j ) {
      $i =substr(strip_tags($i), 0, 20);
      $j =substr(strip_tags($j), 0, 255);
      // print each line
      print "<TR><TD>$i</TD><TD>$j</TD></TR>";
   }
?>

</TABLE>

<P><A HREF="" onClick="self.close()">Close window / Sluit venster</A></P>

</BODY></HTML>

Het script maakt gebruik van de voorgedefinieerde variabele $_POST. $_POST is een reeks. Als een formulier gebruik maakt van een METHOD="post" attribuut, stopt PHP alle invoer van dat formulier in de reeks $_POST. Bijvoorbeeld, als je een tekstveld hebt wat "e-mail" heet, vind je de invoer terug in $_POST['e-mail'].

Omdat $_POST een reeks is, kun je de foreach structuur gebruiken om de inhoud van de reeks op te halen. foreach neemt een voor een de waarden in $_POST en, in het bovenstaande vooorbeeld, stopt de naam van de waarde in $i en de waarde zelf in $j. Hierdoor is het script flexibel en haalt alle invoer uit het formulier ongeacht hoeveel velden er zijn en hoe die heten.

Het script gebruikt twee ingebouwde PHP functies voor beveiliging. De strip_tags() functie verwijderd alle PHP en HTML elementen. Daarmee voorkom je dat kwaadwillende gebruikers scripts of riskante HTML elementen in het formulier verwerken. De tweede veiligheidsmaatregel is het beperken van de lengte van de invoer met de substr() functie. Deze functie vraagt drie argumenten. De eerste is een tekst, de tweede het beginpunt en de derde is een getal wat de lengte aangeeft van de tekst die je over wilt houden. Bij het beginpunt is 0 het eerste karakter van de tekst. $i wordt dus beperkt tot 20 tekens en $j tot een maximum van 255 tekens. Je kunt in dit voorbeeld ook zien dat je probleemloos functies binnen functies kunt gebruiken.

Tenslotte gebruikt dit script de print functie. Je kunt hier zien hoe de twee variabelen midden in een tekst gebruikt kunnen worden en toch goed printen.

Dit is een heel eenvoudig voorbeeld van het verwerken van formulieren. In de praktijk zul je vaak de ingevoerde gegevens willen controleren, bijvoorbeeld om te zien of alle verplichte velden ingevuld zijn. In de meest gevallen wil je de invoer ook verwerken, bijvoorbeeld opslaan in een database of per e-mail versturen.

To the top

 

Reacties welkom...

Ik hoor graag je mening over deze gids, informatie die je graag toegevoegd zou willen zien of eventuele fouten die je hebt ontdekt. Klik hier.

 

Open standaarden...

Deze site is volledig conform de open standaarden van het World Wide Web Consortium (W3C). Je kunt op de logo's klikken om dat te verifiëren.

HTML 4 logo

CSS logo

 

 

©1995-2017 Jan Weijers, the Netherlands. All rights reserved.
No reproduction by any means or in any language without prior permission of the author.