PHP
 

PHP Hypertext Preprocessor is een veelgebruikte Open source scripting language.

Opensource betekent dat het gratis gebruikt mag worden en vrijelijk mag worden aangepast.

PHP wordt hoofdzakelijk gebruikt voor

·         automatisering van HTML code. M.a.w. code wordt een keer geschreven en dan op verschillende plaatsen toegepast.

·         uitwisseling van informatie tussen HTML en een database en of een gebruiker van het document.

PHP scripts worden uitgevoerd op de PHP-Server, die geinstalleerd moet zijn op de computer of website waar de script wordt gecreerd of gepubliseerd.

Je kan de PHP server gratis downloaden van https://www.apachefriends.org/index.html en volgens de instructies installeren op je computer.

XAMPP is een combinatie van verschillende servers m.n. Apache, PHP, Perl en MySQL die je kan installeren op je computer.

Je script kan je dan plaatsen in een folder in de C:\xampp\htdocs folder en runnen.

Zonder de PHP server zal PHP-code niet uitgevoerd kunnen worden.

 

Voor het editen van PHP code kan je liefst Notepad of Notepad++ gebruiken.

Notepad++ kan je downloaden van https://notepad-plus-plus.org/download/v6.8.5.html en installeren volgens de instructies.

Het werkt ongeveer als Notepad maar heeft extra functies die het scripten makkelijk maken.

 

PHP kan worden gebruikt als een toevoeging van de code in een HTML document of als een aparte PHP document met alleen PHP code.

PHP code altijd geplaatst in de PHP tag:

 

<?php

// PHP code wordt hier geplaatst

?>

 

// Maakt commentaar op een enkele regel mogelijk. M.a.w. text geplaatst erachter wordt niet getoond in de browser.

 

#  Maakt ook commentaar op een enkele regel mogelijk

 

/*

Maakt commentaar mogelijk over meerdere regels

Maakt inline commentaar zoals onderin ook mogelijk

*/

$x = 5 /* + 15 */ + 5;

echo $x;

 

variable names zijn case sensitive. Goed om camelCase te gebruiken.

De rest van de PHP code is niet case sensitive.

 

Een variabele moet eerst gedeclareerd worden.==> $variableName = "value";

bv. $txt = "Hello world!";$x = 5;$y = 10.5;

Om output data op screen te krijgen wordt de echo cmd gebruikt

In het voorbeeld wordt: I love W3Schools.com op scherm getoond.

<?php

$txt = "W3Schools.com";

echo "I love $txt!";

?>

In het onderstaande voorbeeld wordt 9 getoond op scherm. Let op dat bij de

text (string) hierboven dubbele aanhalingstekens gebruikt is, bij de variabelen hieronder, niet.

<?php

$x = 5;

$y = 4;

echo $x + $y;

?>

 

Een function wordt alsvolgt gedeclareerd ==> function functienaam (){code}

Bij gebruik van variabelen in een functie worden private, local en global variables onderscheiden.

Een global variable wordt buiten de functie {...} gedeclareerd, en kan dan ook niet zondermeer erbinnen gebruikt worden.

Een local variable wordt in de functie { $variableNaam = waarde } gedeclareerd en kan dan ook hierin alleen gebruikt worden.

Om een global variable in een functie te gebruiken moet je het in de functie met keywoord global opnieuw declareren zoals in het voorbeeld:

<?php

$x = 5;

$y = 10;

function myTest() {

global $x, $y;

$y = $x + $y;}  /*functie wordt gedeclareerd*/

myTest();       /*functie wordt gebruikt*/

echo $y; // output 15

?>

$GLOBALS[index] is een array (groep) waarin alle global variables worden opgeslagen.

Deze variabelen kunnen rechtstreeks van hieruit benaderd worden.

Onderstaande vb is hetzelfde als bovenstaande.

<?php

$x = 5;

$y = 10;

function myTest() {$GLOBALS['y']= $GLOBALS['x']} + $GLOBALS['y'];} /*functie wordt gedeclareerd*/

myTest();

echo $y; // outputs 15

?>

Het keywoord static wordt gebruikt als je wilt voorkomen dat een local variable wordt uitgeveegd na het executen van een functie

In het voorbeeld wordt $x drie keer gebruikt.

<?php

function myTest() {

    static $x = 0;    echo $x;    $x++;}

myTest();

myTest();

myTest();

?>

Voor het tonen van text + HTML code kan je echo en print gebruiken.

Een voorbeeld van de echofunctie

<?php

echo "<h2>PHP is Fun!</h2>";

echo "Hello world!<br>";

echo "I'm about to learn PHP!<br>";

echo "This ", "string ", "was ", "made ", "with multiple parameters.";

?>

Hetzelfde maar nu met de printfunctie

<?php

print "<h2>PHP is Fun!</h2>";

print "Hello world!<br>";

print "I'm about to learn PHP!";

?>

In onderstaande functie wordt ondermeer de waarde van de variabelen ge-echo'd

<?php

$txt1 = "Learn PHP";

$txt2 = "W3Schools.com";

$x = 5;

$y = 4;

echo "<h2>$txt1</h2>";

echo "Study PHP at $txt2<br>";

echo $x + $y;

?>

In onderstaande functie wordt ondermeer de waarde van de variabelen geprint

<?php

$txt1 = "Learn PHP";

$txt2 = "W3Schools.com";

$x = 5;

$y = 4;

print "<h2>$txt1</h2>";

print "Study PHP at $txt2<br>";

print $x + $y;

?>

 

PHP data types:

String                    serie karakters vb $x = "W@nB!g1fa!go" is het 2e password

Integer                 hele getallen vb $y = 924563732667

Float                      getallen met een decimale punt vb $z = 122.23 (of comma voor Nederlands)

Boolean                               true or false (ja of nee, uit of aan )

NULL                     NULL is de afwezigheid van een waarde bv als er niets is ingevuld voor een variabele vb NULL

Resource             is een referentie naar functions en resoures buiten PHP

Array                     groep van meerdere waarden opgeslagen in een enkele variabele $cars = array("Volvo","BMW","Toyota");

Object                  data/parameters (waarden) en methoden (functions) opgeslagen als een enkele variabele       

vb van een object

<?php

