Informaticasite van het Lauwers College te Buitenpost                 © R.J. van der Beek
 

Hoofdstuk 16: Javascript en PHP

16.5 PHP-Inleiding

  16.5.1. Wat is PHP

PHP is een gereedschap waarmee je dynamische webpagina's kunt maken.
Webpagina's met PHP worden net zo behandeld als gewone HTML-pagina's, en je kunt ze ook net zo maken als gewone HTML-pagina's.
Als je een html-document hebt gemaakt waarin PHP voorkomt dan moet je er bij het wegschrijven voor zorgen dat de extensie PHP wordt en dus niet HTM

Je hebt er alleen iets aan als je server PHP ondersteunt. De server zorgt er dan voor dat alle bestanden met de extensie .php worden verwerkt door PHP.
Als je een PHP-file hebt gemaakt (die kun je net zo als een html-pagina gewoon met KLADBLOK maken) en die heb je in een web-map geplaatst van een server die PHP ondersteunt dan moet alles zonder meer werken.
Bij de meeste servers, waar je gratis een website kunt plaatsen, kun je geen gebruik maken van PHP. Maar bijvoorbeeld bij de server 000webhost.com kun je wel gratis gebruik maken van PHP en MySQL.

Je eerste pagina met PHP
Tik het volgende in en bewaar het onder de naam test.php :

<html><head><title>PHP Test</title></head>
<body>
Dit is de eerste pagina met PHP <br>
Dit is nog gewoon html <br>
<?php 
      print ("Welke pagina bezocht je voordat je deze in beeld had: <br>");
      print ("$_SERVER[HTTP_REFERER] <br>");
      phpinfo( );
?>

<br>En dit is ook weer gewoon html.<br>
</body></html>

De kleuren rood en blauw zijn alleen gebruikt om gemakkelijk te laten zien wat de php-code is.
De php-code is het blauwe gedeelte.
De PHP code is omgeven door speciale start en stop tags die het mogelijk maken tussen normale mode en PHP-mode over te stappen.

Als je dit PHP-document op de server zet, en je vraagt het in je browser op, dan zie je, als het goed is, zoiets als het volgende:


Dit is de eerste pagina met PHP
Dit is nog gewoon html
Welke pagina bezocht je voordat je deze in beeld had:
www.lauwerscollege.nl


PHP4u Version 2.2
Based on PHP-4.1.0


 
Better, Faster, Cooler.

SystemDebian GNU/Linux - Bi PIII 750 - 1 Gb RAM - Kernel 2.4.x ReiserFS
Build DateJul 10 2002
Configure Command './configure' '--with-jpeg-dir=/usr' '--with-png-dir=/usr' '--with-zlib=/usr' '--with-bz2=/usr' '--with-pdflib=/usr/local' '--with-tiff-dir=/usr' '--with-zip=/usr/local' '--with-gd=/usr' '--with-ttf=/usr/include/freetype2/freetype' '--with-freetype-dir=/usr' '--with-mhash=/usr/local/' '--with-dom=/usr' '--with-ming=/usr' '--without-pear' '--enable-gd-native-ttf' '--enable-calendar' '--enable-bcmath' '--enable-safe-mode' '--enable-memory-limit' '--enable-trans-sid' '--enable-debug' '--disable-posix' '--disable-ftp' '--disable-sockets' '--with-mysql=/usr/' '--enable-force-cgi-redirect'
Server APICGI



En dit is ook weer gewoon html.

Als het er niet op lijkt dan heeft de server je PHP-code misschien niet verwerkt.

In dit voorbeeld gebruikten we <?php om aan te geven dat de PHP-code begint vanaf die regel.
Dan kwamen er een aantal regels met PHP-code, en tenslotte was er een regel waarop ?> stond.
En dat is de code om aan te geven dat de PHP-code daar eindigt, en dat er vanaf dat punt weer met gewone html-code verder wordt gewerkt.

Je kunt zo vaak in en uit PHP-mode stappen in een HTML-document als je wilt.

  16.5.2. Het begin van PHP

PHP is bedacht door Rasmus Lerdorf in 1994. Hij gebruikte het eerst alleen op zijn eigen homepage.
De eerste versie die ook door anderen gebruikt werd kwam uit in 1995, en werd bekend onder de naam: de Personal Home Page Tools.
PHP groeide ontzettend snel en een groot aantal personen stuurde eigen verbeteringen in.

In 1997 waren er al 50000 gebruikers.
Vanaf 1997 werd een groot gedeelte herschreven.
We zijn nu toe aan de vijfde versie (PHP 5.4 in 2012)
PHP stond voor 1997 voor Personal Home Page, maar daarna voor PHP Hypertext Preprocessor.

PHP is een "server-side embedded open-source" script-taal.

Wat betekent server-side ?
Als je een html-pagina opvraagt dan stuurt de server die pagina onveranderd naar jouw computer (dat is de client) en de browser op jouw computer zorgt er voor dat de pagina op je scherm is te zien.

