PHP & MySQL gevorderd

Maat: px
Weergave met pagina beginnen:

Download "PHP & MySQL gevorderd"

Transcriptie

1 PHP & MySQL gevorderd

2 Inhoudsopgave Inleiding! 4 Voorkennis voor PHP & SQL! 4 Database resources! 4 De werking van een PHP-module op een webserver! 5 Opbouw web-pages (php)! 6 MySQL! 7 Het beveiligen van phpmyadmin! 7 De opbouw van een database! 8 PHP koppelen met een Database! 8 Gegevens uit een database opvragen! 10 Invoegen van records! 13 Formuliergegevens toevoegen aan een Database! 14 Query met WHERE en gegevens uit meerdere tabellen! 15 ORDER BY statement! 16 Update van records! 17 Verwijderen van records! 18 Meer PHP functies voor MySQL bewerkingen! 19 PHP security! 21 Wachtwoord onleesbaar voor database- administrators! 21 Validatie op invoervelden.! 24 Capcha (no-robot invoer beveiliging)! 26 IP- highjacking! 27 Invoerveld beveiligingen tegen sql-injections.! 28 Sessies! 29 Sessie beveiliging! 29 Sessie-tijd! 31 Mailen met PHP! 32 Basis tekst verzenden!

3 Een HTML-mail verzenden! 33 Een HTML-mail verzenden met een attachment! 34 PDFʼs maken met PHP! 38 Cookies! 38 Toepassingen! 41 Toepassing1: SQL database koppeling! 41 Toepassing2: SQL toevoegen van een tupel in een database! 41 Toepassing3: SQL opvragen en beheren database gegevens! 42 Toepassing4: update tabelvelden vanuit een VIEW!

4 Inleiding PHP & MySQL gevorderd Deze handleiding is een vervolg op basis en gevorderde PHP. De focus ligt volledig op de koppeling tussen PHP en een MySQL- database. Onderwerpen die aanbod komen zijn: hoe gegevens uit een MySQL-database gehaald kunnen worden, toegevoegd, geupdate en andere bewerkingen. De derde PHP-handleidingen geven een goede basis voor het toepassen van PHP met de juiste gereedschappen om zelf meer functionaliteit aan een website toe te voegen. Het vinden van de juiste, simpele en eenduidige code voor een behoefte blijft een combi van: zelf bedenken of vinden in ander (online) handleidingen of forums. Na de twee beschikbare handleidingen en de juiste drive, zal het zeker moeten lukken :-) Voorkennis voor PHP & SQL Ervaring hebben met inzicht in het volgende moeten hebben: HTML-code (en of XHTM). Gebruik en installatie van een webservers en een databases (bijv: Apache als web-server, MySQL als database of gecombineerd in: XAMPP of MAMP) Basiskennis van PHP. Basis SQL-statements (query- syntax en database begrippen) Database resources Om de PHP-code die in deze handleiding gebruikt word toe te passen is een database nodig. De eenvoudigste manier om dit te doen is door XAMPP of MAMP te installeren. Activeer naast Apache ook MySQL en maak hierin een database aan die benaderbaar is. De databasenaam moet bekend zijn, een gebruikersnaam en wachtwoord met uitsluitend de rechten die nodig zijn om de gewenste acties uit te kunnen voeren. Zie meer informatie hierover; zie materiaal over databases op kerssies64.net. Hier zijn ook exports te vinden van databases, die geïmporteerd kunnen worden in een eigen gemaakte database, waarna deze te gebruiken zijn om de gebruikte voorbeelden in deze handleiding uit te voeren uit te voeren. Door zelf databases met tabellen en content op te zetten wordt deze vaardigheid uiteraard verbeterd!

5 De werking van een PHP-module op een webserver Ter opfrissing; PHP is een module die aan de server-kant werkt. De client krijgt uiteindelijk pure HTML-code toegestuurd waarmee een page wordt weergegeven. Hoe deze page tot stand is voor de client onzichtbaar. Hieronder staan wat gebeurt er als een php-webpagina wordt opvraagt door een client: 1. Aan de client zijde wordt een verzoek gedaan naar een (php)webpagina op een bepaalde webserver, bijvoorbeeld: client 7. De ontvangen code wordt ontvangen door de client. In de browser wordt deze omgezet in een leesbare pagina 6. Het resultaat van de php-module wordt samengevoegd met eventueel aanwezige html-code. Deze code wordt door de webserver verstuurd naar de client 2. De webserver zoekt deze pagina op in z n filesysteem. 3. Omdat het een.php pagina is, stuurt de webserver deze pagina naar de php-module. Deze module moet op de webserver zijn geïnstalleerd 4. De php-module benaderd een database en voert hierop acties uit en geeft evt waarden terug database webserver.php 5. De php-module voert het phpscript uit en geeft het resultaat terug aan de webserver php-module

6 Opbouw web-pages (php) Bij het maken van uitgebreidere websites wordt al snel duidelijk dat het overzicht al snel zoek is. Bij pure HTML-websites alleen al kan het overzicht zoek raken. De eerste stap ter verbetering is regels afbreken en vaker enteren. Door gebruik te maken van tabs, wordt het overzicht nog beter. Zeker wanneer er consequent wordt ingesprongen per tag en een tab wordt terug genomen wanneer deze wordt gesloten. Een uitkomst is het scheiden van opmaak en html-code, wat met CSS gebeurt. PHP & MySQL gevorderd Dit scheiden en overzichtelijk houden van code wordt steeds belangrijker. Zo kunnen bepaalde delen met includes in andere documenten worden gezet. Sessies moeten als eerste worden opgezet, en zo meer. Hieronder is een grafische weergave gegeven, als advies, hoe een phpdocument opgebouwd kan worden: <?php sessies starten variabelen instellen includes naar andere bronnen <html> <head> <title> titel browser-tab </title> link favicon.ico META voor "description" META voor "keywords" link CSS-bestand tbv opmaak HTML </head> <?php Alle PHP-logica en berekeningen <body> document opbouw en weergeven formulieren en content, evt dmv PHP-echo s </body> </html>

7 MySQL MySQL is het populairste open-source databasesystemen, omdat deze database vrij te installeren en te gebruiken is, stabiel is en een goede ondersteuning heeft. De MySQL database wordt zeer vaak gebruikt in combinatie met PHP. De gegevens die in MySQL worden opgeslagen in tabellen. Een tabel is verzameling van ingevoerde gegevens die bestaan uit kolommen en rijen. Elke rij is een unieke set informatie die is opgebouwd uit meerdere kolomen elk met specifieke gegevens. De databases zijn handig voor het opslaan van informatie in categorieën. Een bedrijf zou een database kunnen hebben met de volgende tabellen: Werknemers, Producten, Klanten en Orders. Het beveiligen van phpmyadmin Tijdens de ontwikkeling van een website met daaronder een MySQL-database is het handig om de testomgeving op het locale-systeem te beveiligen. Als dit niet wordt gedaan, dan kan iedereen binnen het lokale-netwerk (LAN) de database benaderen en daarin wijzigingen maken. Dit komt door: Het beheer van de database gebeurt namelijk altijd met phpmyadmin phpmyadmin heeft een standaard login en geen wachtwoord Netwerk scanners kunnen up IP-adres vinden en zien dat er een webserver actief is en de database benaderen. ( ) De phpmyadmin beveiligen kan als volgt: Maak een nieuwe gebruiker aan bij Rechten en geef die volledige toegang (ALL PRIVILEGES) Open config.inc.php in de XAMPP-map Zoek de volgende regels, of voeg ze toe: $cfg['blowfish_secret'] = 'wachtwoord'; $cfg['pmaabsoluteuri'] = $cfg['servers'][$i]['auth_type'] = 'cookie'; $cfg['servers'][$i]['user'] = 'gebruikersnaam'; $cfg['servers'][$i]['password'] = 'wachtwoord'; $cfg['servers'][$i]['allownopassword'] = false; Uiteraard moeten de eigen gegevens tussen de quotes komen

8 De opbouw van een database Een database bevat altijd één, maar mestal meerdere tabellen. Elke tabel moet en naam hebben (b.v. Klanten of Orders ). De tabellen bevatten records (rijen) met gegevens. Hieronder is een voorbeeld van een tabel genoemd Personen : ID achternaam tussenv voornaam adres hnr plaats 1 Pietersen Hans Doorweg 100 Zwolle 2 Kracht van Jip Straatlaan 3 Zwolle 4 Steijn Janneke Hobbelpad 28 Amersfoort De tabel bevat hierboven drie records (voor elke contactpersoon) zijn zes kolommen (AchterNaam, Tussen, VoorNaam, Adres, Nummer en Stad). Meer over de opbouw en constructie van databases is te vinden in de kerssies64.net readers databases en SQL, of andere (online) handleidingen. PHP koppelen met een Database Het maken van een koppeling met een database is de minimale vereiste om met PHP (of een andere taal) bewerkingen uit te voeren of vragen aan een database te stellen. In PHP, wordt de koppeling tussen het PHP- script en de database gedaan met de mysql_connect () functie. Syntaxis mysql_connect (servernaam, gebruikersbenaming, wachtwoord); Parameter servernaam login wachtwoord Beschrijving Optioneel; Specificeert de server om te verbinden met. De standaard waarde is localhost: 3306 Optioneel; Specificeert de gebruikersbenaming om het programma te openen. De standaardwaarde is de gebruiker die rechten heeft op het serverproces Optioneel; Specificeert het wachtwoord om in te loggen op de database. Standaard is:. Tip: Er zijn meer beschikbare parameters, maar de hierboven vermelde zijn het belangrijkst. Voor meer details wordt verwezen naar andere (online) materiaal

9 Het is verstandig meerdere gebruikers op de database aan te maken, zodat afhankelijk van de ingelogde gebruiker gespecificeerde database rechten beschikbaar komen. Bijvoorbeeld: PHP & MySQL gevorderd een administrator met alle rechten een administrator met alle rechten als reserve (wordt allen in nood gebruikt) een hoofdgebruiker waarmee online beheer op de database wordt uitgevoerd gebruiker(s) met beperkte rechten die afhankelijk van hun profiel gespecificeerde rechten op de database hebben De kerssies64.net site bevat enkele geëxporteerde tabellen die in een eigen database geïmporteerd kunnen worden, waarna de PHP-script code direct uitgevoerd kan worden. Let op dat de server, de databasenaam, het login en wachtwoord anders kunnen zijn... Voorbeeld: In het volgende voorbeeld slaat de koppeling in een variabele ($con) voor recenter gebruik in het script op. Het die gedeelte zal worden uitgevoerd als de koppeling niet opgebouwd kan worden: <html> <?php $con = mysql_connect('localhost',"login","ww"); //host kan ook IP-adres bevatten bijv: , of if (!$con) die('geen connectie kunnen maken: '. mysql_error()); // eigen code else echo 'connectie opgebouwd'; mysql_close($con); //verbinding wordt gesloten met de database </html> Bij de servernaam wordt hier localhost gebruikt, maar dit is afhankelijk van de servernaam waarop de database is opgestart. In plaats van een naam kan er ook een IP-adres worden gebruikt. Localhost heeft altijd IP-adres , dit werkt gewoon. Net als elke ander IP-adres waar een server met database actief is, mits de poorten in de firewall open staan ;-). Een koppeling met een database zal automatisch worden gesloten wanneer het script beëindigt. Om de koppeling eerder te sluiten, gebruik dan de mysql_close () functie