class Car {

function Car() {$this->model = "VW";}} /* $this verwijst naar het object Car)

$herbie = new Car();

echo $herbie->model;

?>          

 

String functions

echo strlen("string"); toont de lengte van de string

echo strlen("Hello world!");

echo str_word_count("string"); toont het aantal woorden in een string

echo str_word_count("Hello world!"); // outputs 2

echo strrev("string"); keert de string om

echo strrev("Hello world!"); // outputs !dlrow olleH

echo strpos("string", "string1"); zoekt naar de beginpositie een aantal karakters in string1, de tel begint bij 0.

echo strpos("Hello world!", "world"); // outputs 6

echo str_replace ("woord1", "woord2", "string") vervangt woord1 in string met woord2

echo str_replace("world", "Dolly", "Hello world!"); // outputs Hello Dolly!

 

Constant is een waarde met een naam. Na de definitie van een constant, is de waarde onveranderbaar.

vb           define(name, value, case-insensitive) case insensivity kan zijn true (default) of false

                define("GREETING", "Welcome to W3Schools.com!");

Constants zijn altijd global

 

PHP onderscheidt de operators in groups:

Arithmetic operators      voor het rekenen met numerische waarden

Increment/Decrement operators             hiermee wordt de waarde van een variabele verhoogd of verlaagd

Assignment operators   gebruikt om een waarde toe te schrijven aan een variabele

Comparison operators   vergelijkt twee waarden, het antwoord is een boolean

Array operators                                voor het vergelijken van arrays

Logical operators              voor het combineren van conditional statements, wordt gebruikt met comparison operators

String operators               voor het bewerken van strings 

 

 

Aritmetic operators

Operator             Name                                    Example               Result   Show it

+                             Addition                                               $x + $y  Sum of $x and $y             

-                              Subtraction                                         $x - $y   Difference of $x and $y

*                             Multiplication                                    $x * $y  Product of $x and $y      

/                              Division                                $x / $y   Quotient of $x and $y   

%                            Modulus              $x % $y                                 Remainder of $x divided by $y  

**                           Exponentiation $x ** $y               raising $x to the $y'th power

 

Assignment        Same as...           Description        

x = y                       x = y                       The left operand gets set to the value of the expression on the right

x += y                    x = x + y                Addition              

x -= y                     x = x - y Subtraction        

x *= y                    x = x * y                Multiplication   

x /= y                     x = x / y Division

x %= y                   x = x % y               Modulus             

h

Comparison

Operator             Name                    Example                               Result   Show it

==                           Equal                     $x == $y               Returns true als $x is gelijk aan $y            

===                        Identical               $x === $y             Returns true als $x is gelijk aan $y, en ze zijn hetzelfde datatype               

!=                            not equal             $x != $y Returns true als $x is niet gelijk aan $y

<>                           not equal             $x <> $y               Returns true als $x is niet gelijk aan $y

!==                         niet identical      $x !== $y              Returns true als $x is niet gelijk aan $y, of ze zijn niet hetzelfde datatype

>                             Greater than      $x > $y                  Returns true als $x is groter dan $y

<                             Less than             $x < $y                  Returns true als $x is kleiner dan $y

>=                           greater than or gelijk aan  $x >= $y           Returns true als $x is groter dan of gelijk aan $y

<=                           Less than or gelijk aan    $x <= $y               Returns true als $x is kleiner dan of gelijk aan $y               

 

Array

Operator             Name                    Example                               Result  

+                             Union                    $x + $y                  Union of $x and $y

==                           Equality                $x == $y               Returns true als $x and $y dezelfde key/value pairs hebben

===                        Identity                $x === $y             Returns true als $x and $y dezelfde key/value pairs hebben in dezelfde orde en van hetzelfde type

!=                            Inequality            $x != $y Returns true als $x is niet gelijk aan $y

<>                           Inequality            $x <> $y               Returns true als $x is niet gelijk aan $y

!==                         Non-identity      $x !== $y              Returns true als $x is niet identiek aan $y

 

Logical

Operator             Name    Example                               Result

and                        And        $x and $y             True als beiden $x en $y zijn true

or                            Or           $x or $y True als of $x of $y is true

xor                         Xor         $x xor $y              True als of $x of $y is true, maar niet beide

&&                         And        $x && $y              True als beiden $x en $y zijn true

||                           Or           $x || $y                True als of $x of $y is true

!                              Not        !$x                          True als $x is niet true

 

String

Operator             Name                                    Example                               Result                  

.                               Concatenation                  $txt1 . $txt2        Concatenation of $txt1 and $txt2

.=                            Concatenation assignment$txt1 .= $txt2               Appends $txt2 to $txt1

 

Conditional statements worden gebruikt om acties te basseren op een verschillende condities

Bij het bepalen van de condities worden conditional en logical operators gebruikt.

 

if statement                       acties uitgevoerd als aan een specifieke voorwaarde wordt voldaan

if...else statement           een actie uitgevoerd als aan een voorwaarde wordt voldaan, anders wordt  een andere actie uitgevoerd

if...elseif....else statement          bepaald een tweede voorwaarde, als aan de eerste voorwaarde niet wordt voldaan

switch statement             er zijn verschillende acties die uitgevoerd kunnen worden allen bij een andere voorwaarde

 

if

$t = date("H");

if ($t < "20") {echo "Have a good day!";}

 

if ... else

$t = date("H");

if ($t < "20") {echo "Have a good day!";}

else { echo "Have a good night!";}

 

if ...elseif...else

$t = date("H");

if ($t < "10") { echo "Have a good morning!";}

elseif ($t < "20") { echo "Have a good day!";}

else { echo "Have a good night!";}

 

switch

$favcolor = "red";

switch ($favcolor) {

    case "red":echo "Your favorite color is red!";

        break;

    case "blue":echo "Your favorite color is blue!";

        break;

    case "green":echo "Your favorite color is green!";

        break;

    default: echo "Your favorite color is neither red, blue, nor green!";}

 

Loops worden gebruikt als je identieke code meerdere malen moet herhalen met andere parameters.

Je kan dan meermalen de code doorlopen (looping) en zodoende de taak uitvoeren met de verschillende parameters.

while                     looped door een block code zolang aan een bepaalde voorwaarde voldaan wordt

do...while            looped door een block code, en herhaalt de loop zolang aan de gespecificeerde voorwaarde voldaan wordt

for                          looped een bepaald aantal keren door een block code

foreach                looped door een block code voor alle elementen in een array

 

while

$x = 1;

while($x <= 5) {echo "The number is: $x <br>";

$x++;}

 

do...while

$x = 1;

do {echo "The number is: $x <br>";

$x++;}   while ($x <= 5);

 

for loop

for ($x = 0; $x <= 10; $x++) {echo "The number is: $x <br>";}

 

for each loop (voor arrays)

$colors = array("red", "green", "blue", "yellow");

foreach ($colors as $value) {echo "$value <br>";}

 

Een user defined function wordt alsvolgt gedeclareerd

function functionName() {code to be executed;}

Een functie naam begint net als een variabele met een letter of underscore, maar is anders dan een variabeleNaam niet case sensitive.

vb

function writeMsg() { echo "Hello world!";} ==> is de functie

writeMsg(); ==> voert de functie uit

Onderstaand wordt een functie gedefinieerd met twee argumenten

Onder de functiedeclaratie wordt de functie driemaal uitgevoerd

function familyName($fname, $year) { echo "$fname Refsnes. Born in $year <br>";}

familyName("Hege", "1975");

familyName("Stale", "1978");

familyName("Kai Jim", "1983");

Als je een variabele declareert met een default waarde, wordt bij het oningevuld blijven van de variabele, de default waarde gebruikt.

function setHeight($minheight = 50) {echo "The height is : $minheight <br>";}

setHeight(350);

setHeight(); // hier wordt de default waarde ($minheight = 50) gebruikt

setHeight(135);

setHeight(80);

Om een functie een resultaat te laten hebben wordt return gebruikt als onderstaand

function sum($x, $y) {

    $z = $x + $y;

    return $z;}

echo "5 + 10 = " . sum(5, 10) . "<br>";

echo "7 + 13 = " . sum(7, 13) . "<br>";

echo "2 + 4 = " . sum(2, 4);

Een array is een variabele die tegelijktijd meerdere waarden kan bezitten.

Elke waarde is voorzien van een index nummer die gebruikt kan worden om de waarde te refereren.

Er zijn drie typen arrays

indexed arrays                  array met een numerische index

associative arrays             array met named keys

multidimensional arrays array met items die zelf een array zijn

 

Van de indexed array kan je de index alsvolgt creeren

automatisch:

$cars = array("Volvo", "BMW", "Toyota");

of handmatig:

$cars[0] = "Volvo";

$cars[1] = "BMW";

$cars[2] = "Toyota";

Onderstaand wordt een indexed array met drie elements gecreerd en uitgeprint

<?php

$cars = array("Volvo", "BMW", "Toyota");

echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";

?>

Onderstaand wordt middels een functie het aantal elementen van een array bepaald, en dan via een for loop alle elementen geprint

<?php

$cars = array("Volvo", "BMW", "Toyota");

$arrlength = count($cars); /* bepaald het aantal elementen */