Als je een php-pagina opvraagt dan stuurt de server die pagina niet direct naar jouw computer, maar hij gaat eerst de php-code op die pagina verwerken tot gewone html-code, en na die vertaling wordt de pagina naar jouw computer gestuurd en jouw browser zorgt er voor dat de pagina op je scherm is te zien.

Dat heeft tot gevolg dat als je een php-pagina op het scherm hebt, en je vraagt de broncode op (bijvoorbeeld door een druk op de rechter muisknop, en dan Bron) dat je dan niet de php-code ziet. Want die php-code is dan al vertaald door de server.

Wat betekent embedded ?
Zoals ook andere script-talen (bijvoorbeeld Javascript) kan PHP worden ingebed in HTML.
PHP-code wordt door start- en eindobjecten gescheiden van HTML. Als een document wordt verwerkt dan vertaalt en verwerkt de PHP-processor alleen die bepaalde stukken en voert het resultaat in op dezelfde positie.

Wat is open-source ?
Dat betekent dat PHP door iedereen gratis gebruikt kan worden.
En ook iedereen mag een steentje bijdragen aan de ontwikkeling van PHP.
Lees er meer over op de officiele PHP-website

Waarom PHP gebruiken ?
  • Met php kun je een eigen teller maken.
  • Je kunt bestanden op de server inlezen, en ook gegevens naar bestanden op de server schrijven
    Je kunt dus zelf een gastenboek maken.
  • Je kunt de resultaten van formulieren verwerken.
  • Je kunt cookies versturen en ontvangen.
  • En je kunt met databases werken, vooral mysql wordt daarbij veel gebruikt.

    Al deze dingen kun je ook op andere manieren voor elkaar krijgen, maar met PHP gaat het veel eenvoudiger.

  16.5.3. Zelf een PHP-server installeren

Je kunt zelf heel gemakkelijk een PHP-server installeren, zodat je het op je eigen computer kunt uitproberen.
Een bekende server voor Windows XP is WAMP
WAMP is de afkorting van Windows, Apache, MySQL en PHP. Als je WAMP installeert dan worden er drie servers tegelijk geïnstalleerd:
  • Apache, dat is een webserver
  • PHP, dat wordt hier verder besproken
  • MySQL, daarmee kun je databases bewerken, ook m.b.v. PHP
Wampserver is te downloaden vanaf http://www.wampserver.com/en/download.php.
Nadat je het hebt gedownload dubbelklik je er op, en dan wordt het geïnstalleerd. Druk steeds op enter als er iets gevraagd wordt.
Er wordt dan een map WAMP op de C-drive aangemaakt, waarin alles terechtkomt. In die map zit weer een map WWW, en in die map (of submap daarvan) moet je de php-bestanden zetten.

Klik na de installatie op Start, op Alle programma's en dan op WampServer, en klik vervolgens op Start Wampserver.
Er verschijnt dan rechts op de taakbalk een icoontje:
Klik op het icoontje, dan verschijnt onderstaand venster. Kies daarin voor Localhost.



Of start je browser op, en typ op de adresbalk in: localhost
De webserver gaat dan in de www-map (dus de map C:\WAMP\WWW) op zoek naar een file met de naam index.html, index.htm of index.php
Vindt hij er één dan toont hij die in de browser.
Maar als je bijvoorbeeld een webpagina hebt met de naam test.htm, en je wilt die zien, tik dan in de adresbalk in http://localhost/test.htm

Eventueel kun je een andere map als documentroot kiezen, maar dan moet je dat in de configuratie-file aangeven. Die file heet httpd.conf en staat in de map C:\WAMP\Apache\conf\
Zoek naar Documentroot.

  16.5.4. Hoe neem je PHP in je html-document op

Er zijn vier manieren om PHP in je document op te nemen.
Er zijn dus vier verschillende begin- en eind-tags.
De meest gebruikte is de tweede: <?php als begin-tag en ?> als eind-tag

1.  <? echo "Dit is het meest simpele, gewoon een regel PHP\n"; ?>

2.  <?php
     echo "Dit is uitgebreider maar makkelijker als je met";
     echo "meerdere regels gaat werken\n";
    ?>

3.  <%
     echo "Dit is de ASP-methode\n";
    %>

4.  <script language="php">
     echo "Sommige editors wissen een normaal PHP script direct.";
     echo "Vandaar dat je het ook als script op kunt geven\n";
    </script>

  16.5.5. Variabelen in PHP

PHP werkt net als elke programmeertaal met variabelen.
De naam van een variabele moet beginnen met het $-teken, bijvoorbeeld $piet
Denk er om dat de namen van variabelen in PHP hoofdlettergevoelig zijn, dat betekent dus dat $Piet een andere variabele is dan $piet

Je hoeft in PHP variabelen niet te declareren.
PHP ziet aan de toegekende waarde wel of het om een getal of een woord (string) gaat.
Als je de volgende php-code hebt:

$var1 = 8;
$var2 = 13;
$var3 = $var1 + $var2;

dan krijgt $var3 de waarde 21

En als je de volgende php-code hebt:

$var1 = "jan";
$var2 = "klaassen";
$var3 = $var1 . $var2;

dan krijgt $var3 de waarde "jan klaassen" (de beide strings worden "opgeteld"; in de meeste programmeertalen moet je dan een + gebruiken, maar in PHP gebeurt dat dus met een punt)

Operator Betekenis
$a + $bde optelling van $a en $b (als $a en $b getallen zijn)
$a . $bde optelling (concatenatie) van $a en $b (als $a en $b strings zijn)
$a - $bde aftrekking van $a en $b
$a * $bde vermenigvuldiging van $a en $b
$a / $bde deling van $a door $b
$a % $bde rest bij de deling van $a door $b (in Pascal: mod)

Logische operatoren Betekenis
$a and $b (ook mag: $a && $b)is waar als $a en $b beide waar zijn
$a or $b (ook mag: $a || $b)is waar als $a of $b waar is (het inclusieve of)
$a xor $bis waar als $a of $b waar is, maar niet allebei (het exclusieve of)
! $ais waar als $a niet waar is

  16.5.6. Datum en tijd

De functie date(   ) levert gegevens over de datum en de tijd, afhankelijk van wat er tussen de haakjes staat.
Als het bijvoorbeeld 4 februari 2007 is, dan zorgt de opdracht $datum = date("j-n-Y"); ervoor dat er geldt: $datum = "4-2-2006"
De j achter date zorgt ervoor dat de dag (in cijfers) wordt afgedrukt, dus 4 (had je een d i.p.v. een j gebruikt dan kwam er 04)
De n achter date zorgt ervoor dat de maand (in cijfers) wordt afgedrukt, dus 2 (had je een m i.p.v. een n gebruikt dan kwam er 02)
De Y achter date zorgt ervoor dat het jaar wordt afgedrukt, dus 2007 (had je een y i.p.v. een Y gebruikt dan kwam er 07)
De streepjes tussen de letters achter date hebben tot gevolg dat er een streepje tussen de dag en de maand komt, en ook tussen de maand en het jaar.

De opdracht $datum = date("jS of F Y"); heeft tot gevolg dat er geldt: $datum = "4th of Febuary 2006"
De j achter date zorgt ervoor dat de dag (in cijfers) wordt afgedrukt en de S achter de j heeft tot gevolg dat de engelse notatie wordt gebruikt, dus , dus 4th
De F achter date zorgt ervoor dat de maand (in letters, altijd in het engels) wordt afgedrukt, dus Febuary
Verder komt het woordje of tussen de dag en de maand, omdat dat ook tussen de j en de F (tuusen de haakjes achter date) staat

De opdracht $tijd = date("H:i:s"); heeft 's avonds 20 voor 8 tot gevolg dat er geldt: $tijd = 19 : 40 : 00

  16.5.7. Ontsnappingstekens in PHP

Je kunt in PHP speciale tekens gebruiken. Bijvoorbeeld voor de entertoets is dat \n
De \ (Backslash) wordt gebruikt als zogenaamd ontsnappingsteken.
Dat moet je voor bepaalde tekens zetten om verwarring te voorkomen.
Als je bijvoorbeeld het dollarteken $ ergens wilt gebruiken, dan moet je \$ invoeren, anders wordt er gedacht dat het om een variabele gaat.
In de tabel hieronder zie je om welke tekens het gaat.

Teken Betekenis
\nNewline (Nieuwe regel)
\tTab
\\\ (backslash)
\$$ (Dollarteken)
\"" (Aanhalingstekens)

  16.5.8. Commentaar

Als je programmeert is het belangrijk dat je regels tussenvoegt die alleen voor jezelf bestemd zijn, waarin je aangeeft wat je eigenlijk doet.
Anders weet je later vaak niet meer waarom een regel er uitziet zoals hij er uitziet.
Zulke regels noem je commentaar, ze worden bij het uitvoeren van het script overgeslagen.

Commentaar in PHP-scripts kun je op drie manieren invoeren:

// Dit is commentaar

of

/* Als je commentaar hebt dat uit meerdere regels
bestaat dan kun je het zo doen */


of

# In Perl zijn ze gewend om
# commentaarregels op deze manier
# toe te voegen, en dat kan ook in PHP


In gewoon HTML kun je ook commentaar plaatsen, daar gaat het zo:

<!-- dit is een commentaarregel in HTML -->

  16.5.9. Voorgedefinieerde variabelen

Er zijn ook voorgedefinieerde variabelen, die hebben automatisch al een waarde.
Een aantal daarvan zie je hieronder met een mogelijke waarde en uitleg.

Variabele Betekenis
$_SERVER[HTTP_REFERER] Laatst bezochte pagina van bezoeker
$_SERVER[HTTP_USER_AGENT] HTML-versie van bezoeker
$_SERVER[REMOTE_ADDR] IP adres van bezoeker
$_SERVER[REMOTE_IDENT] Gebruikersnaam van bezoeker
$_SERVER[SERVER_ADDR] IP adres van server