10 Gegevens uit een database opvragen Een query is een vraag of een verzoek om gegevens uit een database. Met MySQL, kunnen specifieke gegevens worden opgevraagd en een recordset met gewenste informatie terug geven. Een voorbeeld van een simpele SQL- query: SELECT AchterNaam FROM Gebruikers De vraag selecteert hierboven alle gegevens in de kolom AchterNaam uit de tabel Gebruikers en kan een recordset zoals hieronder terug geven: AchterNaam Moes Blijvers Zetters Syntaxis SELECTEER kolom_naam FROM tabel_naam Om PHP het SQL- statement uit te laten voeren is de functie: mysql_query () nodig. Deze functie wordt gebruikt om een query of een opdracht naar een MySQL- koppeling te verzenden. Voorbeeld: <?php $con = mysql_connect('localhost',"login","ww"); if (!$con) die('geen koppeling met de database: '. mysql_error()); else echo 'connectie opgebouwd <br><br>'; mysql_select_db('phpsql', $con); //selecteerd de database $resultaat = mysql_query("select * FROM Gebruikers"); //zet query resultaat in een PHP-array while($row = mysql_fetch_array($resultaat)) echo $row["voornaam"]. " ". $row["achternaam"]; echo '<br />'; //voor elke record in de php-array wordt een regel gemaakt. mysql_close($con);

11 Het voorbeeld slaat hierboven de gegevens op die door de functie mysql_query () zijn teruggekeerd in de variabele $resultaat. Daarna wordt mysql_fetch_array () functie gebruikt om de eerste rij van recordset als een array terug te geven. Elke vraag aan mysql_fetch_array () geeft de volgende rij in recordset. De whileloop loop door alle records in recordset om de waarden van elke rij te printen. Hiervoor wordt de $row variabele gebruikt: $row [ FirstName ] en: $row [ AchterNaam ]. Op het scherm wordt als uitkomst weergegeven: connectie opgebouwd Hans Pietersen Jip Kracht Janneke Steijn Natuurlijk kunnen de gegevens ook in een HTML- tabel worden weergegeven. Zie hiervoor PHP- basis materiaal van kerssies64.net