for($x = 0; $x < $arrlength; $x++) {

    echo $cars[$x];

    echo "<br>";}

?>

 

Associative Arrays gebruiken namen voor hun (index) keys.

Een associative array kan je alsvolgt creeren

$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

of

$age['Peter'] = "35";

$age['Ben'] = "37";

$age['Joe'] = "43";

Onderstaand voorbeeld creert en print een associative array

<?php

$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

echo "Peter is " . $age['Peter'] . " years old.";

?>

Onderstaande voorbeeld looped door een associative array met een foreach loop en print elke key met de geassocieerde waarde erachter

<?php

$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

foreach($age as $x => $x_value) {

    echo "Key=" . $x . ", Value=" . $x_value;

    echo "<br>";}

?>

De volgende functies kunnen gebruikt worden om arrays te sorteren.

sort() - sorteert arrays in ascending (klein naar groot) order

rsort() - sorteert arrays in descending (groot naar klein) order

asort() - sorteert associative arrays in ascending order , aan de hand van de value

ksort() - sorteert associative arrays in ascending order, aan de hand van de key

arsort() - sorteert associative arrays in descending order , aan de hand van de value

krsort() - sorteert associative arrays in descending order, aan de hand van de key

 

superglobals zijn voorgedefinieerde variabelen die altijd door elke functie gebruikt kunnen worden.

$GLOBALS           laat je alle global variable in de PHP script oproepen (variabelen zitten in een index genaamd $GLOBALS[index])

$_SERVER            middels deze superglobal kan je alle properties (metadata) van een server oproepen                   

$_REQUEST        collecteert de data nadat een html form is ingediend

$_POST                collecteert de data uit een HTML form verstuurd met de POST method

$_GET                   collecteert de data uit een HTML form verstuurd met de GET method

$_FILES                

$_ENV                 

$_COOKIE          

$_SESSION         

 

voorbeeld van $_SERVER waarmee je verschillende metadata kan oproepen

<?php

echo $_SERVER['PHP_SELF'];

echo "<br>";

echo $_SERVER['SERVER_NAME'];

echo "<br>";

echo $_SERVER['HTTP_HOST'];

echo "<br>";

echo $_SERVER['HTTP_USER_AGENT'];

?>

 

onderstaand een lijst van meestvoorkomende metadata op een server

Element/Code                                  Description

$_SERVER['PHP_SELF']                  Returns the filename of the currently executing script

$_SERVER['GATEWAY_INTERFACE']         Returns the version of the Common Gateway Interface (CGI) the server is using

$_SERVER['SERVER_ADDR']         Returns the IP address of the host server

$_SERVER['SERVER_NAME']       Returns the name of the host server (such as www.w3schools.com)

$_SERVER['SERVER_SOFTWARE']              Returns the server identification string (such as Apache/2.2.24)

$_SERVER['SERVER_PROTOCOL']              Returns the name and revision of the information protocol (such as HTTP/1.1)

$_SERVER['REQUEST_METHOD']               Returns the request method used to access the page (such as POST)

$_SERVER['REQUEST_TIME']       Returns the timestamp of the start of the request (such as 1377687496)

$_SERVER['QUERY_STRING']      Returns the query string if the page is accessed via a query string

$_SERVER['HTTP_ACCEPT']                          Returns the Accept header from the current request

$_SERVER['HTTP_ACCEPT_CHARSET']     Returns the Accept_Charset header from the current request (such as utf-8,ISO-8859-1)

$_SERVER['HTTP_HOST']                              Returns the Host header from the current request

$_SERVER['HTTP_REFERER']        Returns the complete URL of the current page (not reliable because not all user-agents support it)

$_SERVER['HTTPS']                          Is the script queried through a secure HTTP protocol

$_SERVER['REMOTE_ADDR']                       Returns the IP address from where the user is viewing the current page

$_SERVER['REMOTE_HOST']                       Returns the Host name from where the user is viewing the current page

$_SERVER['REMOTE_PORT']                       Returns the port being used on the user's machine to communicate with the web server

$_SERVER['SCRIPT_FILENAME'] Returns the absolute pathname of the currently executing script

$_SERVER['SERVER_ADMIN']     Returns the value given to the SERVER_ADMIN directive in the web server configuration file (if your script runs on a virtual host, it will be the value defined for that virtual host) (such as someone@w3schools.com)

$_SERVER['SERVER_PORT']                         Returns the port on the server machine being used by the web server for communication (such as 80)

$_SERVER['SERVER_SIGNATURE']            Returns the server version and virtual host name which are added to server-generated pages

$_SERVER['PATH_TRANSLATED']              Returns the file system based path to the current script

$_SERVER['SCRIPT_NAME']                         Returns the path of the current script

$_SERVER['SCRIPT_URI']                              Returns the URI of the current page

 

 

$_REQUEST

 

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">

   Name: <input type="text" name="fname">

   <input type="submit">

</form>

<?php

if ($_SERVER["REQUEST_METHOD"] == "POST") {

/*collecteert de waarde van de input field*/

     $name = $_REQUEST['fname'];

     if (empty($name)) {

         echo "Name is empty";

     } else {echo $name;  }}

?>

 

combinatie $_REQUEST en $_POST. $_POST kan de data die met de POST methode verstuurd is collecteren

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">

  Name: <input type="text" name="fname">

  <input type="submit">

</form>

<?php

if ($_SERVER["REQUEST_METHOD"] == "POST") {

    // collect value of input field

    $name = $_POST['fname'];

    if (empty($name)) {

        echo "Name is empty";

    } else { echo $name; }}

?>

GET kan de formdata collecteren nadat het verstuurd is met de get methode.

vb: <a href="test_get.php?subject=PHP&web=W3schools.com">Test $GET</a>

 

als de gebruiker klikt op de link, worden de parameters subject en web gestuurt naar een php document test_get.PHP.

Je kan hun waarden in test_get.php accessen met $_GET

 

FORMS

 

<html><body>

<form action="welcome.php" method="post">

Name: <input type="text" name="name"><br>

E-mail: <input type="text" name="email"><br>

<input type="submit">

</form>

</body></html>

Bovenstaand een vb van een eenvoudige form. Als de gebruiker de form invult en indient, wordt het via een

file welcome.php verstuurd. Onderstaand welcome.php die de $_POST superglobal gebruikt

<html><body>

Welcome <?php echo $_POST["name"]; ?><br>

Your email address is: <?php echo $_POST["email"]; ?>

</body></html>

Hetzelfde resultaat kan bereikt worden met de get methode en een php file welcome_get.php met de $_GET superglobal

<html><body>

<form action="welcome_get.php" method="get">

Name: <input type="text" name="name"><br>

E-mail: <input type="text" name="email"><br>

<input type="submit">

</form>

</body></html>

