23 september 2017
Webdesign & <? php /* CSS
Studies
 
 
 
 
 
 
Hoe maak je een website ? 3. Een website maken met PHP 23 juli 2009

Welkom bij deze beginnershandleiding PHP. In deze handleiding leer je stap voor stap hoe je een website kan opzetten met PHP.

Wat is PHP ?

PHP is een programmeertaal een zogenoemde scripttaal om dynamische websites mee te programmeren. Het verschil met een website gewoon in HTML maken is dat je dan de kant en klare HTML pagina's (bijvoorbeeld gemaakt in een editor) op de server zet die dan direct opgevraagd worden als iemand je site bezoekt. Dit heet een statische website. Als je met PHP werkt zet je PHP bestanden op de server die op het moment van het bezoek de HTML pagina's creeren aan de hand van allerlei voorwaarden. PHP pagina's hebben de extentie .php.

De voordelen van een PHP website boven een statische website

Geen derde partij tools meer

De mogelijkheden van PHP zijn eigenlijk onbeperkt. Voor mij was een rede om over te stappen op PHP dat ik op mijn website vaak een derde partij teller of gastenboek gebruikte. Je kent dat wel, bijvoorbeeld een gastenboek van Bravenet. Tik maar is free+guestbook in in Google. Je moet dan een stukje code in je HTML pagina's verwerken waarmee je linkt naar dat gastenboek. Maar het draait dan dus niet op je eigen website maar op de webruimte van die organisatie die dat aanbiedt. Meestal heb je daar dan een Members Aarea waar je inlogt om bijvoorbeeld de achtergrondkleur en dergelijke in te stellen. Zelfde geldt voor zo'n teller. Allemaal geweldig maar als je dus PHP tot je beschikking hebt op je eigen webruimte kun je dus zelf aan de slag met een gastenboek, teller, forum, verwerking van formulieren etc. Je kunt die dan zelf schrijven/programmeren of ergens anders downloaden en draaien op je eigen site. De gegevens worden dan ook in je eigen database opgeslagen en de bezoeker blijft om het gastenboek te bezoeken ook op je eigen website.

De inhoud van je site staat in een database

Natuurlijk houdt het niet op bij een gastenboek, forum of teller. Denk maar is aan een volledige webwinkel, een fotoalbum, een weblog/blog, een contact formulier waarvan de gegevens naar je ge-emaild worden en in de database kunnen worden ingevoerd. Ook kun je rekenen met PHP. Veel websites draaien tegenwoordig op een CMS gemaakt in PHP. Niet langer hoef je losse HTML bestanden te maken met daarin de inhoud van je site maar voortaan wordt de inhoud van je site opgeslagen in een database. Met een CMS kun je die informatie meestal via een beheerdersgedeelte invoeren in de database en het CMS leest ze ook weer uit en genereert de juiste pagina's. Ook kun je met PHP allerlei andere gegevens in en uit lezen via een database zoals specifieke instellingen voor een website, gebruikersnamen en wachtwoorden of om maar wat geks te noemen, gamescores voor een online game.

Sneller wijzigingen maken op je website

Een ander wel heel groot voordeel van PHP is vergelijkbaar met dat van het gebruik van CSS. Als je gebruik maakt van een CSS stlyesheet hoef je maar een keer in dat stylesheet een kleur te veranderen en hij is veranderd op al je HTML pagina's. Soortgelijk kun je met PHP nog een aantal stappen verder gaan. Als je met losse HTML pagina's werkt moet je telkens op iedere pagina ook weer je menu plaatsen en als je een pagina toevoegt aan je site moet je die op iedere pagina weer toevoegen aan dat menu. Met PHP voeg je eenmaal het bestand menu.php in (mag ook een andere naam hebben) en je hoeft je menuwijziging alleen maar te maken in menu.php. Dit is iets wat voorheen alleen mogelijk was via het gebruik van frames. Ook voor het head of footer gedeelte van je site kun je soortgelijke truukjes uithalen voor je site. Een website onderhouden wordt dus met PHP ineens een stuk makkelijker.

Hoe werkt PHP ?

Technische uitleg

PHP bestanden zet je net als HTML pagina's met FTP op een webserver. In de PHP pagina's staat je PHP code die je geschreven hebt. Daar tussendoor staat ook HTML die aan de hand van voorwaardes bijvoorbeeld waar iemand zich bevindt op je site of bijvoorbeeld aan de hand van WIE zich op je site bevindt (na inloggen) getoond wordt. Op de webserver draait de PHP software die de opgevraagde PHP pagina's opent en de PHP code verwerkt/interpreteert en alle HTML samenvoegt tot een HTML pagina. Die pagina wordt vervolgens naar de browser gestuurd. Niet in alle gevallen wordt een HTML pagina gegenereerd. Het kan net zo goed zijn dat de PHP opdracht luidt om te redirecten naar een andere website of bv om het IP van de bezoeker te blokkeren. Ook al zie je dus in de adresbalk van je browser bijvoorbeeld staan index.php, als je naar de broncode kijkt zie je alleen HTML en geen PHP code. Zou je echter naar hetzelfde bestand kijken op je eigen pc dan zie je daar je programmeer code en HTML staan. Een bezoeker van je website kan dus nooit bij je PHP code komen. Dit houdt overigens niet in dat een bezoeker je PHP code niet kan beinvloeden om je site of database proberen te hacken. Dat is weer een andere verhaal en hoort bij het onderdeel veilig programmeren.

Aan de slag met PHP

Basiskennis

Als je met PHP wilt gaan werken en zelf PHP pagina's wilt gaan schrijven zul je een redelijke basiskennis van HTML moeten hebben en algemene kennis van hoe een website opgebouwd is. Zonder die kennis kun je het wel vergeten. De rest leer je spelenderwijs vanzelf.

PHP leren

PHP kun je op meerdere manieren leren. Via online voorbeelden/tutorials kun je een hoop over PHP leren. Ook kun je op diverse plaatsen PHP scripts downloaden en de code ervan bekijken of direct gebruiken op je eigen site. Ook een goed boek over PHP kan bijdragen aan je PHP kennis en hopelijk natuurlijk ook deze website. Hoe snel je dingen oppakt hangt een beetje van jezelf af. Soms begrijp je een bepaald onderdeel misschien nog helemaal niet zoals bijvoorbeeld het werken met functies of arrays maar als het kwartje dan ineens valt vind je het geweldig. Zo snapte ik in het begin niks van arrays maar toen ik het eenmaal doorhad vond ik het geweldig. Voor iedere PHP code kun je hulp opvragen via google bv php+array of php+eregi of php+count etc. Je vind dan altijd wel een website die het verder uitlegt. Het eerste zoekresultaat is meestal een pagina op PHP.net, de officiële PHP website waar je meer uitleg over het gebruik van de gezochte functie vindt.

Voorwaarden, variabelen en functies

Als we het nog wat technischer maken komt het er op neer dat je in de PHP code gebruik maakt van voorwaarden door middel van if en else, als dit.., doe dan dat... Een simpel voorbeeld: Als die persoon inlogt maak dan de pagina groen of bijvoorbeeld: maak dan een link naar zijn profiel pagina. Ook maak je variabelen. Aan variabelen ken je een bepaalde waarde toe en die kun je overal op je site gebruiken. Ook maak je gebruik van functies. Functies zijn een verzameling van voorwaarden en variabelen en geven een bepaald resultaat. In principe komt het er op neer dat als je dezelfde code op meerdere plaatsen gebruikt je het dan in een functie zet. Op die manier val je zogezegd niet in herhaling. Ga je aan de slag met PHP dan leer je dus echt programmeren voor het Wereldwijde Web !

Meerdere wegen naar Rome

Als het om PHP gaat leiden er meerdere wegen naar Rome. Zo zijn er meerdere functies waar je hetzelfde mee kan doen en er zijn ook meerdere schrijfwijzes voor PHP code die uiteindelijk toch hetzelfde resultaat op het scherm van de bezoeker geven. Er zijn korte en langere manieren om een stukje code te schrijven en rommelige en nette manieren. Dit zal ik met voorbeelden nog verder verduidelijken.

Programmeren en foutmeldingen

Een ding is PHP wel heel streng in. Als het fout is is het ook echt fout en werkt je script meestal niet en krijg je een PHP error. De meest voorkomende fouten zijn het vergeten van een ; aan het einde van een regel, het vergeten te sluiten of te veel plaasten van } of ) of juist per ongeluk een sluitingshaakje teveel, het vergeten van een comma bijvoorbeeld in een array of het vergeten te escapen van aanhalingstekens. 
De regelnummers die je bij je fout krijgt in je browser geven niet altijd de juiste plek aan waar precies de fout zit. Iets om rekening mee te houden. Vaak zit de fout al in een eerder gelegen stukje code. Gebruik altijd een editor met syntax highlighting zodat je aan de verschillende kleuren van je code ook kan herkennen waar het eventueel mis is gegaan. Je kunt daarbij als eerste controleren op bovenstaande meest gemaakte fouten. Zeker in het begin als je net zelf PHP code gaat scrhijven zul je veel van zulk soort foutjes maken, maar als je de fout ontdekt hebt ben je weer blij en kun je weer verder.

Eerste opzet voor een website in PHP

Basiskennis HTML en CSS

Zoals hierboven al kort genoemd zul je als je met PHP wilt gaan werken en zelf PHP pagina's wilt gaan schrijven een redelijke basiskennis van HTML en CSS moeten ontwikkelen omdat PHP als output dus in de browser HTML moet produceren. Je moet HTML dus kunnen lezen en begrijpen en eigenlijk ook wel kunnen schrijven. Hetzelfde geldt voor CSS want een site zonder CSS maken ik tegenwoordig praktisch niet meer mogelijk en het houdt je HTML code schoon. Als je bovengenoemde kennis al hebt dan weet je dat een webpagina altijd is opgebouwd uit het <head> </head> gedeelte en het <body > </body> gedeelte. In het head gedeelte staat de titel metatag en andere metatags die je wilt gebruiken en eventuele JavaScript code en eventuele CSS (bestanden) die je wilt gebruiken op je pagina. In het body gedeelte komt de uiteindeijke inhoud van je pagina. Het is weer geheel aan jouw welke versie van (X)HTML je gebruikt en welk doctype je bovenin je pagina plaatst.

Je eerste PHP pagina

Op de meeste websites wordt als eerste voorbeeld het "Hello World" script getoond. Dit heeft met een stukje geschiedenis van het internet te maken. Ik sla dit voorbeeld hier over want je komt het vast nog wel ergens tegen.
Net als HTML heeft PHP openings en sluitingstags. Hierdoor weet de interpreter van he dit is een stukje PHP. PHP code open je met <?php en sluit je met ?>. Je mag in je PHP pagina gewoon HTML plaatsen en daar tussendoor PHP code plaatsen. Je kan PHP code plaatsen VOORDAT je je HTML pagina opent. Vervolgens begin je gewoon met de gebruikelijke HTML (doctype zelf toevoegen en verder aanpassen). Vervolgens kun je tussen je HTML door PHP code plaatsen en de pagina weer sluiten met de gebruikelijke HTML. In principe noem je dit bestand index.php net als dat je op de oude manier index.html gebruikte.

<?php je code hier ?>

<html>
<head>
<title><?php je code hier ?></title>
<!-- (overige HTML-code zoals andere metatags, links naar een CSS of JavaScript bestand)-->
</head>
<body>

<?php je code hier ?>

</body>
</html>

Ook voor de overige metatags kun je nog PHP code gebruiken bv voor de description-tag die kan verschillen afhankelijk van de pagina of een ander stylesheet als men zich op een specifieke pagina bevindt etc. Je bepaalt het helemaal zelf met PHP.

Werken met include en require

Om je code overzichtelijk te houden van je website kun je gaan werken met include. Met include kun je je code spreiden over meerdere PHP pagina's en invoegen wanneer je die nodig hebt. Dit maakt het onderhoud van je site een stuk makkelijker en overzichtelijker.

Je nieuwe code kan er dan zo uitzien, maar ook dat bepaald je weer helemaal zelf wat je appart zet en wat niet:

<?php include("functies.php"); ?>

<html>
<head>
<?php include("metatags.php"); ?>
<?php include("css.php"); ?>
<?php include("scripts.php"); ?>
</head>
<body>
<?php include("header.php"); ?>

verdere html

<?php include("menu.php"); ?>

verdere html

<?php code voor de inhoud van je pagina ?>

<?php include("footer.php"); ?>

</body>
</html>

Als er verder geen HTML tussen de includes staat kun je ook 1 doorlopend PHP script maken dus even vanaf het body gedeelte:

<?php

include("header.php");

include("menu.php");

php code voor de inhoud van je pagina

include("footer.php");

?>

Er zijn meerdere schrijfwijzen voor include. De volgende schrijfwijzen zijn ook geldig:

include "bestand.php";

include 'bestand.php';

include ('bestand.php');

Vraag me niet waar het verschil zit want in ieder script wordt het weer anders gedaan.

De meeste gebruikte is wel:

include ("bestand.php");

requiere of include

Hetzelfde kun je ook bereiken met require ipv include. Het verschil is dat als je require gebruikt PHP stopt met de uitvoer van de rest van het script als het bestand wat ingevoegd moet worden niet gevonden kan worden. Soms is het verstandig om require_once te gebruiken. PHP controleert dan eerst of het bestand niet al op een andere plek is ingevoegd zodat het niet twee keer wordt ingevoegd en zo voor fouten zorgt.

Apparte bestanden maken voor apparte onderdelen

Meestal heb je op je site specifieke onderdelen zoals een contact pagina of (even als voorbeeld) een fotoalbum. In plaats van al die code in je ene index pagina te gooien plaats je die code in apparte bestanden dus bv contact.php en fotoalbum.php. Er zijn vervolgens 2 wegen naar Rome. Of je linkt naar contact.php zodat de bezoeker echt naar contact.php gaat. Je moet dan ook weer zorgen dat alle juiste HTML ook weer in die pagina aanwezig is OF je include contact.php IN je index pagina ALS je het pas nodig hebt. Hoe dat moet leg ik hieronder verder uit. Je hoeft dan alleen maar je PHP code in deze extra pagina's te plaatsen en niet weer <html><head> etc. Het bestand wordt tenslotte ingevoegd in een bestand waar deze HTML al aanwezig is.

Wat je in ieder geval moet weten

HTML of tekst naar de browser sturen met echo

In PHP gebruik je de functie echo om output naar de browser te sturen. Een simpel voorbeeld:

echo 'tekst';

Ook hier zijn weer meerdere schrijfwijzen mogelijk. Wat ook kan is:

echo "tekst";

De onderste is misschien de meest gebruikte maar ze hebben beide hun charmes. Als je HTML met echo weergeeft moet je de quotes escapen met een backslash. Voorbeeld:

echo "<table width=\"100%\">";

Die backslash is vervolgens niet zichtbaar op je uiteindelijke HTML pagina maar hierdoor loopt het script niet vast.

Als je echo gebruikt met enkele quotes moet je een backslash plaatsen in je string (het tekstgedeelte) als daarin een enkele quote voorkomt. Het tegenovergestelde probleem dus van bovenstaande. Voorbeeld:

echo 'Hij heeft veel foto\'s in zijn album';

Als je meerdere regels HTML met echo weergeeft krijg je die onder elkaar in je uiteindelijke broncode door in je HTML \n te plaatsen op de plekken waar je wilt dat de HTML naar een volgende regel gaat. \n betekent new line. Ik zal dit in een ander onderdeel van deze website nog is verder uitleggen met wat experimenteer voorbeeldjes, maar dan weet je nu alvast wat het inhoudt als je \n tegenkomt in een script. 1 ding is hier dus wel belangrijk in verband met enkele of dubbele quotes gebruiken voor echo: \n werkt niet als je echo gebruikt met enkele quotes dus

echo 'tekst\n';

Er komt dan gewoon \n op je scherm te staan ! Let op. Aan het einde van echo komt altijd een punt comma ;

Let op dat je niet hele blokken HTML gaat weergeven met echo. Dus geen:

<?php

echo '<html>
<head>
<title>titel</title>
</head>';

overige php code

?>

Dit kan wel maar is niet nodig. Goed is dus:

<html>
<head>
<title>titel</title>
</head>

<?php

overige php code

?>

Plaatst die HTML buiten de PHP code tenzij dit echt niet anders kan en bijvoorbeeld van allerlei voorwaarden afhankelijk is of die HTML moet worden weergegeven. 1 regel of enkele regels HTML is dus niet erg en is ook juist wel gebruikelijk in scripts, maar onnodig HTML met echo weergeven zorgt voor extra serverbelasting omdat het allemaal door de PHP parser moet gaan.

Werken met variabelen en de if/else statement

In PHP maak je heel veel gebruik van variabelen. In variabelen sla je informatie op die je later weer gebruikt in je script. Je kunt een variabele vergelijken met een laadje in een kast. Er kan van alles inzitten en er kunnen 1 of meerdere dingen inzitten. Natuurlijk bepaal jij zelf wat er in een variabele zit. Dit met uitzondering van server variabelen. Dit zijn vaste variabelen die je door je site heen kan gebruiken en door de webserver gemaakt worden. Je kan die bekijken via phpinfo();.
Een variabele begint altijd met het dollar teken: $. Verder zijn variabelen aan een aantal regels gebonden:

  • Ze moeten altijd beginnen met een letter OF een _ en dan letters.
  • Ze mogen geen spaties bevatten.
  • Ze mogen niet beginnen met een cijfer.

Goed is dus:

$pagina

of

$veld2

Fout is

$2a

Ook zijn variabelen hoofdlettergevoelig. $pagina is een andere variabele dan $Pagina. Verder mag je dus zelf helemaal weten wat voor namen je aan je variabelen in je scripts geeft en je mag de namen van variabelen in een script wat je van een voorbeeld site gebruikt ook aanpassen naar je eigen wensen als je maar oplet dat je ze dan door het hele script heen goed veranderd. Handig is wel als je variabelen namen geeft die voor jezelf makkelijk herkenbaar zijn. Misschien zegt het je nu nog niet zoveel maar als je een aantal scripts hebt gezien begin je wel hoe variabelen ongeveer werken.
Je slaat informatie op in de variable met het = teken.
Een aantal voorbeelden. Let op er zijn weer verschillende schrijfwijzen mogelijk. Die laat ik hier toch zien zodat je later in je scripts fouten voorkomt en ook begrijpt wat er in andere scripts gebeurt.

$naam = 'pietje';

En wat ook weer mag is:

$naam = "pietje";

Je kunt met variabelen ook rekenen en verschillende variabelen kun je in een zin of in een deel HTML code invoegen/verwerken en zelfs aan elkaar plakken.

Voorbeeld 1:

echo $naam;

Voorbeeld 2:

echo '<p>Zijn naam is '.$naam.'</p>';

Gek genoeg hoef je bij dubbel quotes geen ". om de variabele heen te zetten en kan dit dus ook:

echo "<p>Zijn naam is $naam</p>";

Verstandiger is echter om het jezelf van het begin af aan goed aan te leren deze te gebruiken:

echo "<p>Zijn naam is ".$naam."</p>";

Een voorbeeld met een kleur aan een variabele toekennen. In een echt script kan de kleur dan bijvoorbeeld de ene keer rood zijn en dan weer blauw of een andere kleur afhankelijk van de situatie.

$kleur = 'red';

Schrijfwijze 1:

echo '<span style="background-color: '.$kleur.';">tekst</span>';

Schrijfwijze 2:

echo "<span style=\"background-color: $kleur;\">tekst</span>";

Schrijfwijze 3:

echo "<span style=\"background-color: ".$kleur.";\">tekst</span>";

Variabelen die gevuld worden met een getal hoeven niet omringt te worden door quotes.

$id = 1;

Ook kan een variabele de waarde true of false hebben waarbij ook TRUE en FALSE en True en False allemaal werken zogezegd.

$controle = TRUE;

True en false worden vaak gebruik in combinatie met functies. Bijvoorbeeld: als dat woord aanwezig is in dat stukje tekst dan is de waarde TRUE.

Je kunt met speciale PHP functies controleren of een variabele wel bestaat en of hij leeg is of niet. Dit die je met isset() en empty(). Dit zul je vast nog wel in codes tegenkomen. Dat "als" doe je met het woordje if en anders dat doe je met het woordje els. Dit heet de if/else statement.

Een praktisch voorbeeld:

if (isset($naam)) {
echo '<p>Zijn naam is '.$naam.'</p>';
}
else {
echo 'Hij heeft nog geen naam opgegeven';
}

Werken met $_GET

GET is een superglobal variabele en is gevuld met de waarden uit je internet adres. Als je naar verschillende website adressen kijkt zie je vaak achter.php een ? met nog allerlei andere waarden. Die waarden kun je opvragen via $_GET. Een voorbeeld:

http://www.jewebsiteadres.nl?page=bepaaldepagina&id=2

De variabelen die je dan hebt zijn page en id. Je bent er weer helemaal vrij in op wat voor manier je je adres gaat vormgeven: page mag ook pagina zijn of iets totaal anders en id kan ook iets anders zijn maar is wel veelgebruikt. Ook kun je je adres nog veel langer maken dan bovenstaand voorbeeld. Het hangt helemaal af van je situatie dus hoe je je website opbouwt qua structuur. Als je maar onthoudt dat na .php altijd een ? komt en de variabele die daarna komen plak je er aanvast met &.

Als we teruggaan naar het voorbeeld van de volkstuin, in eerdere delen genoemd: je hebt een website over groente en over fruit. Groente en fruit zijn een categorie en bijvoorbeeld sla is de uiteindelijke pagina. Een website adres kan dan zijn:

http://www.jewebsiteadres.nl?cat=groente&soort=sla

Maar wat ook kan is:

http://www.jewebsiteadres.nl?onderwerp=groente&pagina=sla

Je mag het zo gek maken als je wilt dat is helemaal aan jouw om te kiezen hoe je je adres variabelen opbouwt en noemt. Zo kan in bovenstaand voorbeeld dus onderwerp ook ond zijn bijvoorbeeld. Het is zowel voor jezelf als de bezoeker van je website wel verstandig om het netjes te houden en duidelijk. Ook helpt het als je woorden gebruikt ipv een id omdat woorden ook voor zoekmachines meer zeggen dan een pagina die via een id opgevraagd wordt.

http://www.jewebsiteadres.nl?onderwerp=groente&id=3

Het is wel begrijpelijk dat er met id's wordt gewerkt want deze komen overeen met een veld in een database. Zo kan 3 dus bijvoorbeeld het derde veld zijn in je groente tabel in je database waarin de gegevens over sla staan. Ik zou dus persoonlijk toch kiezen voor pagina=sla en dan intern deze met een array omzetten naar het juiste id en dan daarmee de informatie over de sla uit de database halen.

Als we even blijven bij dat voorbeeld, want we waren bezig met $_GET. Zowel het onderwerp als de pagina kun je ophalen met  $_GET:

$_GET['onderwerp'];

$_GET['pagina'];

Aan de hand van het onderwerp weet je nu dat de informatie gehaald moet worden uit je groente tabel in je database en dat je de informatie wilt hebben uit die rij waar de sla in straat.
Ik loop nu vooruit op het onderwerp databases waarover zometeen meer. Het gaat er nu om dat je bepaalde basisprincipes begint te begrijpen. De uiteindelijke code komt later.

Dan nog even terug naar het voorbeeld van de contact pagina of het fotoalbum. Stel het adres is:

http://www.jewebsiteadres.nl?page=fotos

Dan kan je code er zo uitzien:

if (isset($_GET['page']) AND $_GET['page'] == "fotos") {

include ("fotos.php");

}

Tekst (inhoud) weergeven op je website

Het gebruik van een database

De meest gebruikelijke methode om de tekst van de pagina's op je website weer te geven is door die in te voeren in een MySQL database en daar weer uit te lezen en weer te geven op het scherm. Je kunt een database een beetje vergelijken met een grote kast in de vorm van een bol met allemaal laadjes. Ieder laadje vertegenwoordigd een blok aan informatie waar telkens informatie bijgevoegd kan worden of uit verwijderd kan worden. In de praktijk is ieder laadje een database tabel met rijen en kolommen. Zo kan je een tabel hebben voor adres gegevens, een tabel voor registratie/account gegevens, een tabel voor artikelen/studies etc. Jij bepaald zelf hoe deze tabellen eruit zien, welke velden ze hebben en welke informatie erin komt. In PHP is hier een handig hulpmiddel voor genaamd phpMyAdmin. Je logt daar in met de database gebruikersnaam en wachtwoord die je van je provider hebt gekregen en dan kun je tabellen gaan maken. Met een verbindingsscript in je PHP pagina's maak je met dezelfde gebruikersnaam en wachtwoord vanuit je PHP pagina's automatisch verbinding met de database en kun je er infomatie (eventueel via formulier) in opslaan en via selecteer opdrachten (query's) weer uit opvragen.

Tekst ophalen uit een database

Voorheen stond de tekst omringt door HTML in je HTML bestanden. Nu schrijf je de HTML in je PHP bestand, je haalt de benodigde tekst voor je pagina uit de database en plaatst die tussen de nodige HTML en vervolgens wordt het als 1 doorlopend geheel weergegeven op het scherm van je bezoeker. Dit wordt dus bedoeld met dynamische webpagina's. Ze worden on the fly gecreëerd aan de hand van de informatie die in het website adres is te vinden..

Alternatieve methodes van tekst weergave in PHP

Naast de opslag van de tekst voor je webpagina's in een database zijn er nog een aantal alternatieve methoden, met de nadruk op alternatief, die je in ieder geval tijdelijk zou kunnen gebruiken bijvoorbeeld tijdens de opzet van je website zolang je nog bezig bent met het opzetten van je database en aan het leren bent hoe je daar informatie uit moet halen via query's.

Alternatieve methode 1:
Via het includen van tekstbestanden. Je zet de tekst van een artikel/studie in een tekstbestand en include dat op de juiste plaats. Dus bijvoorbeeld:

include ('naamstudie.txt');

Alternatieve methode 2:
Rechtstreekst IN je PHP bestanden. Je plaatst de tekst IN je PHP bestand en met echo geef je de tekst weer. Dus bijvoorbeeld:

echo 'hier je tekst';

Alternatieve methode 3:
Via zogenoemde definitie bestanden waarin je constanten definieert. Klinkt een beetje hocus pocus misschien maar is erg leuk om mee te werken, Vaak worden deze in een CMS gebruikt om korte definities weer te geven op een site dus bijvoobeeld "Klik hier om in te loggen" of "Maak account" etc. De gebruiker van het CMS kan dan bijvoorbeeld "Maak account" veranderen in "Lid worden" zonder dat hij in de PHP code hoeft te gaan rommelen. Deze kunnen ook voor grotere lappen tekst gebruikt worden.

Voorbeeld:

Je maakt een bestand wat je bijvoorbeeld tekst.php noemt en daarin definieer je je constanten:

define("INLOGGEN","Klik hier om in te loggen");
define("ACCOUNTMAKEN","Lid worden");
etc

Dit bestand include je in je index bestand.

Een constante geef je vervolgens weer met echo waardoor de tekst die daarbij hoort weergegeven wordt op het scherm. Je kunt het dus in zekere zin wel vergelijken met een variabele.

echo INLOGGEN;

Je kunt ze ook op dezelfde manier invoegen in tekst als dat je dat met variabelen doet.

Tekst invoeren in je database

Het gebruik van formulieren

Een veel gebruikt onderdeel van een website is het gebruik van invoer formulieren om gegevens in je database op te slaan. Natuurlijk gaat niet alles via formulieren want je kan ook achter de schermen in je PHP code informatie vastleggen over de bezoekers van je website zoals hun IP adres, waar ze zich bevinden op je website en welk pad ze volgen, meest bezochte pagina's, gebruikte zoekopdrachten etc. Dit wordt ook wel website of visitor tracking genoemd en is bedoeld om het gedrag van een bezoeker te bestuderen zodat je je website beter op de bezoeker kan afstemmen.

Formulieren kunnen voor veel zaken gebruikt worden:

  • Een gebruikersnaam registreren
  • Je aanmelden voor een evenement
  • Iets op een kalender zetten
  • Een bericht schrijven via een contactformulier
  • Een onderwerp of reactie in een forum schrijven
  • Een berichtje in een gastenboek plaatsen
  • Produkten selecteren in een winkelwagentje
  • Geavanceerd zoeken
  • Vragen beantwoorden van een enquete
  • Schrijven in een weblog

En last but not least:

  • Pagina's maken voor je website

Pagina's maken

Mijn aandacht gaat nu even uit naar het laatste onderdeel. Als je gewone pagina's wilt gaan maken op je website met een hoofdmenu en submenu links die linken naar je pagina's dan zul je een invoer formulier moeten schrijven voor je site zodat je de tekst van je pagina's kan invoeren in je database. Natuurlijk moet dit formulier beveiligd zijn met een gebruikersnaam en wachtwoord zodat alleen jij er gebruik van kan maken. Je kunt dit doen door een beheermap te maken en daarin je formulieren te plaatsen. Je kunt de gehele map wachtwoord beveiligen of de formulieren individueel beveiligen met een login formulier. Ik zal hier nog code voorbeelden van op de site plaatsen. Aanvullend kun je het nog is extra beveiligen met je IP adres.

CMS gebruiken om pagina's te maken of zelf maken

Nu komt het. Je staat nu dus voor een keus. Maak je dit zelf of ga je gebruik maken van een CMS, een Content Maganagement Systeem voor je website waarin dit allemaal al voor je geprogrammeerd is in PHP en kant en klaar is om te gaan gebruiken. Die keus is dus geheel aan jezelf en hangt er ook vanaf of je snel een website wilt opzetten (binnen een half uur) en informatie wilt gaan invoeren of dat je aan de slag wilt met het leren van PHP. Je staat dan nog wel voor de keuze welk CMS je gaat gebruiken. Misschien is Dutch CMS wel iets voor jouw. Speciaal door mij voor jouw geschreven.
Natuurlijk kun je ook een CMS gebruiken en aanvullend PHP gaan leren voor bijvoorbeeld het maken van een enquete of een teller of een gastenboek. Ook kun je tijdelijk nog van een alternatieve methoden gebruiken zoals hierboven genoemd bij "Alternatieve methode voor tekstweergave in PHP" totdat je alles wat beter onder de knie hebt. Het hangt er dus ook een beetje vanaf waar je je website precies voor wilt gaan gebruiken.

Database beheer

Ik sprak hierboven al even over phpMyAdmin. Als je een website hebt met PHP kun je meestal bij je provider inloggen op een service pagina waar je toegang hebt tot phpMyAdmin. In principe is phpMyAdmin bedoeld voor het beheren van je database, dus het maken van tabellen voor je pagina's en andere informatie, maar het kan ook ook als alternatieve methode gebruikt worden om pagina's in te voeren. Soms is dit wel is handig maar het is niet de gebruikelijke methode. Wel gebruik je het om de inhoud van je tabellen te bekijken, om wat waarden snel te wijzigen zoals een 0 in een 1 of om rijen (records) van waarden te veranderen en om rijen te verwijderen etc. Aanvullend kun je er ook rechtstreeks SQL commando's invoeren, de taal waarmee je communiceert met je database. Dat valt allemaal onder het beheer van je database. Je kunt je database ook als geheel altijd exporteren zodat je altijd een backup hebt van alle gegevens op je website.

Tot slot

Soorten webservers

Het gebruik van een MySQL database en PHP gebeurt meestal in combinatie met het besturingssysteem Linux en de Webserver Apache. Totaal noemen we dit LAMP = Linux, Apache, MySQL, PHP. Er zijn ook hostingproviders die PHP aanbieden op Windows server 2003 (of later versies) die speciaal opgezet kan worden als webserver met Internet Information Services en daarmee de Microsoft concurent is van de Apache Linux combinatie. Het geheel "kan" net zo goed functioneren als de LAMP combinatie maar mijn voorkeur gaat uit naar de laatste. Dit is dus wel iets om op te letten alvorens je je aanmeldt bij een hostingsprovider. Je kan daarachter komen door even op de hulp pagina's van een hostingsprovider te kijken of bij de details van een hostingpakket.

Je site offline testen in PHP

PHP pagina's moet altijd eerst geparsed worden door een webserver zoals hierboven uitgelegd. Dit houdt in dat je niet zomaar een PHP bestand wat op je Pc staat kan dubbelklikken op je Pc of openen in je browser om te kijken of "het" werkt, zoals je dit zou doen met een normaal .html bestand. Het PHP bestand zal dan waarschijnlijk openen in je editor. Als je het opent in je browser zal je waarschijnlijk allemaal code zien en niet wat je verwacht te zien. Er wordt dus niks gedaan met je PHP code omdat er geen webserver draait op je Pc die de PHP interpreteert.
Om je PHP scripts of gehele website offline te testen en als je op je eigen computer Windows draait kun je een zogenoemd WAMP pakket installeren => Windows, Apache, MySQL, PHP. Dit zijn kant en klare gratis installatie pakketten waarmee je met PHP kan experimenteren op je eigen Pc. Op deze manier kun je dus een gehele website in PHP maken voordat je hem online zet bij je hostingprovider op je eigen domein. Hier een overzicht met screenshots van verschillende WAMP pakketten. Qua installatie kunnen "WampServer" en "XAMPP", weet ik uit ervaring, nogal eens voor problemen zorgen (je doet alles goed en toch werkt het niet). Het makkelijkst in gebruik is dan ook USBWebserver. Je download USBWebser van deze website als zip-bestand (kies voor de tweede waar Nederlands achter staat). Vervolgens even un-zippen. Daarna kun je het uitgepakte bestand plaatsen waar je wilt. Er hoeft niets geinstalleerd te worden ! Hierna kun je het programma starten door op usbwebserver.exe te klikken waarna Apache start en je browser opent op http://localhost:8080. Als alle vinkjes groen zijn van het programma draait alles netjes. Je plaatst vervolgens je php bestanden in de map genaamd root. De bestanden die daar na download instaan kun je gewoon verwijderen. Hierna ga je terug naar je browser en ververs je de pagina. Vervolgens kun je verder aan de slag gaan met PHP.

Webruimte met PHP

Als je al een website hebt bij een bepaalde provider kun je kijken of PHP daar ook geactiveerd is op je account. Heb je nog geen webruimte ergens of geen webruimte met PHP dan kun je kiezen om een subdomein te nemem of een eigen domein. Een eigen domeinnaam is meer iets voor als je erg serieus gelijk een website wilt opzetten. Het voordeel is dat het een mooi adres is meestal in de trant van www.websitenaam.nl. Het nadeel is dat een domeinnaam altijd op een bepaald adres geregistreerd moet zijn en dat dit publiekelijk opvraagbaar is. Als het echt voor jezelf is zal dit dus je woonadres zijn. Sommige mensen doen hier totaal niet moelijk over maar andere mensen hebben dit liever niet. Met uitzondering zijn er een aantal hostingproviders die met bijvoorbeeld betaling van 5 euro meer per jaar de domeinnaam op hun adres zetten. Vooralsnog ben ik nog met een poging bezig deze providers in kaart te brengen. Ze maken er namelijk niet echt reclame voor.
Als het voor een vereniging of organisatie is kun je het op het adres van het verenigingsgebouw of secretariaat zetten. Als het voor een bedrijf is staat de website meestal op naam van de locatie van het bedrijfspand. Er is wel een groeiend protest dat hier geen onderscheid wordt gemaakt tussen bedrijven en particulieren omdat een deel van de privacy wegvalt bij particulieren.
Als je in eerste instantie gewoon is lekker wilt gaan experimenteren met PHP of als je om welke rede niet persee een eigen domeinnaam hoeft dan kun je aan de slag met een subdomeinnaam in de vorm van http://websitenaam.naamprovider.nl. Kijk voor meer informatie is bij het onderdeel Wehosting bij Aanbevolen Websites. Voor maar 15 euro per jaar kun je met wel 3 subdomeinen aan de slag bij Vereniging Open Domein. Je adres wordt dan http://websitenaam.deds.nl.

Dan toch nog even deze opmerking. In heel veel online handleidingen/tutorials en zelfs boeken over PHP is meestal 1 van de eerste hoofdstukken de titel "Download PHP" en dan "Installing on Linux" etc. In de volgende hoofdstukken wordt dan altijd netjes uitgelegd hoe je met if en else werkt, wat variabelen, arrays en functies zijn etc etc. Als nietsvermoedend persoon die net met PHP aan de slag gaat zou je dan toch de indruk krijgen dat je iets MOET installeren om met PHP aan de slag te kunnen gaan op je pc. Dat is dus niet het geval en ze kunnen deze boeken en handleidingen beter scheiden in een code gedeelte en in een soort van handleiding voor beheerders of gewoon alleen kort er aandacht aan besteden zoals ik ook doe in deze handleiding aan het einde van de studie en niet als eerste zogenaamd belangrijke hoofdstuk.

Programmeer Editor

PHP bestanden hebben de extentie .php. Je kunt PHP bestanden maken met kladblok net zoals je dat kan doen met HTML bestanden maar beter is om een PHP editor te gebruiken omdat je dan van syntax highlighting gebruik kan maken. Dit houdt in dat de verschillende soorten code in je script ieder een andere kleur krijgen. Hierdoor leer je de code ook beter de doorzien en te begrijpen. Een overzicht van zulk soort editors vind je bij PHP Editors bij de Aanbevolen Websites.

Beveiliging van je website

Controleer altijd alle invoer die mogelijk is door bezoekers van je website. Dus controleer de invoer die plaatsvindt via formulieren en filter die op schadelijke HTML of JavaScript code. Hier zijn diverse scripts voor te downloaden op het internet. Ook kunnen bezoekers rommelen met je adresregel. Zo kunnen ze achter pagina= iets heel anders zetten. Een voorbeeld: stel dat pagina=groente kan zijn of pagina=fruit, maakt dan een controle die als er iets anders wordt geschreven achter = de bezoeker bijvoorbeeld wordt geredirect naar je index of in het uiterste geval dat zijn IP wordt geblokkeerd. Hetzelfde geldt voor de andere variabelen die via je adresregel verkregen worden. Altijd controleren en filteren.
Er zijn goede handleidingen en artikels op het internet beschikbaar waar code voorbeelden worden gegeven van hoe iemand je site of database kan manipuleren. Kijk daarvoor is naar de links bij Veilig Programmeren bij de Aanbevolen Websites.

Aan de slag

Vanaf hier moet je de draad zelf verder oppakken en aan de slag gaan met PHP. Natuurlijk kun je wel altijd vragen stellen in het Forum van deze website. Onderdelen die je jezelf nog eigen moet maken zijn:

commentaar in PHP
werken met arrays
functies maken en gebruiken
operatoren
verinding maken met je database en sql query's maken

Bovenstaande onderdelen zal ik ook nog een keer met codevoorbeelden verduidelijken op deze website. Tot die tijd verwijs ik je door naar goede handleidingen die te vinden zijn bij het onderdeel PHP zelf leren en SQL zelf leren bij de Aanbevolen Websites. Verder naar onderen bij de Aanbevolen Websites in het menu aan de linkerkant vind je nog meer PHP links onderverdeeld in verschillende categorieën. Een hele belangrijke is wel die over Veilig Programmeren in PHP.

Vriendelijke Groet,

A. L. / Webdesign, PHP en HTML

Deel 1 | Deel 2 | Deel 5