12 Syntaxen voor SQL-statements <? $con = mysql_connect ( localhost, login, ww ); if (! $con) die ( kon niet verbinden met:. mysql_error ()); mysql_select_db ( my_db, $con); $resultaat = mysql_query ( <SQL-STATEMENT>"); while ($row = mysql_fetch_array ($resultaat)) echo $row [ <Kolom1> ].. $row [ <Kolom2> ]; echo <br/> ; <? $con = mysql_connect ( localhost, login, ww ); if (! $con) die ( kon niet verbinden met:. mysql_error ()); mysql_select_db ( my_db, $con); $resultaat = mysql_query ( <SQL-STATEMENT> ); while ($row = mysql_fetch_array ($resultaat)) echo $row [ <Kolom1> ]; echo. $row [ <Kolom2> ]; echo. $row [ <Kolom3> ]; echo <br/> ; mysql_close ($con); TIP: Zet alle queries in één bestand en geef elke query een eigen variabele. Doormiddel van een include per web- page zijn alle variabelen queries beschikbaar. Bij wijzigingen in de database staan alle query bij elkaar, dit is makkelijker te beheren. TIP: Echo uit te voeren queries en probeer deze uit direct in de MySQL- database. Zo is het eenvoudig te controleren of een query wel correct is uitgewerkt

13 Invoegen van records Het INSERT INTOTO statement wordt gebruikt om nieuwe records aan een tabel toe te voegen in een aangegeven tabel. Syntaxis Het is mogelijk om het INSERT INTO statement op twee manieren te gebruiken. De eerste vorm specificeert niet de kolomnamen waarin de gegevens worden geplaatst, dus alleen de waarden worden genoemd in de juiste kolomvolgorde: INSERT INTO tabel_naam VALUES (Waarde1, Waarde2, Waarde3, ) De waarden worden ook op de zelfde volgorde in de kolommen geplaatst, deze vorm van invoeren wordt veel gebruikt wanneer altijd alle kolommen een waarde moeten hebben. De tweede vorm specificeert zowel de op te nemen kolomnamen als de waarden: INSERT INTO tabel_naam (kolom1, kolom2, kolom4, ) VALUES (Waarde1, Waarde2, waarde4, ) Om PHP deze sql- statements uit te laten voeren moet de mysql_query () functie gebruiken worden. Voorbeeld: In de tabel Gebruikers worden de kolommen: VoorNaam, AchterNaam en Plaats gevuld. Het volgende voorbeeld voegt twee nieuwe records toe aan de tabel Gebruikers : <? $con = mysql_connect ( localhost, login, ww ); if (! $con) die ( kon niet verbinden met:. mysql_error ()); mysql_select_db ( PHPsql, $con); mysql_query ( INSERT INTO Gebruikers (VoorNaam, AchterNaam, Plaats) VALUES ( Piet, Koetsier, Rotterdam ) ); mysql_query ( INSERT INTO Gebruikers (VoorNaam, AchterNaam, Plaats) VALUES ( Glenn, Azar, Naarden ) ); mysql_close ($con);

14 Formuliergegevens toevoegen aan een Database Doormiddel van een HTML formulier worden de kolommen van een nieuw record gevult. Daarnaast wordt één veld gevuld door middel van autoincrement van MySQL en één veld wordt gevuld met een waarde uit een variabele. Het HTML-formulier: <html> <head> <title>invoegen Gebruiker</title> </head> <body> <form action="invoegen.php" method="post"> Voornaam: <input type="text" name="voornaam"> Tussen: <input type="text" name="tussen"> Achternaam: <input type="text" name="achternaam"><br> Adres: <input type="text" name="adres" /><input type="text" name="huisnr"><br> Plaats: <input type="text" name="plaats"><br> <input type="submit" /> </form> </body> </html> Het bestand invoegen.php verbindt zich met een server en daarna met een database. De mysql_query () functie bevat een variabele met daarin het INSERT INTO statement, en zal de gegevens uit het formulier toevoegen. Hier is de pagina invoegen.php : <html> <title>voer gegevens in </title> <body> <?php $con = mysql_connect ('localhost',"login","ww"); // koppeling met de database-server, gebruikersnaam en wachtwoord if (! $con) die ('kon niet verbinden met: '. mysql_error ()); echo 'OK, er is een verbinding <br>'; mysql_select_db ('PHPsql', $con); // PHPsql is de naam van de MySQL-database echo 'OK, de database is geselecteerd <br>'; $MemberDatum = date("y-m-d"); // datum wanneer een gebruiker is toegevoegd. echo 'Waarde nieuw record '.$MemberDatum.'<br>';

15 // ID in de tabel is 'autoincrement' en wordt automatisch door MySQL opgehoogd. $sql = "INSERT INTO Gebruikers (MemberDatum, AchterNaam, Tussen, VoorNaam, Adres, HuisNr, Plaats) VALUES ('$MemberDatum','$_POST[AchterNaam]', '$_POST[Tussen]', '$_POST[VoorNaam]', '$_POST[Adres]', '$_POST[HuisNr]', '$_POST[Plaats]')"; mysql_query ($sql,$con); // Tabelnaam en alle genoemde kolom-namen waarin de waarden vervolgens worden geplaatst if (! $con) echo "error"; else echo "1 record toegevoegd"; mysql_close ($con); </html> Query met WHERE en gegevens uit meerdere tabellen Syntax SELECT kolom(en) FROM tabel_naam WHERE kolom(en) en operator waarde AND tabel1.kolom-x = tabel2.kolom-x Voorbeeld: <?php $con = mysql_connect("localhost","login","ww"); if (!$con) die('geen verbinding met de database: '. mysql_error()); mysql_select_db("phpsql", $con); $sql = "SELECT AchterNaam, User, WachtWoord FROM Gebruikers, Login WHERE VoorNaam= Hans AND Gebruikers.ID = Login.ID ; $resultaat = mysql_query($sql) while($row = mysql_fetch_array($resultaat)) echo $row['achternaam']. " ". $row[user]. " ". $row[wachtwoord]; echo "<br />";

16 ORDER BY statement Syntax SELECT kolom(en) FROM tabel_naam ORDER BY kolom(en) ASC DESC <?php $con = mysql_connect("localhost","login","ww"); if (!$con) die('geen verbinding met de database: '. mysql_error()); mysql_select_db("phpsql", $con); $sql = SELECT AchterNaam, VoorNaam FROM Gebruikers WHERE Plaats = 'Zwolle' ORDER BY AchterNaam DESC ; $resultaat = mysql_query($sql); while($row = mysql_fetch_array($resultaat)) echo $row['achternaam']. " ". $row[voornaam]; echo "<br />";

17 Update van records De statement UPDATE wordt gebruikt om gegevens in een record van een tabel te wijzigen. Syntaxis UPDATE tabel_naam UPDATE kolom1=values, kolom2=values2, WHERE een_kolom=een_values Tip: Merk op dat de WHERE clausule in de syntaxis bij het UPDATE statement. WHERE specificeert welk record moeten worden bijgewerkt. Wordt de WHERE weglaten, dan zullen alle records worden bijgewerkt! Voorbeeld: Het volgende voorbeeld werkt sommige gegevens in de tabel van Personen bij : <? $con = mysql_connect ("localhost", "login", "ww"); if (! $con) die ('kon niet verbinden: '. mysql_error ()); mysql_select_db ("PHPsql", $con); mysql_query ("UPDATE Gebruikers SET Plaats = 'Groningen' WHERE VoorNaam = 'Hans' AND AchterNaam = 'Pietersen'"); echo 'update van record uitgevoerd'; mysql_close ($con);

18 Verwijderen van records Het DELETE statement wordt gebruikt om records uit een tabel te verwijderen. Syntaxis DELETE FROM tabel_naam WHERE enkele_ kolom= enkele_waarden Tip: Merk op dat de WHERE clausule in de syntaxis bij het DELETE statement. WHERE specificeert welk record moeten worden verwijdert. Wordt WHERE weglaten, dan zullen alle records worden verwijdert! Het volgende voorbeeld verwijdert alle records in de tabel van Gebruikers waar AchterNaam Pietersen is: <? $con = mysql_connect ("localhost", "test", "test"); if (! $con) die ("kon niet verbinden: ". mysql_error ()); mysql_select_db ("PHPsql", $con); mysql_query ("DELETE FROM Gebruikers WHERE AchterNaam='Pietersen'"); echo "record verwijderd <br>" mysql_close ($con);

19 Meer PHP functies voor MySQL bewerkingen (engelse uitleg) Functie mysql_affected_rows() mysql_change_user() mysql_client_encoding() mysql_close() mysql_connect() mysql_create_db() mysql_data_seek() mysql_db_name() mysql_db_query() mysql_drop_db() mysql_errno() mysql_error() mysql_escape_string() mysql_fetch_array() mysql_fetch_assoc() mysql_fetch_field() mysql_fetch_lengths() mysql_fetch_object() mysql_fetch_row() mysql_field_flags() mysql_field_len() mysql_field_name() mysql_field_seek() mysql_field_table() mysql_field_type() mysql_free_result() mysql_get_client_info() mysql_get_host_info() mysql_get_proto_info() mysql_get_server_info() mysql_info() mysql_insert_id() Beschrijving Returns the number of affected rows in the previous MySQL operation Deprecated. Changes the user of the current MySQL connection Returns the name of the character set for the current connection Closes a non-persistent MySQL connection Opens a non-persistent MySQL connection Deprecated. Creates a new MySQL database. Use mysql_query() instead Moves the record pointer Returns a database name from a call to mysql_list_dbs() Deprecated. Sends a MySQL query. Use mysql_select_db() and mysql_query() instead Deprecated. Deletes a MySQL database. Use mysql_query() instead Returns the error number of the last MySQL operation Returns the error description of the last MySQL operation Deprecated. Escapes a string for use in a mysql_query. Use mysql_real_escape_string() instead Returns a row from a recordset as an associative array and/or a numeric array Returns a row from a recordset as an associative array Returns column info from a recordset as an object Returns the length of the contents of each field in a result row Returns a row from a recordset as an object Returns a row from a recordset as a numeric array Returns the flags associated with a field in a recordset Returns the maximum length of a field in a recordset Returns the name of a field in a recordset Moves the result pointer to a specified field Returns the name of the table the specified field is in Returns the type of a field in a recordset Free result memory Returns MySQL client info Returns MySQL host info Returns MySQL protocol info Returns MySQL server info Returns information about the last query Returns the AUTO_INCREMENT ID generated from the previous INSERT operation

20 mysql_list_dbs() mysql_list_fields() mysql_list_processes() mysql_list_tables() mysql_num_fields() mysql_num_rows() mysql_pconnect() mysql_ping() mysql_query() mysql_real_escape_string() mysql_result() mysql_select_db() mysql_stat() mysql_tablename() mysql_thread_id() mysql_unbuffered_query() Lists available databases on a MySQL server Deprecated. Lists MySQL table fields. Use mysql_query() instead Lists MySQL processes Deprecated. Lists tables in a MySQL database. Use mysql_query() instead Returns the number of fields in a recordset Returns the number of rows in a recordset Opens a persistent MySQL connection Pings a server connection or reconnects if there is no connection Executes a query on a MySQL database Escapes a string for use in SQL statements Returns the value of a field in a recordset Sets the active MySQL database Returns the current system status of the MySQL server Deprecated. Returns the table name of field. Use mysql_query() instead Returns the current thread ID Executes a query on a MySQL database (without fetching / buffering the result)

21 PHP security Beveiliging van de database is erg belangrijk, er staan namelijk allerlei belangrijke gegevens in zoals: gebruikersnamen, wachtwoorden, adresgegevens, mail- adressen, rekeningnummers/ creditcardnummers, etc. Wachtwoord onleesbaar voor database- administrators Met dit onderdeel worden enkele mogelijkheden getoond waarmee gegevens geverifieerd kunnen worden of worden versleuteling worden opgeslagen in de database. Een database- administrator heeft dan wel toegang tot de database, maar kan gegevens niet lezen, zoals bijvoorbeeld een wachtwoord. Zo is het mogelijk strings en bestanden te coderen. Maar ook om aangeboden bestanden te controleren of ze wel een origineel zijn van de aanbieder. Encryptie mogelijkheden zijn: Functie crc32() crypt() str_rot13() sha1() Beschrijving crc32(string) Berekend een 32-bit CRC (cyclisch redundantie checksum) voor een string crypt(string,moeilijkheid) de moeilijkheid is standaard 1, de hoger het cijfer, de moeilijker te kraken str_rot13(string) Het coderen met ROT13 verplaatst elke karakter 13 plaatsen in het alfabet. De numerieke en nietalfabetische karakters blijft staan. sha1(string,raw) sha1 op een string Optie: Specifcaties voor hex of binary output formaat: TRUE - exacte 20 character binary format FALSE - standaard. 40 character hex number sha1_file() md5() md5_file() sha1_file(bestand,raw) Sha1 op een bestand. $bestand = "voorbeeld.txt"; $sha1b = sha1_file($bestand); md5(string,raw) Berekend de MD5 hash van een string Optie: TRUE - Raw 16 karakter binary formaat FALSE - Standaard. 32 karakter hex nummer md5_file(file,raw) Berekend de MD5 hash van een bestand CRC32 op een string:

22 <html> <?php $string = crc32("kerssies 64"); // het verschil met of zonder %u ligt in de spatie echo 'zonder %u: '.$string."<br />"; echo 'met %u: '; printf("%u",$string); </html> Het resultaat, de verschillen liggen in de speciale tekens in een string: zonder %u: met %u: MD5 toegepast op een string: <html> <?php $str = "Hello"; echo md5($str); </html> Het MD5 resultaat: 8b1a9953c a827abf8c47804d7 Door gebruik te maken van encryptie kunnen gegevens gecodeerd worden bewaard in een tekst- bestand of database. Gebruikers en (sub)beheerders kunnen dan gevoelige informatie, zoals wachtwoorden of privé gevoelige data, niet zomaar lezen

23 Verschillende coderingen en encryptie toegepast: <html> <?php if (CRYPT_STD_DES == 1) echo "Standard DES: ".crypt("kerssies64.net applying knowlegde")."\n<br />"; else echo "Standard DES wordt niet ondersteund.\n<br />"; if (CRYPT_EXT_DES == 1) echo "Extended DES: ".crypt("kerssies64.net applying knowlegde ")."\n<br />"; else echo "Extended DES wordt niet ondersteund.\n<br />"; if (CRYPT_MD5 == 1) echo "MD5: ".crypt("kerssies64.net applying knowlegde ")."\n<br />"; else echo "MD5 wordt niet ondersteund.\n<br />"; if (CRYPT_BLOWFISH == 1) echo "Blowfish: ".crypt("kerssies64.net applying knowlegde "); else echo "Blowfish DES wordt niet ondersteund."; </html> Het resultaat op basis van het operating systeem kan zijn: Standard DES: 8kGC9cr6g59Sg Extended DES: s65gp10pq3tss MD5 wordt niet ondersteund. Blowfish DES wordt niet ondersteund

24 Validatie op invoervelden. Lege invoervelden of incorrecte gegevens in een formulier zorgen ervoor dat er vervuiling van de database ontstaat. Door de ingevoerde gegevens aan een bepaalde opmaak te controleren wordt ervoor gezorgd dat alleen de juiste informatie in een query wordt gezet. De functie preg_match is hierbij erg handig. Wanneer de validatie van de voornaam niet klopt, dan wordt er een uitroepteken voor het invoerveld geplaatst. Dit staat in een tabel-cel zodat de uitlijning met eventuele regels daaronder intact blijft... Tevens wordt er de variabele $v_fouten opgehoogd als er een incorrecte validatie is waargenomen. Deze variabele kan weer worden gebruikt... code... <?php $v_fouten = 0; //startwaarde fouten bij validatie if (!preg_match ($vp_naam,$_post['voornaam'])) echo '<b><font COLOR="red">!</FONT><B>'; $v_fouten = $v_fouten+1; <INPUT TYPE="text" NAME="voornaam" value="<?php echo $_POST['voornaam'];" SIZE="25" MAXLENGTH="25">... meer code... echo 'het aantal validatie fouten bij de invoer is: '. $v_fouten; if(isset($_post[bewaar]) && $v_fouten!= 0 ) elseif (isset($_post[bewaar]) && $v_fouten == 0) if ($_SESSION['profiel'] == 0 ) $_SESSION['profiel'] = 1; include ("SaveAccount.php"); // php script waar update query wordt uitgevoerd. else echo '<br>er is een problemen, neem contact op met de beheerder';

25 validatie.php, bevat diverse variabelen met validatie- strings voor preg_match. <?php //naam validatie $vp_naam = '/^[A-Z]1[A-Za-z -]1,+$/D'; //tussen $vp_tussen = '/^[a-z\-]2,8+$/d'; // ook "" akkoord //nummer $vp_nummer = '/^([0-9])+$/D'; // toevoegsel bij huisnummer van een adres // Toevoegsel $vp_toev = '/^([a-za-z-0-9]1,3)+$/d'; // ook "" akkoord // nederlands postcode $vp_postcode ='/^[0-9]4+([a-z]2 [A-Z]2)$/D'; //landsnaam validatie $vp_land ='/^[A-Z]1[a-z]1,$/D'; // ook "" akkoord //Huistelefoon $vp_telefoon ='/^(0[1-9]2\-[0-9]7) (0[1-9]3\-[0-9]6)$/D'; // ook "" akkoord //mobiel nummer $vp_mobiel ='/^(0[0-9]1\-[0-9]8)$/D'; // ook "" akkoord // $vp_mail = '/^[a-za-z0-9&\.\-_]+@[a-za-z0-9\-_]+\.([a-za-z0-9\-]+\.)*+[a-z]2,3$/d'; // ook "" akkoord //datum $vp_datumeu = '/^0[1-9]1 1[0-9]1 2[0-9]1 3[01]1\-0[1-9]1 1[012]1\-19 20[0-9]2$/D'; $vp_datumeu2 = ' '; $vp_datumus = '/^19 20[0-9]2\-0[1-9]1 1[012]1\-0[1-9]1 1[0-9]1 2[0-9]1 3[01]1$/D'; //tijd $vp_tijd = '/^0[0-9]1 1[0-9]1 2[0-4]1[\:]0[0-9]1 1[0-9]1 2[0-9]1 3[0-9]1 4[0-9]1 5[0-9]1$/D'; //geldbedrag $vp_geld ='/^[0-9]1,.[0-9]2$/D'; // ook "" akkoord

26 vervolg validatie.php // rekeningnummer IBAN voorbeeld: DE $vp_gironr = '/^[0-9]7+$/D'; $vp_rekeningnr = '/^[0-9]9+$/D'; $vp_iban = '/^[A-Z]2[0-9]2+[\.-]+[0-9]4+[\.-]+[0-9]4+[\.-]+[0-9]4+[\.-]+[0-9]4+ [\.-]+[0-9]2+$/D'; // ook "" akkoord // gebruiker tbv accountnaam (minimaal 6 karakters) $vp_account = '/^[a-za-z0-9&\.\-_\+\!@#$%&]6,$/d'; // wachtwoord (minimaal 8 karakters) $vp_ww = '/^[a-za-z0-9&\.\-_\+\!@#$%&]8,$/d'; // memo (minimaal 2 karakters) $vp_memo= '/^[a-za-z0-9&\.\-_\+\!?%&]2,$/d'; De validatie kan nog beter met look-forward en look-backward optiesin preg_match. Capcha (no-robot invoer beveiliging) Om te voorkomen dat robot s ofwel computers allerlei combinaties los laten op invoervelden kan een capcha worden. Er wordt een willekeurige code ( aantal cijfers, letters of een combinatie) gegenereerd die de gebruiker moet intypen voordat hij verder mag. Grbruik van capcha s worden vaak gebruikt bij: Vanaf een website versturen naar een gebruiker Een nieuw wachtwoord aanvragen Op het internet zijn gratis code-blokken te vinden die hier geschikt voor zijn. De kunst is om een gewenste uitvoervorm te vinden die tevens eenvoudig is in te voegen tussen de bestaande code

27 IP- highjacking Bij IP-highjacking maakt een hacker gebruik van sessie gegevens van een ingelogde gebruiker. Wat echter (meestal) ongelijk is is het IP-adres waarvandaan een hacker toegang verschaft tot de site. Door het IP-adres bij het inloggen in een sessie te zetten en deze te controleren met het IP-adres van de gebruiker die een web-page opend kan dit worden voorkomen. actie bij het inloggen: $_SESSION['remoteIPlogin'] = $_SERVER['REMOTE_ADDR']; // eerder opgeslagen ip gebruiker (normaal moeten deze waarde tijdens inloggen worden ingesteld) acties bij het openen van elke webpage (evt met een include toegoegen): <?php ini_set(display_errors, 0); // error niet weergegeven --> fout opnieuw sessie starten session_start(); if ( mysql_real_escape_string($_session['remoteiplogin'])!= mysql_real_escape_string($_server['remote_addr']) ) session_destroy(); mysql_close($con); echo '<meta http-equiv="refresh" content="0; url= index.php">';

28 Invoerveld beveiligingen tegen sql-injections. Bij capcha s is al aanbod gekomen dat invoervelden een zwak punt zijn van een website met daar achter een database. Het is handig om de volgende tips in ieder geval op te volgen: Maximaliseer het aantal in te voeren karakters invoervelden door maxlength te gebruiken. <input name="username" size="15" maxlength = 20 type="text"> <br> <input name="password" size="8" maxlength = 8 type="password"> Ook is het mogelijk om gebruik te maken van zogenaamde sql injections, hierbij wordt er in een invoerveld code geplaatst waardoor er een stukje script tussen het originele script wordt gezet. De geposte waarden (met code) worden in een query naar de database gestuurd en uitgevoerd. Het gevolg kan zijn dat er een query wordt uitgevoerd die gegevens of delen van de database bloot geeft. Gebruik daarvoor een escape-string, deze haal slahes, punt-komma s en andere programmeercode karakters uit de geposte string. (oa / en ; ), waardoor de sql-injection zijn noodzakelijke karakters verliest. $wachtwoord = mysql_real_escape_string($_post['wachtwoord']); of $wachtwoord = addslashes($_post['wachtwoord']);

29 Sessies In sessie kunnen gegevens worden opgeslagen die later worden gebruikt in de web-site. Hiervoor moet helemaal in het begin wan een php-page het volgende stukje code staan. : <?php PHP & MySQL gevorderd session_start(); Als er een web-pagina wordt geopend zonder deze functie, dan vervalt de sessie. Sessie beveiliging Door gebruik te maken van de sessies kan er een nieuw soort beveiliging worden toegepast op web-pages. Zonder deze techniek heeft inloggen geen enkele zin.door in de browser-historie halen URL s te benaderen of gewoon URL s te proberen kan een gebruiker web-pages benaderen die niet gezien mogen worden, hoewel de link niet wordt weergegeven in een van de publiekelijk te benaderen webpages. Acties die per webpage ingesteld moeten zijn of worden: <?php ini_set(display_errors, 0); // error niet weergegeven --> fout opnieuw sessie starten session_start(); // initiatie - input tbv simulatie $_SESSION['profiel'] = 3; // profiel gebruiker instellen (normaal moeten deze waarde tijdens inloggen worden ingesteld) $level = 3; // welk profiel deze page mag zien (deze waarde voor elke page instellen op de page zelf) $pass = mysql_real_escape_string($_session['profiel']); $level = mysql_real_escape_string($level); Controle of de gebruiker de webpage mag zien, dit wordt bepaald door de waarde van het profiel: level <=0; geen rechten level 1; toegang als level 2; toegang als level 3 overal toegang, gebruiker user level >=4; geen rechten admin

30 Valt het profiel buiten de toegestane waarden of is het level om een web-page te zien hoger dan het profiel dat is ingelogd, dan wordt een andere web-page weergegeven. if ($pass!= 0 && $pass!= 1 && $pass!= 2 && $pass!= 3) // voorkomt doorlaten van webpages door het intypen van URL's in de adresbalk van de browser // beveiliging: Lege profiel variabelen proberen pages te openen zonder in te loggen session_destroy(); mysql_close($con); echo '<meta http-equiv="refresh" content="0; url= NietToegestaan.html">'; elseif ($pass < $level) // gebruiker heeft geen rechten op pages hoger dan zijn eigen profiel echo '<meta http-equiv="refresh" content="0; url= NietToegestaan.html">'; <html> <body> <h2>webpage </h2> Inhoud website </body> </html>

31 Sessie-tijd Wanneer een gebruiker is ingelogd en wegloopt bij zijn website, dan kunnen onbevoegden gebruikmaken van functionaliteiten waartoe ze geen rechten hebben. Door een sessietijd in te stellen op de webserver of met php-code aan de site toe te voegen, zal de site na een ingestelde tijd uitloggen en de index-pagina weergeven. $aantal_min = 1; //minuten instellen $inactief = 60 * $aantal_min; // aantal minuten in seconden $nu = time(); $sessie_duur = $nu - $_SESSION['timeout']; echo 'sessie duur: '.$session_duur.'<br>'; echo 'sessie: '.time().' - '.$_SESSION['timeout'].' = '.$sessie_duur.'<br>'; echo 'inactief: '.$inactief.' seconden<br>';*/ // sessietijd als idle-tijd te lang is if(isset($_session['timeout']) ) $sessie_duur = time() - $_SESSION['timeout']; if($sessie_duur > $inactief) session_destroy(); header("location: sessietijdverkopen.html"); // <html> <body> <h2>webpage </h2> <FORM METHOD="post" ACTION="index.php"> <I>klik voor herladen:</i> <INPUT TYPE="submit" VALUE="herladen"> </FORM> </body> </html> Onderaan de webpage wordt de huidige tijd (laatste actie) opnieuw in een sessie gezet: // huidige tijd in de sessie zetten $_SESSION['timeout']=time();

32 Mailen met PHP Basis tekst verzenden Met PHP is het mogelijk berichten via mail te versturen. Dit kan alleen als de webserver ook een maildienst (SMTP) heeft draaien. Een eenvoudig script om te mailen: ini_set ( 'SMTP', ''smtp_server''); //(optioneel) servernaam, bijv: mail.provider.nl ini_set ( 'smtp_port', ''smtp_poort''); // (optioneel) poort, meestal: 110 $to = test@provider.nl ; $subject = Mail onderwerp ; $txt = 'Beste gebruiker, Hier volgt de body van het mail bericht. Type gewoon enkele regels tekst, eventueel met daarin variabelen verwerkt. '.$mail_bericht['mailbody1'].' mvg, kerssies64.net ; $headers = 'From: beheerder <'.$array['mailadres'].'>'; mail($to,$subject,$txt,$headers); Uiteraard moet het adres waarnaar verstuur wordt kloppen, dit hoeft echter niet voor het mailadres waarvan het verstuurd wordt. Bedenk wel spammen is strafbaar!!! Denk bij adressen waar je vanaf verstuurd ook aan: noreply@provider.net of info@provider.nl

33 Een HTML-mail verzenden Wanneer een simpele mail met PHP verstuurd kan worden is het vrij eenvoudig om er een HTMLmailtje van de maken. Er worden de header krijgt andere inhoud en de boodschap bevat HTMLtags en opmaak. Hieronder is een simpel voorbeeld weergegeven: <html> <head> <title>html-mail</title> </head> <body bgcolor="#hbd9ff"> <?php if (isset($_post[zend])) $newline = "\r\n"; $headers = "MIME-Version: 1.0". $newline; $headers.= "Content-type: text/html; charset=utf-8". $newline; $headers.= "From: blabla <test@test.nl>". $newline; $to = $_POST[ ]; $subject = "Test mail"; $message = '<html><body bgcolor = "grey">'; $message.= '<img height ="50" src=" /><hr>'; $message.= 'Hallo,<br>Bedankt voor uw reactie.<br>uw gegevens zijn bewaard.<br>'; $message.= 'groet, de Beheerder<hr></body></html>'; mail($to,$subject,$message,$headers); <script type="text/javascript"> <!-- alert ("de html-mail is verstuurd \r\n<?php echo $_POST[ ];" ) --> </script> <?php <form name="form1" method="post" action="index.php"> <div align="center"> <h1>html-mail versturen</h1><br /> <input name=" " type="text" value=""><br /> <input type="submit" name="zend" value="verstuur mail"> </div> </form> </body> </html>

34 Een HTML-mail verzenden met een attachment Een werkende HTML-mailer kan eenvoudig worden uitgebouwd. Het voorbeeld hieronder upload bestanden naar een vaste map, waarna deze worden toegevoegd aan een HTML-mailtje. ook is er een prioriteiten veld aan toegevoegd. <html> <head> <title>html-mail + att</title> </head> <body bgcolor="#hbd9ff"> <?php // >> uploaden bestand naar map "upload" $targetfolder = "attachments/"; //uploadfolder bepalen (pad) $targetfolder = $targetfolder.basename( $_FILES['uploaded']['name']); $uploaded_size = filesize($_files['uploaded']['size']); $uploaded_type = filesize($_files['uploaded']['type']); $ok=1; // >> beperkingen uploads $max_mb = 5000; if (isset($_post[upload]) && $uploaded_size > $max_mb) // beperk bestands grootte echo "Het bestand is groter dan ".($maxmb/1000). "MB <br> Upload een kleiner bestand<br>"; $ok=0; if (isset($_post[upload]) && $uploaded_type == "text/php") // pregmatch op extentie //Beperk het soort bestanden echo "PHP-bestanden mogen niet worden geupload<br>"; $ok=0; if (isset($_post[upload]) && $ok==0 ) //Error-melding wanneer $ok == 0 echo "Het bestand voldoet niet aan de voorwaarden"; else //Er is voldaan aan upload-voorwaarden -> uploaden bestand if(move_uploaded_file($_files['uploaded']['tmp_name'], $targetfolder)) echo "Het bestand <b>". basename( $_FILES['uploadedfile']['name']). "</b> is geupload naar de map"; unset($_post[submit]);

35 //Bekijk eerst de bronversie van een ontvangen in je mail-applicatie (mail-format) if (isset($_post[zend])) $newline = PHP_EOL; //"\r\n" $separator = md5(time()); $prioriteit = $_POST['prioriteit']; // 1 of 0 $to = $_POST[ ]; $subject = "Test mail"; $headers.= "From: blabla <test@test.nl>".$newline; if ($prioriteit == 1) $headers.="x-priority: 1". $newline. "Priority: Urgent". $newline. "Importance: high". $newline; // basis = 0 - Normal - normal $headers.= "MIME-Version: 1.0".$newLine; $headers.= "Content-Type: multipart/mixed; boundary=\"".$separator."\"".$newline. $newline; $headers.= "Content-Transfer-Encoding: 7bit".$newLine; $headers.= "This is a MIME encoded message.".$newline.$newline; // start header voor message $headers.= "--".$separator.$newline; $headers.= "Content-type: text/html; charset=utf-8". $newline; $headers.= "Content-Transfer-Encoding: 8bit".$newLine.$newLine; // afbeeldingen (embedded) in message $source_file = "globe.png"; // link naar bestand $handle = fopen($source_file,'rb'); // b-flag om binary-bestanden toe te voegen, anders alleen tekst $file_content = fread($handle,filesize($source_file)); fclose($handle); $encoded = chunk_split(base64_encode($file_content)); $headers.= '<html><body bgcolor = "green">'; //$headers.= 'afb van een exteren link: <img height ="50" src=" /><hr>'; //$headers.= '<br>'; //$headers.= 'afb embedded met base64: <object type="image/png" data="data:image/png;base64,'.$encoded.'" width="150" height="150"/></object><hr>'; $headers.= '<br>'; $headers.= 'Hallo,<br> '.$_POST[mail_content].'<br>'. 'Bedankt voor uw reactie.<br><br> Er volgt nog een attachement...<br>'; $headers.= 'groet, de Beheerder<hr></body></html>'; $headers.= $newline;

36 // >>>> voe attachments uit map toe aan mail $path = 'attachments/'; $dir = scandir($path); // was "attachments" // print_r($dir); $aantal_files = count($dir); for ($i =0; $i < $aantal_files; $i++) if ($dir[$i]!= '.' && $dir[$i]!= '..') $full_path = $path.$dir[$i]; $size = filesize($full_path); $attach = fopen($full_path,"rb"); $data = fread($attach,$size); $attachment = chunk_split(base64_encode($data)); $headers.= $newline."--".$separator.$newline; $headers.= "Content-Transfer-Encoding: base64".$newline; $headers.= 'Content-Disposition: attachment; filename="'.$dir[$i].'"; size='.$size.';'. $newline.$newline; //inline; $headers.= $attachment.$newline.$newline; if (mail($to,$subject,"",$headers)) <script type="text/javascript"> <!-- alert ("de html-mail is verstuurd \r\n<?php echo $_POST[ ];" ) --> </script> <?php else echo 'fout bij versturen mail'; PHP & MySQL gevorderd Hieronder wordt het formulier weergegeven om een mailtje met prioriteit te verzenden en attachemts toe te voegen

37 <!-- /////to = opmerking... ////// --> <form name="form1" method="post" action="index.php"> <div align="center"> <h1>html-mail versturen met attachements</h1> met upload naar folder<br /> <table> <tr> <td colspan="2"><input type="submit" name="zend" value="verstuur mail"> </td> </tr> <tr> <td>to<input name=" " type="text" size="42" value="<?php echo $_POST[ ];? >"></td> <td><input TYPE="checkbox" NAME="prioriteit" VALUE="1">prio</td> </tr> <tr> <td colspan ="2"width="200px" height="70px"> html-bericht<textarea name="mail_content" ROWS="4" COLS="50" wrap="hard" value="<?php echo $_POST[mail_content];" /> </TEXTAREA> </td> </tr> </form> <form enctype="multipart/form-data" action="index.php" method="post"> <tr> <td><input name="uploaded" type="file" /></td> <td><input type="submit" name="upload" value="upload" /></td> </tr> </form> <?php $dir = opendir("attachments"); //Lijst bestanden in aangegeven directory while ($file = readdir($dir)) if ($file!= '.' && $file!= '..') echo "<tr><td>filename: </td><td>". $file. "</td></td>"; //closedir($dir); echo '<hr>'; </table> </div> </body> </html>

38 PDFʼs maken met PHP Soms wil je gegevens omzetten in een pdf-bestand. Hiervoor kan je naar FPDF ( daar staat php-code in een class (object georienteerd stukje php-code). Dit is aan te passen naar je eigen wensen. Er zitten drie stijlen van tabellen in de class, namelijk een eenvoudig-, nettere- en uitgebreidere-versie. Het aantal kolommen, breedtes en de kleuren zijn aan te passen. Uiteraard zijn er meerdere stukken php-code op het Internet te vinden die het zelfde kunnen bieden. Cookies Een cookie wordt vaak gebruikt om een gebruiker te identificeren. Een cookie is een klein bestandje dat de server op de computer van de gebruiker plaatst. Wanneer een browser om een webpagina vraagt, dan de server ook een cookie verzenden. Met PHP, kunnen cookie- waarden worden verstuurd en opgehaald. Als een gebruiker eenmaal is ingelogd, dan kunnen de login gegevens in een cookie op het cliëntsysteem worden opgeslagen. Bij een volgend bezoek kunnen de standaard waarden automatisch worden ingevuld met de waarden uit het cookie... Let o, cookies kunne privé gegevens bevatten en bij gebruik van onder andere publiekelijke PC s is dit niet wenselijk. Een Cookie maken De setcookie () functie wordt gebruikt om een cookie te plaatsen. Tip: De setcookie () functie moet VOOR de <html>markering worden geplaatst. Syntaxis setcookie (naam, waarde, verloopt, pad, domein);

39 Voorbeeld 1: In het voorbeeld hieronder wordt een cookie met de naam gebruiker aangemaakt met de waarde Jan van Berg. Na één uur moet verlopen (+3600 seconden): <? setcookie ( gebruiker, Jan van Berg, tijd () +3600); <html>... PHP & MySQL gevorderd Tip: De waarde van het cookie is automatisch URLencoded, een cookie verzenden is gecodeerd en automatisch gedecodeerd bij ontvangst (om geen URLencoding te gebruiken moet setrawcookie () worden gebruikt) Voorbeeld 2: U kunt de aflooptijd van het cookie op een andere manier ook plaatsen. Het kan gemakkelijker zijn dan gebruikend seconden. <? $verloopt=time () +60*60*24*30; setcookie ( gebruiker, Jan van der Berg, $verloopt); <html>... In het voorbeeld hierboven is de verlooptijd een maand (60 seconden * 60 min * 24 uren * 30 dagen). De waarde van een cookie opvragen De PHP $_COOKIE variabele wordt gebruikt om een cookies waarde op te vragen. Hieronder worden alle gebruiker- waarde van het cookie genoemd getoond het op een pagina: <? // Print een cookie echo $_COOKIE [ gebruiker ]; // Een manier om alle cookies te bekijken print_r ($_COOKIE); In het volgende voorbeeld is de isset() functie gebruikt om te controleren of het cookie is geplaatst: <html> <body> <? if (isset ($_COOKIE [ gebruiker ])) echo Welkom. $_COOKIE [ gebruiker ].! <br/> ; else echo U bent gast op onze site <br/> ; </body> </html>

40 Een Cookie verwijderen Wanneer een cookie verwijdert moet worden, dan moet de vervaldatum in het verleden liggen. Dit kan terug gezet worden... Voorbeeld om een cookie te verwijderen: <? // stelt de vervaldatum aan, en wordt één uur geleden setcookie ( gebruiker, "", tijd () ); Wat als Browser Geen Cookies steunt? Als de gebruikte browser geen cookies ondersteund, dan zijn er andere methodes om gebruikinformatie van één pagina tot een andere in uw toepassing over te gaan. Één methode is de gegevens door formulieren (een formulier vraagt om gebruikersinput en is eerder behandeld). Het formulier vraagt de gebruiker om informatie en stuurt dit naar groet.php, wanneer de gebruiker op de submit knop klikt: <html> <body> <form name= form method= " post action= " welkom.php " " > Naam: <input type= "text" name= " naam "/> Leeftijd: <input type= "text" name= " leeftijd "/> <input type= submit name= verstuur value = verstuur > </form> </body> </html> Win de waarden in het file groet.php als dit terug: <html> <body> Welkom <? echo $_POST [ naam ];.<br/> U bent <? echo $_POST [ leeftijd ]; oude jaren. </body> </html>

41 Toepassingen Toepassing1: SQL database koppeling Het koppelen met een database wordt gedaan bij het laden van een website. Het opbouwen moet zo veilig mogelijk op de server staan. Als de toegang tot de database beschikbaar komt voor derden, dan liggen alle gegevens op straat. Zet dit bij voorkeur in de private_html map van je webserver en include deze code in de site. $host = 'localhost'; $username = "user_db"; $password = "wachtwoord_db"; $database = "db_naam"; $con = mysql_connect($host, $username, $password); if (!$con) die('geen connectie gemaakt met DB: '. mysql_error()); else //connectie met database maken mysql_select_db($database, $con); Toepassing2: SQL toevoegen van een tupel in een database Na connectie met de database wordt er na het klikken van de knop invoegen worden de acoountgegevens uit het formulier toegevoegd in de tabel. include("../private_html/site/db_connect.php"); $q_invoegen_account = INSERT INTO tabel_account VALUES ( , voornaam, tussenv, achternaam, adres, hnr, plaats) ; if (isset($_post[invoegen]) && $invoerfouten == 0) // uitvoeren na klik invoegen mysql_query($q_invoegen_account); meer code, waarin een formulier zit met knop om de velden als nieuwe gebruiker toe te voegen

42 Toepassing3: SQL opvragen en beheren database gegevens Een query die alle account gegevens uit een database haalt en in een tabel weergeeft. Alle gegevens worden in een formulier weergegeven, zodat de gebruiker dit kan aanpassen en updaten. Met een formulier daaronder kan het record worden verwijdert. Elke regel met de gegevens van een account heeft een eigen achtergrondkleur. Dit kan met CSS worden gedaan (er is geen css-uitwerking meegeleverd). Ook bevat elke regel een bewerk- en verwijder-knop. Na 2 includes,staat er acties die uitgevoerd worden mist die knop is geklikt (viewaccounts.php): include("../private_html/site/db_connect.php"); include(../private_html/site/queries.php ); if (isset($_post[ja])) // uitvoeren na klik op ja-knop mysql_query("start TRANSACTION;"); // transactie mysql_query($delete_aankopen_account); mysql_query($delete_gegevens_account); mysql_query($delete_account); mysql_query("commit;"); if (isset($_post[update])) // uitvoeren na klik op update-knop mysql_query($update_account); if (isset($_post[verwijder]) ) // Delete Ja/Nee -keuze; alleen weergeven wanneer er is geklikt op delete echo'<table class ="JaNee"><tr> <td> <form name= "ZekerJa" action="viewaccounts.php" method="post"> <input name="ja" type="submit" value="ja"> </form> </td> <td> <form name= "ZekerNee" action="viewaccounts.php" method="post"> <input name="nee" type="submit" value="nee"> </form> </td> <td class ="JaNee"></tr></table>'; Query om accounts op te vragen wordt uitgevoerd en een tabel wordt opgezet. $accountszoeken = mysql_query($zoekaccount_q); $lijn = 0; // variabele achtergrondkleuren per regel echo '<table border = "0" cellpadding = "0" cellspacing = "0">'; De regels met accounts wordt weergegeven door een while-loop: while ($gevondenaccounts = mysql_fetch_array($accountszoeken)) $accid = $gevondenaccounts['u_id']; $lijn ++; echo '<tr CLASS= '; if ($lijn & 1) echo ' "odd" '; else echo ' "even" '; echo '>'; // CSS-class even en odd elk met een eigen achtergrond-kleur echo '<FORM NAME="view_update_account" ACTION="viewaccounts.php" method="post">'; // het -account maakt een gebruiker uniek en is de sleutel in de database echo '<td> <INPUT TYPE="text" name=" " value ="'.$gevondenaccounts[' '].'" SIZE="20" MAXLENGTH="25"> ';

PHP en een MySQL database.

PHP en een MySQL database. mysql_php.doc 1/5 PHP en een MySQL database. Om informatie uit een MySQL database op te halen moet je de volgende stappen uitvoeren: 1. een verbinding maken met mysql; 2. een mysql database selecteren;

Nadere informatie

PHP tekst-bewerkingen, uploaden csv-bestanden import/eport

PHP tekst-bewerkingen, uploaden csv-bestanden import/eport PHP tekst-bewerkingen, uploaden csv-bestanden import/eport Inhoudsopgave Inleiding 3 Voorkennis voor PHP-gevorderd 3 PHP Bestandsbewerkingen 4 Gegevens in een tekstbestand zetten 4 Gegevens zoeken in een

Nadere informatie

Kies File>New>Blank Page>PHP. Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site

Kies File>New>Blank Page>PHP. Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site Kies File>New>Blank Page>PHP Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site Geef de site een passende naam. Kies ook de juiste map voor de webdocumenten.

Nadere informatie

Formulieren maken met Dreamweaver CS 4/CS 5

Formulieren maken met Dreamweaver CS 4/CS 5 Formulieren maken met Dreamweaver CS 4/CS 5 In deze handleiding leer je om een formulier en elementen die je binnen een formulier kunt gebruiken, te ontwerpen met Dreamweaver. Het uitgangspunt is dat dit

Nadere informatie

Les 15 : updaten van gegevens in de database (deel2).

Les 15 : updaten van gegevens in de database (deel2). Les 15 : updaten van gegevens in de database (deel2). In de volgende reeks lessen zal alle vorige leerstof uitgebreid aan het bod komen. Zie ook de vorige lessen en documenten om informatie op te zoeken

Nadere informatie

Handleiding RS Form! 1.0.4

Handleiding RS Form! 1.0.4 Handleiding RS Form! 1.0.4 Inhoud 1. Controlepaneel... 3 2. Forms Manager... 4 2.1 Nieuwe form aanmaken... 4 2.2 Nieuwe fields toevoegen... 7 2.3 Wijzigen/verwijderen bestaande Forms, Fields... 10 Versie

Nadere informatie

9. MYSQL. Daarin zien we het administratie paneel van mysql.

9. MYSQL. Daarin zien we het administratie paneel van mysql. 9. MYSQL We kunnen ook in dit systeem gebruik maken van de gekende ACCESS databanken. Zolang het maar relationale databanjken zijn kunnen we er gebruik van maken. In PHP echter maakt men meestal gebruik

Nadere informatie

Formulier maken en opvangen met php

Formulier maken en opvangen met php Welkom bij mijn PHP tutorial (Deel 2) Ik ga in deze delen PHP uitleggen, dit doe ik in het programma notepad++ (gratis) deze kunt u downloaden van www.richard3332.nl/downloads.php Als u beschikt over dreamweaver

Nadere informatie

Een website maken met databasetoegang.

Een website maken met databasetoegang. Hoofdstuk 5 Een website maken met databasetoegang. In dit hoofdstuk gaan we het weblog dat je in hoofdstuk 4 hebt gemaakt verder uitbreiden. Een belangrijk onderdeel wordt toegevoegd aan de applicatie,

Nadere informatie

HTML in Outlook 2007. Hoe zorgt u ervoor dat uw email goed in beeld komt?

HTML in Outlook 2007. Hoe zorgt u ervoor dat uw email goed in beeld komt? HTML in Outlook 2007 Hoe zorgt u ervoor dat uw email goed in beeld komt? HTML in Outlook 2007 Inleiding Emark Mail biedt u de mogelijkheid om kant en klare HTML nieuwsbrieven in te laden en te versturen.

Nadere informatie

Technische nota AbiFire Rapporten maken via ODBC

Technische nota AbiFire Rapporten maken via ODBC Technische nota AbiFire Rapporten maken via ODBC Laatste revisie: 23 januari 2018 Inhoudsopgave 1 Inleiding... 2 2 Systeeminstellingen in AbiFire... 3 2.1 Aanmaken extern profiel... 3 2.2 Toewijzing extern

Nadere informatie

Installeer Apache2: Landstede februari 2009 versie 3 1 Bertil Hoentjen

Installeer Apache2: Landstede februari 2009 versie 3 1 Bertil Hoentjen Installeer Apache2: Deze howto gaat over name based virtual hosting onder Apache 2.x., en is getest onder OpenSUSE 11 maar is in feite ook van toepassing op de andere distributies. Alleen Debian en afgeleide

Nadere informatie

Gebruikershandleiding voor: Beperkte Password protectie met JavaScript

Gebruikershandleiding voor: Beperkte Password protectie met JavaScript Gebruikershandleiding voor: Beperkte Password protectie met JavaScript URL: http://home.hccnet.nl/s.f.boukes/html-2/html-202.htm INHOUD : 1. Structuur van een beveiligde site 2. Login-formulier 3. Login

Nadere informatie

Les 12 : database koppeling, opmaken van template, webstructuur en afdrukken van gegevens. (deel2).

Les 12 : database koppeling, opmaken van template, webstructuur en afdrukken van gegevens. (deel2). Les 12 : database koppeling, opmaken van template, webstructuur en afdrukken van gegevens. (deel2). In de volgende reeks lessen zal alle vorige leerstof uitgebreid aan het bod komen. Zie ook de vorige

Nadere informatie

PHP & MySQL. Studievaardigheden 2013. Frank Takes (ftakes@liacs.nl) LIACS, Universiteit Leiden

PHP & MySQL. Studievaardigheden 2013. Frank Takes (ftakes@liacs.nl) LIACS, Universiteit Leiden PHP & MySQL Studievaardigheden 2013 Frank Takes (ftakes@liacs.nl) LIACS, Universiteit Leiden Inleiding Voorkennis: geen Stof: dit college, www.w3schools.com en www.php.net Opdracht: maak een uitgebreide*

Nadere informatie

Les 9: formulier controle met javascript.

Les 9: formulier controle met javascript. Les 9: formulier controle met javascript. Javascript is erg veel gebruikt bij internet toepassingen. In tegenstelling tot PHP, wat een server side scripting is, is java client side scripting. Dwz, niet

Nadere informatie

De MySQL C API. Variabelen in C Functies in C Pointers in C

De MySQL C API. Variabelen in C Functies in C Pointers in C LinuxFocus article number 304 http://linuxfocus.org De MySQL C API door Özcan Güngör Over de auteur: Ik gebruik Linux sinds 1997. Vrijheid, flexibiliteit en opensource. Dat

Nadere informatie

Les 11 : Basis SQL (deel2).

Les 11 : Basis SQL (deel2). Les 11 : Basis SQL (deel2). Wat is SQL? SQL gaan we gebruiken voor het raadplegen van de database. We gaan gegevens invoegen in de database, selecteren, aanpassen en verwijderen van de database. Om dit

Nadere informatie

MWeb 4.0. Handleiding Basis Modules Versie 1.0

MWeb 4.0. Handleiding Basis Modules Versie 1.0 MWeb 4.0 Handleiding Basis Modules Versie 1.0 Index 1. Algemeen 3 1.1. Gebruikersnamen en Wachtwoorden 3 1.2. Inloggen 3 1.3. Uitloggen 3 1.4. Belangrijk 3 2. User Manager 4 2.1. Gebruikers lijst User

Nadere informatie

LES 11: VAN LOKAAL NAAR ONLINE. Lesoverzicht: Aan de slag Domeinnaam Web hosting FTP gegevens FTP programma s Database exporteren Samenvatting

LES 11: VAN LOKAAL NAAR ONLINE. Lesoverzicht: Aan de slag Domeinnaam Web hosting FTP gegevens FTP programma s Database exporteren Samenvatting LES 11: VAN LOKAAL NAAR ONLINE Lesoverzicht: Aan de slag Domeinnaam Web hosting FTP gegevens FTP programma s Database exporteren Samenvatting Tijd: 10 minuten Doel: Aan het einde van de les kun je de lokale

Nadere informatie

16. Web Station. In dit hoofdstuk komen de volgende onderwerpen aan bod:

16. Web Station. In dit hoofdstuk komen de volgende onderwerpen aan bod: 16. Web Station U kunt uw QNAP NAS gebruiken om een website te hosten. U kunt zelf een website bouwen in HTML of gebruik maken van één van de vele content management systemen die beschikbaar worden gesteld

Nadere informatie

Handleiding website. Inloggen Start uw internet browser en ga naar http://www.rbaoreven.nl/.

Handleiding website. Inloggen Start uw internet browser en ga naar http://www.rbaoreven.nl/. Handleiding website In deze handleiding staat alles wat u nodig heeft om een bericht op de website van de Reddingsbrigade Aoreven Heythuysen te plaatsen. Alles wordt in woord en beeld uitgelegd. Inloggen

Nadere informatie

ideal Betaal Formulier (Ondersteund o.a. ideal, MisterCash, Direct E-Banking en Credit Card)

ideal Betaal Formulier (Ondersteund o.a. ideal, MisterCash, Direct E-Banking en Credit Card) Script: Versie: 0.5 Licentie: ideal Betaal Formulier (Ondersteund o.a. ideal, MisterCash, Direct E-Banking en Credit Card) Gratis te gebruiken door (erkende) goede doelen. 200,00 excl. BTW voor aanschaf

Nadere informatie

Handleiding: Whitelabel Customersite

Handleiding: Whitelabel Customersite ARGEWEB B.V. Handleiding: Whitelabel Customersite Controlportal.nl Argeweb Support 8-1-2009 Handleiding voor het gebruik maken van de Whitelabel Customersite op controlportal.nl, door Resellers van Argeweb.

Nadere informatie

Handleiding CMS VOORKANT

Handleiding CMS VOORKANT Handleiding CMS VOORKANT Inhoudsopgave Pagina 1. Toegang tot het CMS... 3 2. Artikel toevoegen... 4 3. Artikel bewerken... 5 4. Artikel kopiëren of verwijderen... 6 5. Afbeelding, link of tabel invoegen...

Nadere informatie

Koppeling met een database

Koppeling met een database PHP en MySQL Koppeling met een database 11.1 Inleiding In PHP is het eenvoudig om een koppeling te maken met een database. Een database kan diverse gegevens bewaren die met PHP aangeroepen en/of bewerkt

Nadere informatie

AFO 142 Titel Aanwinsten Geschiedenis

AFO 142 Titel Aanwinsten Geschiedenis AFO 142 Titel Aanwinsten Geschiedenis 142.1 Inleiding Titel Aanwinsten Geschiedenis wordt gebruikt om toevoegingen en verwijderingen van bepaalde locaties door te geven aan een centrale catalogus instantie.

Nadere informatie

Foutcontrole met Javascript

Foutcontrole met Javascript Foutcontrole met Javascript Pol Van Dingenen Yannick Van Hauwe INLEIDING Het controleren van de gegevens die ingevuld zijn in formulieren is heel erg belangrijk. In de praktijk is enkel en alleen controle

Nadere informatie

Automatische Installatie op IIS server

Automatische Installatie op IIS server Automatische Installatie op IIS server In de map Web staat het installatiebestand : Je kan de install starten door het aanklikken van het msi bestand vanuit Verkenner. Na installatie is steeds een manuele

Nadere informatie

Programmeren voor het web met PHP

Programmeren voor het web met PHP Programmeren voor het web met PHP De meestgebruikte programmeertaal voor websites is PHP. Het is een heel handige taal waarmee je een eigen slimme website kunt bouwen. Je gaat nu leren hoe PHP werkt, en

Nadere informatie

Denit Backup instellen op een Linux server

Denit Backup instellen op een Linux server Denit Backup instellen op een Linux server Deze handleiding beschrijft de stappen om de back-up software van Ahsay in te stellen. AANMAKEN BACK-UP SET... 2 DE SCHEDULER INSTELLEN... 4 HET FILTER INSTELLEN...

Nadere informatie

Inhoudsopgave. versie 0.8

Inhoudsopgave. versie 0.8 JOOMLA! INSTALLATIE HANDLEIDING versie 0.8 Inhoudsopgave Stappenplan...3 Inrichten database...4 Configuratiecentrum cpanel...4 Aanmaken van een database gebruiker...5 Aanmaken van een database...6 Gebruiker

Nadere informatie

Handleiding Content Management Systeem

Handleiding Content Management Systeem Handleiding Content Management Systeem Inhoudsopgave Inhoudsopgave... 2 1. Inloggen... 3 2. Paginavolgorde... 3 3. Pagina en menutitel... 3 4. Pagina s bewerken... 4 5. De tekstverwerker... 4 6. Interne

Nadere informatie

Puntjes op de I. Baris Firat

Puntjes op de I. Baris Firat Puntjes op de I Baris Firat 1 Functies en kritieke onderdelen in code (onderdelen die niet in één oogopslag te verklaren zijn) zijn voorzien van comments. Hierbij wordt er gebruikt gemaakt van geldende

Nadere informatie

HTML. Formulieren. Hans Roeyen V 3.0

HTML. Formulieren. Hans Roeyen V 3.0 Formulieren Hans Roeyen V 3.0 26 februari 2015 Inhoud 1. Formulieren... 3 1.1. De form tag... 3 1.1.1. Het action attribute... 4 1.1.2. Het method attribute... 4 1.2. De input tag... 4 1.3. Soorten input

Nadere informatie

Voor vragen: http://www.richard3332.nl/ of mail naar Richard3332@gmail.com

Voor vragen: http://www.richard3332.nl/ of mail naar Richard3332@gmail.com Welkom bij mijn website tutorial (Deel 7) Ik ga uit van Microsoft XP voor de duidelijkheid. Ik heb dus geen idee of de programma s die ik gebruik ook op Vista werken. Notepad++ werkt zowieso op xp en Vista.

Nadere informatie

Handleiding: OpenEmm nieuwsbrief manager Diergaarde Blijdorp

Handleiding: OpenEmm nieuwsbrief manager Diergaarde Blijdorp Handleiding: OpenEmm nieuwsbrief manager Diergaarde Blijdorp Algemeen Deze handleiding beschrijft de werking van OpenEmm gekoppeld aan WordPress. Ondanks het feit dat binnen OpenEmm nieuwsbrieven opgemaakt

Nadere informatie

15 July 2014. Betaalopdrachten web applicatie gebruikers handleiding

15 July 2014. Betaalopdrachten web applicatie gebruikers handleiding Betaalopdrachten web applicatie gebruikers handleiding 1 Overzicht Steeds vaker komen we de term web applicatie tegen bij software ontwikkeling. Een web applicatie is een programma dat online op een webserver

Nadere informatie

Formulierbeheer Importeren bestaand (model)formulier... 2 Wat is exporteren/importeren eigenlijk?... 3 Formulier aanpassen/opbouwen...

Formulierbeheer Importeren bestaand (model)formulier... 2 Wat is exporteren/importeren eigenlijk?... 3 Formulier aanpassen/opbouwen... Formulierbeheer Importeren bestaand (model)formulier... 2 Wat is exporteren/importeren eigenlijk?... 3 Formulier aanpassen/opbouwen... 4 Bewerken formulier in formulierbeheer... 4 Bewerken formulier -

Nadere informatie

Dynamische Websites. Week 2

Dynamische Websites. Week 2 Dynamische Websites Week 2 AGENDA Labo 1 GET, POST Navigatie, etc Varia 1 2

Nadere informatie

GEBRUIKERSHANDLEIDING Content Management Systeem. Gebruikershandleiding RelaxWeb CMS

GEBRUIKERSHANDLEIDING Content Management Systeem. Gebruikershandleiding RelaxWeb CMS GEBRUIKERSHANDLEIDING Content Management Systeem 1 Gebruikershandleiding RelaxWeb CMS Gebruikershandleiding RelaxWeb CMS 2 Inhoud Inhoud 3 1. Inleiding 5 2. Inloggen in het CMS 6 3. Control panel 7 4.

Nadere informatie

Formulieren maken met Dreamweaver CS 4

Formulieren maken met Dreamweaver CS 4 Formulieren maken met Dreamweaver CS 4 In deze handleiding leer je om een formulier en elementen die je binnen een formulier kunt gebruiken, te ontwerpen met Dreamweaver. Het uitgangspunt is dat dit zoveel

Nadere informatie

Handleiding Faxdiensten

Handleiding Faxdiensten Handleiding Faxdiensten Auteur: Marketing Datum: 01-10-2014 Versie: 2.0 Aantal bladen: 12 Nummer: 1018 2 P a g i n a Inhoud 1. Inleiding... 3 2. Beheer E-Fax IN- en E-Fax OUT-diensten... 4 3. E-Fax-overzicht...

Nadere informatie

Handleiding ESS na de upgrade People Inc. versie 3.5.0

Handleiding ESS na de upgrade People Inc. versie 3.5.0 Handleiding ESS na de upgrade People Inc. versie 3.5.0 I Handleiding ESS na de upgrade People Inc. versie 3.5.0 Inhoudsopgave Hoofdstuk 1 1 1.1 ESS... Iconen selecteren 1 1.2 ESS... Inlog scherm tekst

Nadere informatie

15 July 2014. Betaalopdrachten web applicatie beheerders handleiding

15 July 2014. Betaalopdrachten web applicatie beheerders handleiding Betaalopdrachten web applicatie beheerders handleiding 1 Overzicht Steeds vaker komen we de term web applicatie tegen bij software ontwikkeling. Een web applicatie is een programma dat online op een webserver

Nadere informatie

Domein API Handleiding

Domein API Handleiding Domein API Handleiding Versie 1.6 Datum: 16-07-2014 1 Inhouds opgave 2 Inleiding 3 Result codes 4 Api functies 5 Api helpers 2 Inleiding: De API van 123 Hosting Service kan worden gebruikt om te registreren

Nadere informatie

cbox UW BESTANDEN GAAN MOBIEL! VOOR ANDROID-SMARTPHONES EN -TABLETS GEBRUIKERSHANDLEIDING

cbox UW BESTANDEN GAAN MOBIEL! VOOR ANDROID-SMARTPHONES EN -TABLETS GEBRUIKERSHANDLEIDING cbox UW BESTANDEN GAAN MOBIEL! VOOR ANDROID-SMARTPHONES EN -TABLETS GEBRUIKERSHANDLEIDING Inleiding cbox is een applicatie die u eenvoudig op uw computer kunt installeren. Na de installatie wordt in de

Nadere informatie

Een database gebruiken

Een database gebruiken Een database gebruiken In een vorige handleiding heb ik laten zien hoe je met Scratch soortgelijke gegevens kunt opslaan in een lijst om deze op een later moment weer op te halen. Als voorbeeld las ik

Nadere informatie

Inhoud. Pagina 2 van 13

Inhoud. Pagina 2 van 13 Code Conventie Inhoud PHP algemeen... 3 Namen van variabelen... 3 Enkele of dubbele aanhalingstekens... 3 Globale variabelen... 3 Namen van functies... 3 Argumenten van functies... 3 Formattering... 4

Nadere informatie

Naam project Lost And Found Animals Lokaal gehost Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50%

Naam project Lost And Found Animals Lokaal gehost Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50% Naam project Lost And Found Animals Url Lokaal gehost Groepsleden Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50% 1. Beveiliging in de toepassing Naam gebruiker Wachtwoord

Nadere informatie

Trippeltrap Content Management System

Trippeltrap Content Management System Handleiding Trippeltrap Content Management System versie 2.4 Aanmelden Voordat u de tekst op uw webpagina kunt aanpassen, moet u zich eerst aanmelden. Bovenaan de pagina vindt u een link naar het intranet.

Nadere informatie

Opmerkingen kan je mailen naar: A. Kouters: A. Steijlen: Versie Datum Opmerkingen

Opmerkingen kan je mailen naar: A. Kouters: A. Steijlen: Versie Datum Opmerkingen Deze handleiding is met de nodige zorg samengesteld. Het kan echter voorkomen dat sommige zaken niet goed of onduidelijk zijn beschreven. Mocht je iets tegenkomen wat niet of slecht is beschreven horen

Nadere informatie

PHP & MySQL. Studievaardigheden 2014. Jan van Rijn (j.n.van.rijn@liacs.leidenuniv.nl) LIACS, Universiteit Leiden

PHP & MySQL. Studievaardigheden 2014. Jan van Rijn (j.n.van.rijn@liacs.leidenuniv.nl) LIACS, Universiteit Leiden PHP & MySQL Studievaardigheden 2014 Jan van Rijn (j.n.van.rijn@liacs.leidenuniv.nl) LIACS, Universiteit Leiden Inleiding Voorkennis: geen Stof: dit college, www.w3schools.com en www.php.net Opdracht: maak

Nadere informatie

Handleiding sms-dienst Adviesburo Pompoen

Handleiding sms-dienst Adviesburo Pompoen Handleiding sms-dienst Adviesburo Pompoen Index Inleiding 1 Stap 1: Inloggen 2 Stap 2: Dashboard 3 Stap 3: SMS Center 4 Stap 4: Nieuw bericht (ongepersonaliseerd) 5 Stap 5: Importeer CSV 7 Stap 6: Het

Nadere informatie

Handleiding Formulieren in TYPO3 Versie 1.2, 18 juli 2008

Handleiding Formulieren in TYPO3 Versie 1.2, 18 juli 2008 Handleiding Formulieren in TYPO3 Versie 1.2, 18 juli 2008 1. Formulieren aanmaken en plaatsen... 2 1.1 Formulieren aanmaken... 2 1.2 Formulier plaatsen op een pagina... 8 1.3 Aanmaken formulieren map...

Nadere informatie

Xampp Web Development omgeving opzetten onder Windows.

Xampp Web Development omgeving opzetten onder Windows. Xampp Web Development omgeving opzetten onder Windows. Inhoudsopgave 1. Lees dit eerst... 2 2. Inleiding... 2 3. Installatie Xampp... 3 1.1 Installatie Xampp Launcher... 7 1.2 Controle geïnstalleerde bestanden...

Nadere informatie

4.1 4.2 5.1 5.2 6.1 6.2 6.3 6.4

4.1 4.2 5.1 5.2 6.1 6.2 6.3 6.4 Handleiding CMS Inhoud 1 Inloggen 2 Algemeen 3 Hoofdmenu 4 Pagina s 4.1 Pagina s algemeen 4.2 Pagina aanpassen 5 Items 5.1 Items algemeen 5.2 Item aanpassen 6 Editor 6.1 Editor algemeen 6.2 Afbeeldingen

Nadere informatie

Technische nota AbiFire5 Rapporten maken via ODBC

Technische nota AbiFire5 Rapporten maken via ODBC Technische nota AbiFire5 Rapporten maken via ODBC Laatste revisie: 29 juli 2009 Inhoudsopgave Inleiding... 2 1 Installatie ODBC driver... 2 2 Systeeminstellingen in AbiFire5... 3 2.1 Aanmaken extern profiel...

Nadere informatie

UNIX FAQ. Migratie naar een nieuwe server

UNIX FAQ. Migratie naar een nieuwe server UNIX FAQ Migratie naar een nieuwe server Shared Hosting Unix FAQ v5 NL 28032006 Pagina 1/13 Inhoudstafel 1. Inleiding...3 2. Inloggen...3 3. Register_globals in PHP...4 3.1 Wat is de optie register_globals

Nadere informatie

Datum: Gemaakt door: Berend de Groot Voor: ComSi, ROC Friese Poort

Datum: Gemaakt door: Berend de Groot Voor: ComSi, ROC Friese Poort Datum: Gemaakt door: Berend de Groot Voor: ComSi, ROC Friese Poort Contents 1. Introductie... 3 1.1. Hoe werkt het?... 3 2. Eerste Contact als gebruiker... 4 3. Ticket Acties... 5 4. Tickets Pagina...

Nadere informatie

Producten toevoegen. Inleiding

Producten toevoegen. Inleiding Producten toevoegen Inleiding...1 Stap 1: Instellingen controleren...2 Stap 2: Menu's aanmaken...3 Stap 3: Producten toevoegen...4 Producten overzicht...5 Product verwijderen...5 Menu/submenu verwijderen...5

Nadere informatie

Widget Tip van de dag!

Widget Tip van de dag! Gebruikershandleiding Widget Tip van de dag! Datum Versie Naam Opmerkingen 01-12-2011 0.5 M. Bruinsma Schrijven handleiding J. van Beijnen 05-12-2011 1.0 J. van Beijnen Opmaak en kleine aanpassingen structuur

Nadere informatie

Gebruiksaanwijzing om de nieuwspagina van uw peuterspeelzaal online aan te kunnen passen. Hiervoor heeft u een internetverbinding nodig!

Gebruiksaanwijzing om de nieuwspagina van uw peuterspeelzaal online aan te kunnen passen. Hiervoor heeft u een internetverbinding nodig! Gebruiksaanwijzing om de nieuwspagina van uw peuterspeelzaal online aan te kunnen passen. Hiervoor heeft u een internetverbinding nodig! Hoe gaat u te werk? 1. Start de website op www.psz- steenwijkerland.nl

Nadere informatie

En hoe gaan ze dit allemaal terugvinden?

En hoe gaan ze dit allemaal terugvinden? En hoe gaan ze dit allemaal terugvinden? Taak 1.2.10 Thomas Muller Paul van der Linden MT1A Tutor: van Griensven Docent: van den Biggelaar Gemaakt door Thomas Muller en Paul van der Linden Pagina 1 van

Nadere informatie

1 Inleiding Installatie 21. WAMP met Apache Friends 23. XAMPP starten en controleren 26. LAMP 32 De installatie ongedaan maken 33

1 Inleiding Installatie 21. WAMP met Apache Friends 23. XAMPP starten en controleren 26. LAMP 32 De installatie ongedaan maken 33 0DD&) QO( l 1 Inleiding 13 De betekenis van PHP 14 Voorkennis 15 Wat dit boek niet biedt 15 PHP 5 - Een routebeschrijving door dit boek 1 5 Zo kunt u de weg vinden 17 Een dankwoord van de auteur 18 Copyright

Nadere informatie

De nieuwste build van CarmenTV Injector heeft een aantal verbeterde en nieuwe functies.

De nieuwste build van CarmenTV Injector heeft een aantal verbeterde en nieuwe functies. CarmenTV Injector De nieuwste build van CarmenTV Injector heeft een aantal verbeterde en nieuwe functies. Het beginscherm van Injector vindt u hierboven. In het scherm ziet u een overzicht van taken, welke

Nadere informatie

Globale kennismaking

Globale kennismaking Globale kennismaking Kennismaking Tesla CMS 1. Dashboard 2. pagina beheer - pagina aanmaken - pagina aanpassen - pagina verwijderen - pagina seo opties - zichtbaarheid pagina 3. subpagina beheer - subpagina

Nadere informatie

Automatisering voor Financiële Dienstverleners. Werken met Queries en Merge Documenten. For more information visit our website at www.pyrrho.

Automatisering voor Financiële Dienstverleners. Werken met Queries en Merge Documenten. For more information visit our website at www.pyrrho. Automatisering voor Financiële Dienstverleners Werken met Queries en Merge Documenten For more information visit our website at www.pyrrho.com Date: Document Nr: 30 maart, 2007 UBizzMerge, Versie 4.0 Status:

Nadere informatie

PhPlist Gebruikers Handleiding

PhPlist Gebruikers Handleiding PhPlist Gebruikers Handleiding Auteur: Sander Duivenvoorden Bedrijf: Buildnet webservices E-mail: support@buildnet.nl Datum: 23-09-2008 Laatste wijziging: 17-10-2008 Versie: 1.1 1 Inleiding Het verzenden

Nadere informatie

A.C. Gijssen. 0.3 PHP en MySQL

A.C. Gijssen. 0.3 PHP en MySQL PHP en MySQL A.C. Gijssen 0.3 PHP en MySQL PHP en MySQL 0.4 Inhoudsopgave Voorwoord Deel 1 Over PHP 1.1 Inleiding...13 1.2 Wat is PHP?...14 1.3 De geschiedenis van PHP...15 1.4 Editor...16 1.5 PHP en websites...17

Nadere informatie

IMAP-handleiding Bookinto

IMAP-handleiding Bookinto IMAP-handleiding Bookinto Olivier Nuyts 2Ti6 Ewout Spitaels 2Ti6 Departement Handelswetenschappen en Bedrijfskunde Bachelor Toegepaste Informatica 2 de jaar Academiejaar 2010-2011 Overzicht Inleiding Bookinto

Nadere informatie

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd. BASISINSTRUCTIES SQL SQL : Structured Query Language is een taal gericht op het ondervragen van een relationele database en die aan veel klassieke databasemanagementsystemen kan worden gekoppeld. SQL is

Nadere informatie

Mailing List Manager. Hoofdstuk 19

Mailing List Manager. Hoofdstuk 19 Mailing List Manager Een MLM (Mailing List Manager) dient enerzijds om mailinglijsten te maken en daar berichten naar te sturen. Dat is de beheerkant. Anderzijds kan men zich als gebruiker met een MLM

Nadere informatie

Handleiding wordpress

Handleiding wordpress Handleiding wordpress Wordpress versie 3.0.4 Handleiding versie 1.1 Auteur Website Geert Hoekzema www.geerthoekzema.nl www.geerthoekzema.nl geert@geerthoekzema.nl 1 Inhoudsopgave Inleiding... 3 Beginnen

Nadere informatie

In het CMS is het mogelijk om formulieren aan te maken. Voorafgaand een belangrijke tip:

In het CMS is het mogelijk om formulieren aan te maken. Voorafgaand een belangrijke tip: FORMULIEREN In het CMS is het mogelijk om formulieren aan te maken. Voorafgaand een belangrijke tip: belangrijk Importeer formulierdata uit een CSV-bestand precies zoals verderop beschreven. 1. Gedrag

Nadere informatie

Installatie SQL: Server 2008R2

Installatie SQL: Server 2008R2 Installatie SQL: Server 2008R2 Download de SQL Server 2008.exe van onze site: www.2work.nl Ga naar het tabblad: Downloads en meld aan met: klant2work en als wachtwoord: xs4customer Let op! Indien u een

Nadere informatie

EBUILDER HANDLEIDING. De Ebuilder is een product van EXED internet www.exed.nl. info@exed.nl EXED CMS UITLEG

EBUILDER HANDLEIDING. De Ebuilder is een product van EXED internet www.exed.nl. info@exed.nl EXED CMS UITLEG EBUILDER HANDLEIDING De Ebuilder is een product van EXED internet www.exed.nl info@exed.nl 1 INHOUDSOPGAVE Inleiding Een korte introductie over het Ebuilder» Navigatie» Snelnavigatie Pagina s Hier vind

Nadere informatie

cbox UW BESTANDEN GAAN MOBIEL! VOOR SMARTPHONES EN TABLETS MET HET ios BESTURINGSSYSTEEM GEBRUIKERSHANDLEIDING

cbox UW BESTANDEN GAAN MOBIEL! VOOR SMARTPHONES EN TABLETS MET HET ios BESTURINGSSYSTEEM GEBRUIKERSHANDLEIDING cbox UW BESTANDEN GAAN MOBIEL! VOOR SMARTPHONES EN TABLETS MET HET ios BESTURINGSSYSTEEM GEBRUIKERSHANDLEIDING Inleiding cbox is een applicatie die u eenvoudig op uw computer kunt installeren. Na installatie

Nadere informatie

Taak 2.1.3 Versleutelen en dan weer terug... 1

Taak 2.1.3 Versleutelen en dan weer terug... 1 Taak 2.1.3 Versleutelen en dan weer terug Inhoud Taak 2.1.3 Versleutelen en dan weer terug... 1 Inhoud... 1 Inleiding... 2 Encryptie en Decryptie... 3 Symmetrisch... 3 Asymmetrisch... 3 Waarom Encryptie

Nadere informatie

WebUntis 2014 Instructies basisinstallatie

WebUntis 2014 Instructies basisinstallatie WebUntis 2014 Instructies basisinstallatie Copyright 2013 Untis Benelux Rotterdam Installatie WebUntis 1 1 Algemeen... 2 1.1 Java JRE 7... 2 1.2 Apache Tomcat... 2 1.3 Een database.... 4 1.4 JDBC-Driver...

Nadere informatie

Opdrachtgever: Avpec1910 Auteur: Avalon Systems Versie: 1.0 Datum: 12/01/2011. Handleiding WYSIWYG HTML editor: CKEditor

Opdrachtgever: Avpec1910 Auteur: Avalon Systems Versie: 1.0 Datum: 12/01/2011. Handleiding WYSIWYG HTML editor: CKEditor Opdrachtgever: Avpec1910 Auteur: Avalon Systems Versie: 1.0 Datum: 12/01/2011 Handleiding WYSIWYG HTML editor: CKEditor Inhoud 1 Inleiding... 3 2 WYSIWYG editor... 4 2.1 Iconen toegelicht... 5 2.2 Maximaliseren...

Nadere informatie

Handleiding ChainWise Digitaal factureren

Handleiding ChainWise Digitaal factureren Handleiding ChainWise Digitaal factureren Versie: 1.1 Datum: februari 2013 Inhoudsopgave 1 Inleiding... 3 2 Voorbereiding... 4 2.1 E-mail sjabloon aanpassen... 4 2.2 Instellen from en bcc adres, subject...

Nadere informatie

Outlook koppeling ChainWise

Outlook koppeling ChainWise Outlook koppeling ChainWise Product ChainWise Bedrijfssoftware Datum 6-11-2018 Alle rechten voorbehouden aan ChainWise Niets in deze uitgave mag worden gebruikt in welke vorm dan ook zonder schriftelijke

Nadere informatie

Gegevens uit een database tonen

Gegevens uit een database tonen Gegevens uit een database tonen In een eerdere handleiding heb ik jullie laten zien hoe je met behulp van MySQL en phpmyadmin een database kunt opzetten. We hebben toen een database aangemaakt en gevuld

Nadere informatie

Les W-04: Een introductie in PHP

Les W-04: Een introductie in PHP Les W-04: Een introductie in PHP 4.0 PHP De afgelopen jaren zijn websites steeds interactiever geworden. Je beantwoordt een enquête via internet, doet mee aan een poll, stuurt een formulier naar iemands

Nadere informatie

Bitrix Site Manager gebruikershandleiding BureauZuid

Bitrix Site Manager gebruikershandleiding BureauZuid Bitrix Site Manager gebruikershandleiding BureauZuid Introductie Deze gebruikershandleiding geeft gedetailleerde basisinformatie over hoe te werken met Bitrix Site Manager. Deze handleiding is bedoeld

Nadere informatie

8.1.1 Aanmaken van een nieuwsbrieflijst voor een nieuwsbrief

8.1.1 Aanmaken van een nieuwsbrieflijst voor een nieuwsbrief 8. Nieuwsmanagement Doormiddel van het nieuwsmanagement onderdeel kunt u uw klanten op de hoogte houden van het laatste nieuws, de nieuwste producten of de beste aanbiedingen. U kunt dit in de webshop

Nadere informatie

DrICTVoip.dll v 2.1 Informatie en handleiding

DrICTVoip.dll v 2.1 Informatie en handleiding DrICTVoip.dll v 2.1 Informatie en handleiding Nieuw in deze versie : Koppeling voor web gebaseerde toepassingen (DrICTVoIPwebClient.exe) (zie hoofdstuk 8) 1. Inleiding Met de DrICTVoIP.DLL maakt u uw software

Nadere informatie

PHP-OPDRACHT SITE BOUWEN

PHP-OPDRACHT SITE BOUWEN PHP-OPDRACHT SITE BOUWEN PERIODE 4 LEERJAAR 1 Opleiding: Duur: Applicatieontwikkelaar 1 onderwijsperiode (4-8 weken) Voorkennis: Basiscursus PHP 5.4 Victor Peters (978 90 125 8499 9) Basiscursus XHTML,

Nadere informatie

Databases - Inleiding

Databases - Inleiding Databases Databases - Inleiding Een database is een verzameling van een aantal gegevens over een bepaald onderwerp: een ledenbestand van een vereniging, een forum, login gegevens. In een database worden

Nadere informatie

Beknopte handleiding voor het gebruik van de Secure Download (en upload-) Facility

Beknopte handleiding voor het gebruik van de Secure Download (en upload-) Facility Beknopte handleiding voor het gebruik van de Secure Download (en upload-) Facility Chantal te Marvelde Versie 1 Juli 2012 Inhoud Inhoud... 2 1 Waar vind je de Secure Download Facility (SDF)?... 3 1.1 Via

Nadere informatie

Content Management System

Content Management System Content Management System Een CMS (Content Management System) dient om speciale gebruikers online gelegenheid te geven de inhoud van een website aan te passen. Er kunnen verschillende soorten tekst (en

Nadere informatie

Handleiding NarrowCasting

Handleiding NarrowCasting Handleiding NarrowCasting http://portal.vebe-narrowcasting.nl september 2013 1 Inhoud Inloggen 3 Dia overzicht 4 Nieuwe dia toevoegen 5 Dia bewerken 9 Dia exporteren naar toonbankkaart 11 Presentatie exporteren

Nadere informatie

Getting Started. AOX-319 PBX Versie 2.0

Getting Started. AOX-319 PBX Versie 2.0 Getting Started AOX-319 PBX Versie 2.0 Inhoudsopgave INHOUDSOPGAVE... 2 OVER DEZE HANDLEIDING... 3 ONDERDELEN... 3 INSTALLATIE EN ACTIVERING... 3 BEHEER VIA DE CONSOLE... 4 BEHEER VIA DE BROWSER... 5 BEVEILIGING...

Nadere informatie

XAMPP Web Development omgeving opzetten onder Windows.

XAMPP Web Development omgeving opzetten onder Windows. XAMPP Web Development omgeving opzetten onder Windows. Inhoudsopgave 1. Lees dit eerst... 2 2. Inleiding... 2 1 Xampp downloaden... 2 2 Installatie Xampp 1.7.4 op externe harddisk... 3 3 XAMPP herconfiguren...

Nadere informatie

INHOUDSOPGAVE BEHEERDERS HANDLEIDING

INHOUDSOPGAVE BEHEERDERS HANDLEIDING INHOUDSOPGAVE BEHEERDERS HANDLEIDING Login...2 Gebruikte symbolen...3 Bewerken diensten...5 Bewerken evenementen...6 Bewerken ledensoort...7 Bewerken tijden...8 Schema soort...9 Schema schema tijden...10

Nadere informatie

Formulieren en waarden posten naar een view

Formulieren en waarden posten naar een view Hoofdstuk 4 Formulieren en waarden posten naar een view Waarden posten naar een view in een Zend-project gaat heel anders dan dat je gewend bent. Om dit mechanisme te leren, kunnen we het beste een eenvoudige

Nadere informatie

U krijgt de melding dat uw browser geen cookies aanvaardt? Volg dan onderstaande weg om ze wel te accepteren.

U krijgt de melding dat uw browser geen cookies aanvaardt? Volg dan onderstaande weg om ze wel te accepteren. HELP BIJ HET RAADPLEGEN VAN HET PORTAAL HDP Hoe internet-cookies aanvaarden? U krijgt de melding dat uw browser geen cookies aanvaardt? Volg dan onderstaande weg om ze wel te accepteren. Internet Explorer

Nadere informatie