welcome_get.php ziet er alsvolgt uit

<html><body>

Welcome <?php echo $_GET["name"]; ?><br>

Your email address is: <?php echo $_GET["email"]; ?>

</body></html>

 

Zowel $_GET als $_POST creeren een associative array met de keys (iput names) en de ingevulde waarden.

$_GET is een array of variables doorgestuurd naar de huidige script via de URL parameters.

De parameters zijn voor iedereen zichtbaar in de url van de e-mail en er mogen slecht 2000 characters gebruikt worden

Het kan gebookmarked worden

Wordt gebruikt voor non-sensitive information

$_POST is an array of variables doorgestuurd naar de huidige script via de HTTP POST method.

De parameters zijn verborgen in de body van de http request en er is geen limit aan hoeveel informatie er in mag

Kan niet gebookmarked worden

Het is de geprefereerde methode aangezien het alle informatie kan versturen sensitive or not.

 

Form validation:

Eerst beginnen we met de plain html voor de form

Name: <input type="text" name="name">

E-mail: <input type="text" name="email">

Website: <input type="text" name="website">

Comment: <textarea name="comment" rows="5" cols="40"></textarea>

Gender: <input type="radio" name="gender" value="female">Female

                <input type="radio" name="gender" value="male">Male

Nu moeten de volgende validation rules gelden

Field                      Validation Rules

Name                    Required en Mag alleen letters en whitespace hebben

E-mail                    Required en Moet tenminste @ en een . hebben

Website                               Optional en Als aanwezig, moet een valide URL hebben

Comment                            Optional en Multi-line input field (textarea)

Gender                Required en Moet een selecteren

 

Voor de form geldt de volgende code:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

$_SERVER["PHP_SELF"] is een superglobal die de filename van de huidige script toont m.a.w.

action stuurt de ingediende informatie naar dezelfde page waar de form staat, zodat de gebruiker

ook direct kan zien als er errors zijn.

htmlspecialchars verandert special HTML characters, zodat een hacker geen code kan indienen.

 

Onderstaand willen we in de php file nog twee dingen doen.

backslashes en onnodige characters (zoals space, tab en newline) verwijderen

 

<?php

// define variables and set to empty values

$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {

  $name = test_input($_POST["name"]);

  $email = test_input($_POST["email"]);

  $website = test_input($_POST["website"]);

  $comment = test_input($_POST["comment"]);

  $gender = test_input($_POST["gender"]);}

function test_input($data) {

  $data = trim($data);

  $data = stripslashes($data);

  $data = htmlspecialchars($data);

  return $data;}

?>

 

Onderstaand gaan we forceren dat de gebruiker de required velden dan ook invult.

Als hij dat niet doet wordt er een error message gegenereerd.

De error messages zijn de variabelen inputNaamErr

 

<?php

// define variables and set to empty values

$nameErr = $emailErr = $genderErr = $websiteErr = "";

$name = $email = $gender = $comment = $website = "";

 

if ($_SERVER["REQUEST_METHOD"] == "POST") {

  if (empty($_POST["name"])) { $nameErr = "Name is required";}

else { $name = test_input($_POST["name"]);  }

  if (empty($_POST["email"])) { $emailErr = "Email is required"; }

else { $email = test_input($_POST["email"]);  }

  if (empty($_POST["website"])) {  $website = ""; }

else { $website = test_input($_POST["website"]); }

  if (empty($_POST["comment"])) { $comment = "";  }

else { $comment = test_input($_POST["comment"]);  }

  if (empty($_POST["gender"])) {

    $genderErr = "Gender is required";

  } else { $gender = test_input($_POST["gender"]);  }}

?>

Uiteraard moeten de gegenereerde Errors ook ge-echod worden. Dit gebeurt met onderstaande method.

 

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Name: <input type="text" name="name">

<span class="error">* <?php echo $nameErr;?></span>

<br><br>

E-mail:

<input type="text" name="email">

<span class="error">* <?php echo $emailErr;?></span>

<br><br>

Website:

<input type="text" name="website">

<span class="error"><?php echo $websiteErr;?></span>

<br><br>

Comment: <textarea name="comment" rows="5" cols="40"></textarea>

<br><br>

Gender:

<input type="radio" name="gender" value="female">Female

<input type="radio" name="gender" value="male">Male

<span class="error">* <?php echo $genderErr;?></span>

<br><br>

<input type="submit" name="submit" value="Submit">

</form>

 

Nu moeten we nog afdwingen dat de input fields op de juiste manier worden ingevuld.

de pregmatch() functie kan zoekt in een string naar patronen, return is true als andere dan de (toegestane) arguments voorkomen.

$name = test_input($_POST["name"]);

if (!preg_match("/^[a-zA-Z ]*$/",$name)) {$nameErr = "Only letters and white space allowed"; }

De PHP's filter_var() function checkt als een string een bepaald object voorstelt

$email = test_input($_POST["email"]);

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Invalid email format"; } 

Om de url te valideren gebruiken we weer de preg_match() function, met aangepaste arguments

$website = test_input($_POST["website"]);

if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) { $websiteErr = "Invalid URL"; }

Al de voorwaarden kunnen dus onder elkaar geplaatst worden.

 

 

Alles bij elkaar komen we tot de onderstaande form

<!DOCTYPE HTML>

<html>

<head>

<style>

.error {color: #FF0000;}

</style>

</head>

<body>

 

<?php

// define variables and set to empty values

$nameErr = $emailErr = $genderErr = $websiteErr = "";

$name = $email = $gender = $comment = $website = "";

 

if ($_SERVER["REQUEST_METHOD"] == "POST") {

   if (empty($_POST["name"])) { $nameErr = "Name is required";}

else { $name = test_input($_POST["name"]);

     // check if name only contains letters and whitespace

if (!preg_match("/^[a-zA-Z ]*$/",$name)) { $nameErr = "Only letters and white space allowed"; } }  

if (empty($_POST["email"])) {  $emailErr = "Email is required"; }

else { $email = test_input($_POST["email"]);

     // check if e-mail address is well-formed

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {

       $emailErr = "Invalid email format";      }   } 

if (empty($_POST["website"])) { $website = ""; }

else {  $website = test_input($_POST["website"]);

     // check if URL address syntax is valid (this regular expression also allows dashes in the URL)

if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {

       $websiteErr = "Invalid URL";      }   }

if (empty($_POST["comment"])) { $comment = "";   }

else { $comment = test_input($_POST["comment"]);   }

if (empty($_POST["gender"])) {

     $genderErr = "Gender is required"; }

else {    $gender = test_input($_POST["gender"]);   }}

function test_input($data) {

   $data = trim($data);

   $data = stripslashes($data);

   $data = htmlspecialchars($data);

   return $data;}?>

 

<h2>PHP Form Validation Example</h2>

<p><span class="error">* required field.</span></p>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

   Name: <input type="text" name="name" value="<?php echo $name;?>">

   <span class="error">* <?php echo $nameErr;?></span>

   <br><br>

   E-mail: <input type="text" name="email" value="<?php echo $email;?>">

   <span class="error">* <?php echo $emailErr;?></span>

   <br><br>

   Website: <input type="text" name="website" value="<?php echo $website;?>">

   <span class="error"><?php echo $websiteErr;?></span>

   <br><br>

   Comment: <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea>

   <br><br>

   Gender:

   <input type="radio" name="gender" <?php if (isset($gender) && $gender=="female") echo "checked";?>  value="female">Female

   <input type="radio" name="gender" <?php if (isset($gender) && $gender=="male") echo "checked";?>  value="male">Male

   <span class="error">* <?php echo $genderErr;?></span>

   <br><br>

   <input type="submit" name="submit" value="Submit">

</form>

 

<?php

echo "<h2>Your Input:</h2>";

echo $name;

echo "<br>";

echo $email;

echo "<br>";

echo $website;

echo "<br>";

echo $comment;

echo "<br>";

echo $gender;

?>

 

</body>

</html>

 

Bovenstaande file mag opgeslagen worden met een php extensie.

 

Van de indexed array kan je de index alsvolgt creeren

automatisch:

$cars = array("Volvo", "BMW", "Toyota");

of handmatig:

$cars[0] = "Volvo";

$cars[1] = "BMW";

$cars[2] = "Toyota";

Onderstaand wordt een indexed array met drie elements gecreerd en uitgeprint

<?php

$cars = array("Volvo", "BMW", "Toyota");

echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";

?>

Onderstaand wordt middels een functie het aantal elementen van een array bepaald, en dan via een for loop alle elementen geprint

<?php

$cars = array("Volvo", "BMW", "Toyota");

$arrlength = count($cars); /* bepaald het aantal elementen */

for($x = 0; $x < $arrlength; $x++) {

    echo $cars[$x];

    echo "<br>";}

?>

 

Associative Arrays gebruiken namen voor hun (index) keys.

Een associative array kan je alsvolgt creeren

$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

of

$age['Peter'] = "35";

$age['Ben'] = "37";

$age['Joe'] = "43";

Onderstaand voorbeeld creert en print een 1 item uit de associative array

<?php

$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

echo "Peter is " . $age['Peter'] . " years old.";

?>

Onderstaande voorbeeld looped door een associative array met een foreach loop en print elke key met de geassocieerde waarde erachter

<?php

$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

foreach($age as $x => $x_value) {

    echo "Key=" . $x . ", Value=" . $x_value;

    echo "<br>";}

?>

Beste toepassing is in een zinsconstructie die twee variabelen nodig heeft

<?php

$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");

foreach($age as $x => $x_value) {

    echo "Our Client " . $x . ", is " . $x_value." years old";

    echo "<br>";}

?>

 

Escaped characters worden gebruikt om bepaalde handelingen of syntax mogelijk te maken

 

\n           linefeed (LF or 0x0A (10) in ASCII)

\r            carriage return (CR or 0x0D (13) in ASCII)

\t            horizontal tab (HT or 0x09 (9) in ASCII)

\v            vertical tab (VT or 0x0B (11) in ASCII) (since PHP 5.2.5)

\e           escape (ESC or 0x1B (27) in ASCII) (since PHP 5.4.4)

\f            form feed (FF or 0x0C (12) in ASCII) (since PHP 5.2.5)

\\            backslash

\$            dollar sign

\"            double-quote

\[0-7]{1,3}           the sequence of characters matching the regular expression is a character in octal notation

\x[0-9A-Fa-f]{1,2}            the sequence of characters matching the regular expression is a character in hexadecimal notation

\u{[0-9a-f]{1,6}}               the sequence of characters matching the regular expression is a Unicode codepoint,

                                                which will be output to the string as that codepoint's UTF-8 representation (added in PHP 7.0.0)

$Image = array(

array("defaultENG.htm","english", "changeImage()","changeImage()", "engels.png","ENGLISH")

array("RemoteSupport.htm","helpdesk", "changeImage1()","changeImage1()","helpdesk.jpg","HELPDESK")

array("Informatie.htm#fragment","lessen" , "changeImage2()","changeImage2()","lessen.jpg","LESSEN")

array("OnlineShopsNed.htm","software", "changeImage3()","changeImage3()","programmatuur.png","SOFTWARE")

array("Educatief.htm","kinderen", "changeImage4()","changeImage4()","kinderen.jpg","KINDEREN")

array("AboutUSNederlands.htm#fragment","vrienden","changeImage5()","changeImage5()","vrienden.jpg","VRIENDEN")

array("Niews.htm","nieuws", "changeImage6()","changeImage6()","nieuws.jpg","NIEUWS")

array("AboutUSNederlands.htm","aboutus", "changeImage7()", "changeImage7()","overons.jpg","CONTACT INFO"))

 

<?php

for ($row = 0; $row < 4; $row++) {

                echo "<p><b>Row number $row</b></p>";

                echo "<ul>";

for ($col = 0; $col < 3; $col++) {

                echo "<li>".$cars[$row][$col]."</li>"; }

                echo "</ul>";}?>

 

for ($row = 0; $row < 7; $row++) {echo $image[$row][0];}

 

Array een dimensionaal

 

Naam

Volvo

BMW

Saab

De syntax is $cars = array(Volvo, BMW, Saab)

 

Twee Dimensionale Array

 

Name                    Stock     Sold

Volvo                    22           18

BMW                     15           13

Saab                      5              2

Land Rover         17           15

De syntax voor de bovenstaande twee dimensionale rij is

$cars = array  (

  array("Volvo",22,18),

  array("BMW",15,13),

  array("Saab",5,2),

  array("Land Rover",17,15) );

 

Om de items op scherm te tonen gebruiken we

for ($x=0; $x<3; $x++) {

for ($y; $y<3; $y++) {echo $cars}

 

Stel je moet de array toepassen in een zin

Van de Volvo hebben we nog 22 in stock. We hebben 18 verkocht.

 

<?php

$cars = array  (

  array("Volvo",22,18),

  array("BMW",15,13),

  array("Saab",5,2),

  array("Land Rover",17,15) );

 

for ($x=0; $x<3; $x++) {

$y=0;

echo "Van de" .$cars[$x][$y]." hebben we";

$y++;

echo $cars[$x][$y]." in stock. We hebben";

$y++;

echo $cars[$x][$y]." verkocht.";}

?>

 

Onderstaand hebben we een andere loop gebruikt voor hetzelfde resultaat.

We hebben daarnaast ook de benodigde styling aangebracht.

 

<?php

$cars = array  (

  array("Volvo",22,18),

  array("BMW",15,13),

  array("Saab",5,2),

  array("Land Rover",17,15) );

echo "<table style='font-family:Agency FB'><tr>" ;

for ($x=0; $x<3; $x++) {

echo "<tr><td style='color:RGB(0,100,255);'> Van de ".$cars[$x][0]." hebben we ".$cars[$x][1]." in stock. We hebben ".$cars[$x][2]." verkocht.</td></tr>";};

echo "<table>"

?>

 

Date

 

Date function toont datum en tijd afhankelijk van de parameters

date(format,timestamp)

format wordt bepaald door de onderstaande karakters

d - vertegenwoordigt de dag van de maand (01 to 31)

m - vertegenwoordigt een maand (01 to 12)

Y - vertegenwoordigt het jaarr (in four digits)

l (lowercase 'L') - vertegenwoordigt de dag van de week

Andere characters zoals "/", ".", or "-" kunnen gebruikt worden in de notatie.

vb van vier verschillende notaties

<?php

echo "vandaag is " . date("Y/m/d") . "<br>";

echo "vandaag is " . date("Y.m.d") . "<br>";

echo "vandaag is " . date("Y-m-d") . "<br>";

echo "vandaag is " . date("l");

?>

date() functie wordt onderstaand gebruikt met jaar en maand.

bv <?php echo date("Y-m")?>

Ook de tijd kan getoond worden

h - 12-uur format van een uur met nullen (01 to 12)

i - minuten met notatie (00 to 59)

s - seconden met notatie (00 to 59)

a - Ante meridiem en Post meridiem (am or pm)

Onderstaand een voorbeeld

<?php echo "The time is " . date("h:i:sa"); ?>

Ook de timezone kan geset worden als je het over de hele wereld goed wil hebben

<?php

date_default_timezone_set("America/New_York");

echo "The time is " . date("h:i:sa");

?>

 

Andere date functions zijn

mktime() met als syntax: mktime(hour,minute,second,month,day,year) dus

Een voorbeeld

<?php

$d=mktime(11, 14, 54, 8, 12, 2014);

echo "Created date is " . date("Y-m-d h:i:sa", $d);

?>

Het resultaat = 2014-08-12 11:14:54am

 

 

strtotime() met als syntax: strtotime(time,now)

Een voorbeeld

<?php

$d=strtotime("10:30pm April 15 2014");

echo "Created date is " . date("Y-m-d h:i:sa", $d);

?>

Het resultaat = 2014-04-15 10:30:00pm

Het werkt met verschillende variabelen

<?php

$d=strtotime("tomorrow");

echo date("Y-m-d h:i:sa", $d) . "<br>";

 

$d=strtotime("next Saturday");

echo date("Y-m-d h:i:sa", $d) . "<br>";

 

$d=strtotime("+3 Months");

echo date("Y-m-d h:i:sa", $d) . "<br>";

?>

Heeft als resultaat

2015-09-07 12:00:00am

2015-09-12 12:00:00am

2015-12-06 03:44:20am

 

Enkele vb van loops met de date function

toont de volgende 6 zaterdagen

Example

 

<?php

$startdate = strtotime("Saturday");

$enddate = strtotime("+6 weeks",$startdate);

while ($startdate < $enddate) {

  echo date("M d", $startdate),"<br>";

  $startdate = strtotime("+1 week", $startdate);

}

?>

Onderstaand vb toont het aantal dagen tot 4 July

<?php

$d1=strtotime("July 04");

$d2=ceil(($d1-time())/60/60/24);

echo "There are " . $d2 ." days until 4th of July.";

?>

 

Include en require

include maakt het mogelijk om de inhoud van een php file te includeren in een html script.

stel je hebt een php file footer.php met text.

<?php

echo "<p>Copyright &copy; 1999-" . date("Y") . " W3Schools.com</p>";

?>

Je kan footer.php includeren met de include statement

<html><body>

<h1>Welcome to my home page!</h1>

<p>Some text.</p>

<p>Some more text.</p>

<?php include 'footer.php';?>

</body></html>

 

Ander voorbeeld met een menu genaamd menu.php met verschillende verwijzingen

<?php

echo '<a href="/default.asp">Home</a> -

<a href="/html/default.asp">HTML Tutorial</a> -

<a href="/css/default.asp">CSS Tutorial</a> -

<a href="/js/default.asp">JavaScript Tutorial</a> -

<a href="default.asp">PHP Tutorial</a>';

?>

Deze wordt in de html gebracht met styling middels <div></div> elements

<html><body>

<div class="menu"><?php include 'menu.php';?></div>

<h1>Welcome to my home page!</h1>

<p>Some text.</p>

<p>Some more text.</p>

</body></html>

We kunnen ook variables die een styling aangeven includen als ze in een php file zijn ondergebracht

<?php $color='red';$car='BMW'; ?> is genaamd vars.php

vars en daarme de styling wordt geincludeerd middels de onderstaande script.

<html><body>

<h1>Welcome to my home page!</h1>

<?php include 'vars.php';

echo "I have a $color $car.";

?></body></html>

Require includeerd php files in php script, maar eist wel dat de php file die geincludeerd wordt bestaat.

Als de php file niet bestaat zal de script niet uitgevoerd worden. In geval van include loopt die wel.

De syntax

<?php require 'noFileExists.php';

echo "I have a $color $car."; ?>

 

Met de readfile() function kan je een file open en een aantal bytes tonen.

Syntax is

<?php  echo readfile("webdictionary.txt");  ?>

 

fopen(filename, mode)  een voorbeeld onderin

<?php

$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");

echo fread($myfile,filesize("webdictionary.txt"));

fclose($myfile); ?>

De file opent de file genaamd webdictionary.txt en leest de inhoud.

De verschillende modes zijn:

Modes  Description

r              Open a file for read only. File pointer starts at the beginning of the file

w            Open a file for write only. Erases the contents of the file or creates a new file if it doesn't exist. File pointer starts at the beginning of the file

a              Open a file for write only. The existing data in file is preserved. File pointer starts at the end of the file. Creates a new file if the file doesn't exist

x              Creates a new file for write only. Returns FALSE and an error if file already exists

r+            Open a file for read/write. File pointer starts at the beginning of the file

w+          Open a file for read/write. Erases the contents of the file or creates a new file if it doesn't exist. File pointer starts at the beginning of the file

a+           Open a file for read/write. The existing data in file is preserved. File pointer starts at the end of the file. Creates a new file if the file doesn't exist

x+           Creates a new file for read/write. Returns FALSE and an error if file already exists

 

De verschillende file handling functies zijn:

fopen("filenaam","mode") opent de file in een mode die aangeeft wat je ermee gaat doen.

fclose("filenaam") sluit de aangegeven openstaande file

fread("filenaam","aantal bytes") leest van een open file, het aangegeven aantal bytes

fget("filenaam") leest een enkele regel uit een openstaande file

fgetc("filenaam") leest een karakter uit een openstaande file

feof("filenaam") geeft aan dat het einde van de file bereikt is.

Deze functie is essentieel aan het einde van een loop van onbekende lengte.

 

Onderstaand enkele vb:

fread($myfile,filesize("webdictionary.txt")); leest webdictionary.txt tot het einde (bepaald door de filesize functie)

Onderstaande syntax opent een file, plaatst de eerste regel in de script en sluit hem daarna

<?php

$myfile = fopen("webdictionary.txt", "r");

echo fgets($myfile);

fclose($myfile);  ?>

feof() function checkt als het einde van een file bereikt is.

Onderstaand voorbeeld leest de file webdictionary.txt regel na regel tot het einde.

Sluit de loop met feof() om daarna de file te sluiten met fclose()

<?php

$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");

while(!feof($myfile)) {echo fgets($myfile) . "<br>";}/*loopt door het document totdat het einde bereikt is*/

fclose($myfile);  ?>

fgetc kan gesubstitueerd worden voor fgets voor hetzelfde resultaat. Uiteraard kan met de loop een bepaald

deel van het document uitgezonderd worden met condities en string functions.

 

Voor het aanpassen van een file vanaf PHP, moeten we die openen in de write mode bv

$myfile = fopen("testfile.txt", "w")

Deze functie zal een file creeren als hij niet bestaat of het openen, de inhoud vegen en de informatie erin schrijven.

<?php

$myfile = fopen("newfile.txt", "w") or die("Unable to open file!");

$txt = "Mickey Mouse\n";

fwrite($myfile, $txt);

$txt = "Minnie Mouse\n";

fwrite($myfile, $txt);

fclose($myfile);

?>

 

File UPloads

In je "php.ini" file, zoek naar file_uploads  en zet het op: file_uploads = On

Creer daarna de form die de gebruiker in staat stelt om een file te uploaden als in het vb hieronder:

<!DOCTYPE html>

<html><body>

<form action="upload.php" method="post" enctype="multipart/form-data">

    Select image to upload:

    <input type="file" name="fileToUpload" id="fileToUpload">

    <input type="submit" value="Upload Image" name="submit">

</form></body></html>

Met bovenstaande form wordt data gestuurd naar een file upload.php die we hieronder creeren:

<?php

$target_dir = "uploads/";

$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);

$uploadOk = 1;

$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);/*checkt als de imagefile de juiste extensie heeft*/

if(isset($_POST["submit"])) {$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);

if($check !== false)             {echo "File is an image - " . $check["mime"] . ".";                                          

                                                     $uploadOk = 1;}

else                                            {echo "File is not an image.";

                                     $uploadOk = 0; }}

?>

Voor de bovenstaande php file geldt hetvolgende:

$target_dir = "uploads/" - specifies the directory where the file is going to be placed

$target_file specifies the path of the file to be uploaded

$uploadOk=1 is not used yet (will be used later)

$imageFileType holds the file extension of the file

Next, check if the image file is an actual image or a fake image

 

Je moet ook nog kijken als de file al bestaat in de upload directory. Alszo wordt hij niet geladen.

 

if (file_exists($target_file)) {

    echo "Sorry, file already exists.";

    $uploadOk = 0;}

 

Je mag een limit plaatsen aan de filesize. Als de size groter is dan bepaald aantal bytes, wordt hij geweigerd.

if ($_FILES["fileToUpload"]["size"] > 500000)

{echo "Sorry, your file is too large.";

 $uploadOk = 0;}

 

De complete php upload file is dus:

 

<?php

$target_dir = "uploads/";

$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);

$uploadOk = 1;

$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);

// Check if image file is a actual image or fake image

if(isset($_POST["submit"])) {

    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);

    if($check !== false) {

        echo "File is an image - " . $check["mime"] . ".";

        $uploadOk = 1;

    } else {

        echo "File is not an image.";

        $uploadOk = 0;

    }

}

// Check if file already exists

if (file_exists($target_file)) {

    echo "Sorry, file already exists.";

    $uploadOk = 0;

}

// Check file size

if ($_FILES["fileToUpload"]["size"] > 500000) {

    echo "Sorry, your file is too large.";

    $uploadOk = 0;

}

// Allow certain file formats

if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"

&& $imageFileType != "gif" ) {

    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";

    $uploadOk = 0;

}

// Check if $uploadOk is set to 0 by an error

if ($uploadOk == 0) {

    echo "Sorry, your file was not uploaded.";

// if everything is ok, try to upload file

} else {

    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {

        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";

    } else {  echo "Sorry, there was an error uploading your file.";    }}?>

 

Cookies worden op de gebruikerscomputer gecreerd om de gebruiker toegang te geven tot aan hem aangepaste informatie.

setcookie(name, value, expire, path, domain, secure, httponly); Hierbij is alleen de name verplicht.

 

Als een user een webpage opent wordt er een session geopend, die informatie van de user op de webserver plaatst,

waaraan de webserver de user kan herkennen.$_SESSION is de variabele waarmee een session geopend wordt.

De session plaatst een code (key) op de computer van de gebruiker. Als de gebruiker de webpage opent zoekt de session

naar de key en als hij de key vindt, wordt de gebruikersbrowser geconnect met de session van de gebruiker.

 

 

Error messages

 

er zijn drie typen error messages

die() statement

custom errors en error triggers

error reporting

 

voorbeeld van een die() statement

<?php

if(!file_exists("welcome.txt")) {die("File not found");

} else { $file=fopen("welcome.txt","r");}?>

Geeft aan dat de gebruiker File not found te zien krijgt als de file die hij probeert te openen niet bestaat.

 

De error function heeft de volgende syntax

error_function(error_level,error_message, error_file,error_line,error_context)

Parameter          Description

error_level         Required. Geeft in cijfers aan hoe ernstig de error is.

error_message Required. Is de error die jij voor de gebruiker specificeert

error_file             Optional. Geeft aan in welke file de error zit.

error_line            Optional. Geeft aan de regel waarin de error voorkomt

error_context   Optional. Geeft aan een rij met elke variabele en waarde waarmee de error in voorkwam`

 

De error level is een getal die aangeeft hoe erg de error is

Value    Constant              Description

2              E_WARNING      Non-fatal run-time errors. Execution of the script is not halted

8              E_NOTICE            Run-time notices. The script found something that might be an error, but could also happen when running a script normally

256         E_USER_ERROR                Fatal user-generated error. This is like an E_ERROR set by the programmer using the PHP function trigger_error()

512         E_USER_WARNING        Non-fatal user-generated warning. This is like an E_WARNING set by the programmer using the PHP function trigger_error()

1024       E_USER_NOTICE              User-generated notice. This is like an E_NOTICE set by the programmer using the PHP function trigger_error()

4096       E_RECOVERABLE_ERROR              Catchable fatal error. This is like an E_ERROR but can be caught by a user defined handle (see also set_error_handler())

8191       E_ALL    All errors and warnings (E_STRICT became a part of E_ALL in PHP 5.4)

 

 

trigger_error() function

Onderstaand wordt de error getriggered en krijgt de gebruiker een message als de waarde van de variabele groter is dan 1

<?php

$test=2;

if ($test>1) {trigger_error("Value must be 1 or below");}

?>

Er zijn verschillende typen errors die getriggered kunnen worden

E_USER_ERROR - Fatale fout van de gebruiker. De script wordt dan niet uitgevoerd

E_USER_WARNING - Niet fatale fout van de gebruiker. Er wordt een waarschuwing gegeven maar de script loopt door.

E_USER_NOTICE - Standaard melding aan de gebruiker. Iets opmerkelijks gevonden in de input, kan maar hoeft geen error te zijn.

Een voorbeeld

<?php

function customError($errno, $errstr){

  echo "<b>Error:</b> [$errno] $errstr<br>";

  echo "Ending Script";

  die();}

set_error_handler("customError",E_USER_WARNING);

$test=2;

if ($test>1) {trigger_error("Value must be 1 or below",E_USER_WARNING);}

?>

De error kan ook per e-mail gestuurd worden.

Zie onderstaand voorbeeld

<?php

//error handler function

function customError($errno, $errstr) {

  echo "<b>Error:</b> [$errno] $errstr<br>";

  echo "Ending Script";

  die();}

//set error handler

set_error_handler("customError",E_USER_WARNING);

//trigger error

$test=2;

if ($test>1) { trigger_error("Value must be 1 or below",E_USER_WARNING);}

?>

 

Exception gaat om met errors.

Het wordt gebruikt om de normale flow van code uitvoering te veranderen als er zich een error (exceptional condition) voordoet.

Als een exception getriggered wordt

Wordt de code status gesaved

de code excecutie switched naar een vooraf geformuleerde exception handler function

Afhankelijk van de situatie, zal de handler:

                de executie van de saved code status laten voortgaan;

                de script beeindigen;

                de script vanaf een andere locatie in de code laten voortgaan.

Er zijn verschillende handling methods

 

Basis gebruik van exceptions

Creeren van een custom exception handler

Meerdere exceptions

Re-throw exceptions

Setup van een top level exception handler

 

Try throw catch

try: plaats de functie in een try block, die de functie test en normaal laat lopen als het geen error ontdekt

throw: is de errormessage die de exception moet genereren als er een error ontdekt wordt. Elke throw heeft een catch

catch: ontvangt een exception en creert een object met de informatie van de exception

vb

<?php

function checkNum($number) {

  if($number>1) { throw new Exception("Value must be 1 or below"); }

  return true;}

try {  checkNum(2);  echo 'If you see this, the number is 1 or below';}

catch(Exception $e) { echo 'Message: ' .$e->getMessage();}

?>

De checkNum() function checkt als een getal groter is dan 1 en gooit (throw) dan een exception

De functie wordt opgeroepen in een try block. De waarde gooit een exception.

de catch block ontvangt de exception en creert een object $->getMessage() van de exception object

De error message van de exception wordt ge-echoed door $e-> getMessage() van de exception object.

 

Je kan een eigengemaakte exception genereren als een extensie van de exception class.

 

<?php

class customException extends Exception {

  public function errorMessage() {

    $errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()

    .': <b>'.$this->getMessage().'</b> is not a valid E-Mail address';

    return $errorMsg;  } }

$email = "someone@example...com";

try {

  if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) {

    throw new customException($email);  }}

catch (customException $e) {echo $e->errorMessage();}

?>

 

Eerst wordt de errormessage gedefinieerd met variabelen van de Exception class

Dan wordt de functie in een try block geformuleerd met een throw

Als er een exception gegooit wordt wordt die in de catchblock opgevangen met de in de pulic function geformuleerde message

Zoniet dan loopt de code zondermeer.

 

<?php

class customException extends Exception {

  public function errorMessage() {

    $errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()

    .': <b>'.$this->getMessage().'</b> is not a valid E-Mail address';

    return $errorMsg;  }}

$email = "someone@example.com";

try {

  if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) {

    throw new customException($email); }

  if(strpos($email, "example") !== FALSE) {

    throw new Exception("$email is an example e-mail"); }}

catch (customException $e) { echo $e->errorMessage();}

catch(Exception $e) { echo $e->getMessage();}

?>

 

MYSQL

Databases slaan informatie categorisch op.

Een bedrijf kan een database hebben met verschillende tabellen:

Employees

Products

Customers

Orders

PHP en MySQL zijn cross-platform : wat je in Windows hebt ontwikkeld, kan je op een Unix platform laten lopen.

Database query: is een request aan de database naar specifieke informatie, die een recordset oplevert.

 

Om met een database te werken moet je eerst een connectie hiermee maken. Dit doe je middels de pdo function.

<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {    $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully";  }
catch(PDOException $e)
    {   echo "Connection failed: " . $e->getMessage();    }
?>

 

PHP 5 MySQLi functions

Function                              Description

mysqli_affected_rows()               Returns the number of affected rows in the previous MySQL operation

mysqli_autocommit()    Turns on or off auto-committing database modifications

mysqli_change_user()   Changes the user of the specified database connection

mysqli_character_set_name()   Returns the default character set for the database connection

mysqli_close()                   Closes a previously opened database connection

mysqli_commit()                              Commits the current transaction

mysqli_connect_errno()               Returns the error code from the last connection error

mysqli_connect_error()                Returns the error description from the last connection error

mysqli_connect()             Opens a new connection to the MySQL server

mysqli_data_seek()        Adjusts the result pointer to an arbitrary row in the result-set

mysqli_debug()                                Performs debugging operations

mysqli_dump_debug_info()       Dumps debugging info into the log

mysqli_errno()                  Returns the last error code for the most recent function call

mysqli_error_list()          Returns a list of errors for the most recent function call

mysqli_error()                   Returns the last error description for the most recent function call

mysqli_fetch_all()           Fetches all result rows as an associative array, a numeric array, or both

mysqli_fetch_array()     Fetches a result row as an associative, a numeric array, or both

mysqli_fetch_assoc()     Fetches a result row as an associative array

mysqli_fetch_field_direct()        Returns meta-data for a single field in the result set, as an object

mysqli_fetch_field()       Returns the next field in the result set, as an object

mysqli_fetch_fields()     Returns an array of objects that represent the fields in a result set

mysqli_fetch_lengths() Returns the lengths of the columns of the current row in the result set

mysqli_fetch_object()   Returns the current row of a result set, as an object

mysqli_fetch_row()        Fetches one row from a result-set and returns it as an enumerated array

mysqli_field_count()      Returns the number of columns for the most recent query

mysqli_field_seek()        Sets the field cursor to the given field offset

mysqli_field_tell()           Returns the position of the field cursor

mysqli_free_result()      Frees the memory associated with a result

mysqli_get_charset()     Returns a character set object

mysqli_get_client_info()              Returns the MySQL client library version

mysqli_get_client_stats()            Returns statistics about client per-process

mysqli_get_client_version()       Returns the MySQL client library version as an integer

mysqli_get_connection_stats() Returns statistics about the client connection

mysqli_get_host_info()                Returns the MySQL server hostname and the connection type

mysqli_get_proto_info()              Returns the MySQL protocol version

mysqli_get_server_info()            Returns the MySQL server version

mysqli_get_server_version()     Returns the MySQL server version as an integer

mysqli_info()                     Returns information about the most recently executed query

mysqli_init()                       Initializes MySQLi and returns a resource for use with mysqli_real_connect()

mysqli_insert_id()           Returns the auto-generated id used in the last query

mysqli_kill()                        Asks the server to kill a MySQL thread

mysqli_more_results()  Checks if there are more results from a multi query

mysqli_multi_query()    Performs one or more queries on the database

mysqli_next_result()     Prepares the next result set from mysqli_multi_query()

mysqli_num_fields()      Returns the number of fields in a result set

mysqli_num_rows()       Returns the number of rows in a result set

mysqli_options()              Sets extra connect options and affect behavior for a connection

mysqli_ping()                    Pings a server connection, or tries to reconnect if the connection has gone down

mysqli_prepare()             Prepares an SQL statement for execution

mysqli_query()                 Performs a query against the database

mysqli_real_connect()  Opens a new connection to the MySQL server

mysqli_real_escape_string()      Escapes special characters in a string for use in an SQL statement

mysqli_real_query()       Executes an SQL query

mysqli_reap_async_query()       Returns the result from async query

mysqli_refresh()              Refreshes tables or caches, or resets the replication server information

mysqli_rollback()             Rolls back the current transaction for the database

mysqli_select_db()         Changes the default database for the connection

mysqli_set_charset()     Sets the default client character set

mysqli_set_local_infile_default()             Unsets user defined handler for load local infile command

mysqli_set_local_infile_handler()            Set callback function for LOAD DATA LOCAL INFILE command

mysqli_sqlstate()             Returns the SQLSTATE error code for the last MySQL operation

mysqli_ssl_set()               Used to establish secure connections using SSL

mysqli_stat()                     Returns the current system status

mysqli_stmt_init()           Initializes a statement and returns an object for use with mysqli_stmt_prepare()

mysqli_store_result()    Transfers a result set from the last query

mysqli_thread_id()         Returns the thread ID for the current connection

mysqli_thread_safe()    Returns whether the client library is compiled as thread-safe

mysqli_use_result()       Initiates the retrieval of a result set from the last query executed using the mysqli_real_query()

mysqli_warning_count()              Returns the number of warnings from the last query in the connection