Learnit Training
« Terug naar alle thema's

Trainingen Software ontwikkeling

Hieronder vind je een overzicht van onze trainingen omtrent het creëren en ontwikkelen van software. Of het nu gaat om verschillende onderdelen van Java, Oracle of het leren programmeren in PHP of C++: Learnit biedt al deze trainingen maatgericht en zowel individueel als voor grote groepen (ook incompany) aan.

“Duidelijke theoretische uitleg en praktische oefeningen om tijdens de les uit te voeren. De trainer van Learnit weet de cursus goed aan te passen op de leerlingen. Een geslaagde PHP-basis meegekregen waar ik veel aan ga hebben in de praktijk. Bedankt.” Training: PHP Programmeren Basis - Beoordeling: 8.2

A. Kreupeling

“Ik heb PHP uit de 'abacadabra'-sfeer kunnen halen, dit duwtje in de rug had ik nodig om er zelf op voort te kunnen borduren.” Training: PHP Programmeren Basis - Beoordeling: 9.3

J.F. Altenburg, Stenden Hogeschool

“Uitstekende training die geheel heeft voldaan aan mijn verwachtingen” Training: PHP Programmeren Basis - Beoordeling: 9

A. Verhoeven, Chromalloy Holland B.V.

“De toegevoegde waarde was dat de docent ook nog goed kon helpen bij php problemen buiten de cursus om. hij heeft me goed kunnen helpen zodat ik voor mijn werk goed vooruit kan.” Training: PHP Programmeren Basis - Beoordeling: 7.9

R. van Erp, Van Haandel Metaal

“Een pittige cursus waar je zeker een introductie van PHP krijgt.” Training: PHP Programmeren Basis - Beoordeling: 8.1

E. Conlin, Sisyphus Design

“Prima cursus om de basis van PHP en MySQL onder de knie te krijgen. Voordeel van deze opleiding is dat je direct de effecten van de lesstof ziet terugkomen in de opdrachten met aan het eind een zelfgemaakt loginscherm die de input controleert met datgeen wat je zelf in de database hebt gezet.” Training: PHP Programmeren Basis - Beoordeling: 7.9

Stefan van Duijn, ING

“Afhankelijk van de "fundering" die men al heeft bij de start van deze cursus, stemt men de diepgang van de Basis PHP cursus af op de kandidaten, dat is een zeer krachtig concept, waardoor de cursus kan worden toegespitst op de wensen van de cursist.” Training: PHP Programmeren Basis - Beoordeling: 7.4

M.Dijs, Avans Hogeschool

“Erg handig is dat je je eigen tempo kan volgen. Als je vervolgens ergens niet uit komt is de docent aanwezig om het uit te leggen.” Training: PHP Programmeren Basis - Beoordeling: 7.7

B. Coppens, Cartel Autoverhuur B.V.

“Learnit heeft een professionele docent bij ons bedrijf langs gestuurd. De docent heeft de grondbeginselen uitstekend uitgelegd zodat het voor ons team begrijpelijk was wat PHP nu is en hoe je ermee kunt programmeren. Daar het de basiscursus betrof, kunnen we nu eenvoudige dingen zelf doen. Ik kijk uit naar een volledige cursus.” Training: PHP Programmeren Basis - Beoordeling: 8.4

Ronald de Bakker, Gemeente Den Haag

“In deze training krijg je de basis voor PHP, waarmee je een goede eerste opzet voor een systeem kan maken. Je kan de situaties inbrengen die voor je eigen werksituatie relevant zijn en daarmee, binnen de kaders van de opleiding, deze voor jezelf vormgeven.” Training: PHP Programmeren Basis - Beoordeling: 7.9

R. Onderdelinden, Nationale Nederlanden

“Professionele training met een informele sfeer en ruimte voor discussie. Ook het aandacht voor de eigen omgeving (website, webshop, webapplicatie) is goed aanwezig en voldoende ruimte om eigen cases te bespreken.” Training: Usability - Beoordeling: 9.1

J. Leemrijse, Pink Web Applications

“Nice course content. I have in particular enjoyed the exercises and the follow-up discussions, many of which were quite intensive and very helpful. Our lecturer, Andre is a very nice person. He guided the course in a very pleasant but professional way, which is absolutely enjoyable. Plus, he has very broad knowledge about the content and was often able to give in-depth insight to most part of the course content.” Training: Object oriented analysis and design using UML - Beoordeling: 9.6

C. Gou, TASS International

“De cursus gaat diep in op de vragen die worden gesteld. Ben zeer enthousiast over de docent en de cursus zelf. We hebben veel geleerd en niet alleen over zend, maar ook over andere onderwerpen die tot sprake zijn gekomen voor ons.” Training: PHP Zend Framework 2 Programming - Beoordeling: 8.4

P. Cörvers, Social Deal

“Erg prettige sfeer, geen grote groep cursisten. Locatie gunstig t.o.v. Centraal station Utrecht. Lunch prima verzorgd. Je kan in overleg met de trainer veel sturen in de richting die jij graag wilt.” Training: Javascript Basis - Beoordeling: 8.2

E. Roes, ROC A12 locatie Velp

“Deze training is een aanrader als je nog geen ervaring hebt met java script.” Training: Javascript Basis - Beoordeling: 9.8

P. Anuels, Praclox Software B.V.

“De cursus heeft mij een goede start gegeven om het embedded systeem, waar ik op het bedrijf mee werk, beter te leren begrijpen.” Training: C/C++ Embedded development - Beoordeling: 8

R. van Putten, Rhosonics Analytical BV

“Een zeer goede inleiding tot embedded control.” Training: C/C++ Embedded development - Beoordeling: 8.1

O. Einfinger, FMTC

“Ik vind de cursus zeer geschikt voor wie de wereld van embedded system wil begrijpen. De 4 dagen waren wel nodig, er zijn tal van onderwerpen besproken. Zeer interessant.” Training: C/C++ Embedded development - Beoordeling: 8.2

M. Brinker, Ericsson ETM

“Een uitstekende training, met goede balans tussen theorie en praktijk.” Training: C/C++ Embedded development - Beoordeling: 8.4

R. van Bemmelen

“Learnit cursus php vervolg was voor mij erg leerzaam. Vond de cursus opbouw zeer persoonsgebonden en je kon echt werken aan je eigen leerdoelen. Door eigen inbreng heel specifiek ingegaan op wat ik zelf wou leren. Ook de locatie was voor mij ideaal en makkelijk te bereiken. Ze waren bij de cursus ook zeer meegaand in onderwerpen die je zelf in brengt.” Training: PHP Programmeren Vervolg - Beoordeling: 8.1

S. Elings, GemeenteOplossingen

“Er hing een goede sfeer bij Learnit. De begeleiding was professioneel en doordat het niet zo'n massale organisatie is, was er veel aandacht voor niveau en wensen van elke cursist individueel.” Training: PHP Programmeren Vervolg - Beoordeling: 8.6

M. Hartog, BPM Medica

“Interessante cursus over GIT in de praktijk. Na de cursus heb je een goede basis kennis GIT en kun je via command line of een GUI GIT gebruiken op de manier zoals het bedoeld is. Wat mij betreft een mooie toevoeging op mijn Try GIT course die ik online had gedaan. Veel nieuwe informatie afgewisseld met herkenning.” Training: Git versiebeheer - Beoordeling: 9

A. van den Broek, De Hosting Makelaar B.V.

“Een zeer leerzame cursus en ook direct toepasbaar in de praktijk wat ervoor zorgt dat de kennis blijft hangen.” Training: Git versiebeheer - Beoordeling: 9.2

C. Floor, PFM Footfall intelligence

“Nuttige cursus om de eerste beginselen van Android app-ontwikkeling onder de knie te krijgen. Trainer is enthousiast en past de behandelde onderwerpen goed aan aan de wensen v/d cursisten.” Training: Android programmeren Basis - Beoordeling: 7.6

A. Sadarjoen, Optelec Developement B.V.

[link]

Programmeren kun je leren!

Bezoek een willekeurige vacaturesite en je ziet het direct: er is een ongekend grote vraag naar programmeurs. Ben je op zoek naar een goedbetaalde baan met uitstekende toekomstperspectieven, dan is leren programmeren een must. Zelfs voor banen waarin je niet direct zelf programmeert is een programmeertaal een uitstekende toevoeging aan je CV. Er zijn echter talloze programmeertalen, dus waar kan je nu het best beginnen? En welke talen zijn interessant met het oog op de toekomst? We maakten een overzicht van de 10 belangrijkste programmeertalen. Talen waar je vervolgens ook direct een training in kan volgen: laat die banen maar komen!

Java

Java was jarenlang de meest-gevraagde programmeertaal voor werkgevers. Hoewel deze sinds kort voorbijgestreefd is door SQL, is het nog steeds erg populair. Java is de standaard voor veel enterprise software, wordt door meer dan 9 miljoen ontwikkelaars gebruikt en wordt gebruikt om meer dan 7 miljard (!) apparaten wereldwijd aan te sturen. Haar populariteit dankt de programmeertaal vooral aan de simpliciteit en leesbaarheid van de code, wat het een goed startpunt maakt voor beginnende programmeurs. Ook is een van de grondbeginselen van Java de compatibiliteit die ervoor zorgt dat oudere applicaties blijven werken.

SQL

Je treft SQL overal aan. Database technologieën als MySQL, PostgreSQL en MicrosoftSQL houden banken, universiteiten, ziekenhuizen, kleine en grote bedrijven draaiend. Het is niet overdreven om te stellen dat iedere computer en ieder persoon met toegang tot technologie op de een of andere manier met SQL in aanraking komt. Zo hebben iOS en Android apparaten toegang tot SQLite, een SQL database, en zijn er talloze mobiele applicaties die direct van SQL gebruik maken.

C

C stamt uit de vroege jaren 70, toen het werd ontwikkeld als een generieke, algemene programmeertaal. Als een van de oudste programmeertalen die er is, geeft C ons de bouwstenen voor andere populaire talen als C++, Java, Javascript en Python. C zelf wordt vooral gebruikt voor besturingssystemen en industriële applicaties.

C++

C is een object-oriented programmeertaal gebaseerd op C. Sinds de taal in de jaren 80 werd ontwikkeld is deze gebruikt voor het ontwikkelen van Adobe en Microsoft applicaties, MongoDB databases en grote delen van Mac OS/X besturingssysteem. Het wordt door velen gezien als de beste programmeertaal om te leren voor applicaties waarbij de prestaties van groot belang zijn, zoals games of audio-/videobewerking.

iOS / Objective C / Swift

Tot 2014 was Objective C de programmeertaal die door het Apple besturingssysteem werd gebruikt. Het speelt een rol in Apple’s OS X, iOS en zijn API’s. Lange tijd was het de taal waarin je als programmeur iPhone applicaties moest schrijven, tot Apple enkele jaren geleden met zijn eigen programmeertaal kwam: Swift. Swift lijkt in veel manieren erg op C++ en haar voorganger Objective C, maar is voor de meeste programmeurs iets makkelijker te leren.

Javascript

Javascript – niet te verwarren met Java – wordt veel gebruikt om interactiviteit aan websites toe te voegen en wordt ondersteund door alle grotere internetbrowsers. Niet alleen kan het gebruikt worden voor simpele functionaliteit als popups of simpele spellen, het vormt ook de basis voor Node.js – Een server technologie die veel in real-time communicatie wordt gebruikt.

PHP

PHP was in feite nooit bedoelt als programmeertaal. De Deens-Canadese programmeur Rasmus Lerdorf ontwikkelde PHP in 1994 als een serie tools die hem in staat stelden zijn persoonlijke website (Personal HomePage) te managen. Tegenwoordig hebben we de betekenis van de afkorting veranderd naar Hypertest Pre-Processor en wordt de taal op servers gebruikt om HTML-websites dynamisch te genereren. PHP is gemakkelijk te leren, maar bezit daarnaast veel geavanceerde functionaliteit die voor ervaren programmeurs van grote waarde is.

HTML / CSS

HTML vormt de basis voor webpagina’s. Dit doet de programmeertaal door in feite een structuur neer te zetten die door andere talen uitgebreid of aangepast kan worden. Zo kan Javascript worden gebruikt om geavanceerde interactiviteit toe te voegen en beïnvloedt CSS de presentatie, opmaak en lay-out van webpagina’s. Hoewel PHP vanaf een server HTML kan genereren, is kennis van HTML en CSS voor web-ontwikkelaars een absolute must.

Python

Python is een server-side programmeertaal voor websites en mobiele applicaties. Het is een relatief gemakkelijke taal om te leren, dankzij de leesbaarheid en bondigheid van de code. In Python is het veelal mogelijk om een concept in minder regels uit te drukken dan in vele andere talen. Python wordt gebruikt in applicaties als Instagram en Pinterest in de vorm van het web-framework Django. Google, Yahoo! en NASA maken allen gebruik van Python.

Ruby

Ruby is – net als Python – een programmeertaal die zeer gebruiksvriendelijk is voor beginnende programmeurs. Tegelijkertijd is de object-oriented taal zeer dynamisch en daarmee populair voor het ontwikkelen van websites en mobiele apps. Het is de basis van het Ruby on Rails framework dat door Groupon, Shopify, Scribd en GitHub wordt gebruikt.

Vul de lijst aan!

Natuurlijk zijn er nog veel meer programmeertalen. We hebben slechts een paar van de populairste voor je op een rijtje gezet. Heb jij toevoegingen? Mis je een taal die je zelf echt vaak gebruikt? Deel je kennis en ervaring met ons!

Zelf een (andere) programmeertaal leren?

Wil je zelf een (andere) programmeertaal leren? Ontdek dan snel onze workshops en cursussen. Je leert onder begeleiding van een ervaren trainer op efficiënte wijze de basis van programmeren. Ben je al wat verder? Dan is het mogelijk om je in te schrijven voor een training voor gevorderden. Je gaat dan dieper in de op de materie. Zo’n training is niet alleen leuk, maar ze sluit ook goed aan op de praktijk. Zo weet je zeker dat je met je nieuwe kennis en vaardigheden direct wat kunt doen!

[link]

Spelen met SQL: SQLFiddle

Wi je de queries op deze blog zelf uitvoeren? Of wil je snel iets met SQL uitproberen zonder een SQL-server te installeren? Gebruik SQL fiddle! SQL fiddle is een online tool waarmee je queries kunt uitproberen en delen met anderen. Het gebruik ervan is er eenvoudig:

Stap 1
Ondanks dat er een ANSI SQL standaard is zijn er verschillen tussen SQL-servers. In het bijzonder als je aan de slag gaat met functies en stored procedures. Gelukkig ondersteunt SQL fiddle 7 verschillende SQL servers.

Stap 2
Nadat je de server hebt geselecteerd kun je het schema (de tabellen met gegevens) aanmaken. De queries hiervoor gaan in het het linkerdeel van het scherm. De database met de resultaten van onze studenten staat hier.

Stap 3
Als het aanmaken van het schema is gelukt kun je de queries gaan schrijven. Dit kan in het rechter scherm. Let op: met MySQL kun je alleen selectie queries doen en geen records toevoegen of tabellen aanpassen.

Met Run SQL wordt de query naar de server gestuurd en krijg je het resultaat onderin jouw scherm. (De verwerkingstijd hangt af van de drukte op de server).

De query kun je delen met anderen door simpelweg de URL te kopiëren en door te sturen.

[link]

SQL-database exporteren naar CSV

Met PHP kun je eenvoudig informatie uit je database aanbieden aan je bezoekers in een CSV bestand. CSV (Comma Separated Values) is een simpel formaat waarbij alle waarden gescheiden worden door een komma. Het is o.a. te openen met Excel, waarna je er data-analyses op los kunt laten of er grafieken van kunt maken.

We gaan hier een PHP script schrijven dat resultaten uit onze database haalt en deze in een CSV bestand zet. In ons geval de uitslagen van cursus examens.

De eerste stap is het ophalen van de gegevens uit de database. Daarbij maken we gebruik van PDO (5 redenen om PDO te gebruiken met SQL databases).

$db_user = 'learnit';
$db_pass = 'geheim';
$db_name = 'uitslagen';
$db_host = 'localhost';

try {
    $db = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8", 
                  $db_user, 
                  $db_pass, 
                  // Als een error optreed moet PDO een exception gooien
                  array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
	$query = "SELECT id, naam, email, resultaat FROM Uitslagen";
	$pds = $db->query($query); 
} catch(PDOException $ex) {
    echo "An Error occured: " . $ex->getMessage(); 
	exit();
}	

We maken hier gebruik van een try-catch om exceptions die bij een verbindingprobleem kunnen optreden af te vangen. Het resultaat van de query is een PDOStatement Object. Hier kunnen we de records uit halen, maar eerst moeten we nog voorbereidingen treffen:

header('Content-Type: text/csv' );
header('Content-Disposition: attachment; filename="resultaten.csv');

Met behulp van de header functie passen we de HTTP header aan. We willen dat de bezoeker het bestand direct kan downloaden. Dat doen we door in de header aan te geven dat het om een CSV bestand gaat en dat het "resultaten.csv" heet.

Nu het openen van de standard output kunnen we het CSV bestand zelf gaan schrijven:

$fp = fopen('php://output', 'w');
fputs($fp, chr(0xEF) . chr(0xBB) . chr(0xBF));

In het CSV bestand willen we gebruik maken van de UTF-8 encoding. Om er voor te zorgen dat Excel herkent dat het hier om een UTF-8 encoding gaat moeten het CSV betand beginnen met 0xEF,0xBB,0xBF.

Nu kunnen we de eerste regel aan het CSV bestand toevoegen. Deze bevat de kopjes van de gegevens:

fputs($fp, "id, naam, email, resultaat\r\n");

De \r\n aan het einde van de string geeft een regeleinde aan. Als we deze niet zouden toevoegen zouden volgende gegevens achter worden geplakt ipv op een nieuwe regel. Let op: dit werkt alleen in strings met dubbele quotes.

De volgende lus herhalen we zolang er records gefetched kunnen worden. Deze zet de gegevens in het CSV bestand.


while($uitslag = $pds->fetch(PDO::FETCH_ASSOC)) {
	fputcsv ($fp, $uitslag, ','); 
}

Bij het schrijven naar het bestand worden we geholpen door de fputcsv() functie. Deze schrijft het array naar het CSV bestand. Het derde argument van deze functie is het scheidingsteken. In plaats van de komma (,) zouden we ook een ander scheidings teken kunnen gebruiken, bijvoorbeeld de puntkomma (;). Om het geheel af te maken sluiten we netjes de file:

fclose($fp);

Het gehele script:

<?php
$db_user = 'learnit';
$db_pass = 'geheim';
$db_name = 'uitslagen';
$db_host = 'localhost';
			
try {
    $db = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8", 
                  $db_user, 
                  $db_pass, 
                  array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
                  );
	$query = "SELECT id, naam, email, resultaat FROM Uitslagen";
	$pds = $db->query($query); 
} catch(PDOException $ex) {
   	echo "An Error occured: " . $ex->getMessage(); 
	exit();
}	

header('Content-Type: text/csv' );
header('Content-Disposition: attachment; filename="uitslagen.csv"');

$fp = fopen('php://output', 'w');	
fputs($fp, chr(0xEF) . chr(0xBB) . chr(0xBF) );
fputs($fp, "id, naam, email, resultaat\r\n");
while($uitslag = $pds->fetch(PDO::FETCH_ASSOC)) {
	fputcsv ($fp, $uitslag, ','); 
}
fclose($fp);
?>
[link]

SQL - 5 tips voor het filteren met WHERE

Bij het selecteren van gegevens uit een database moet je vaak een filter samenstellen. Hier 5 tips om veel voorkomende fouten te voorkomen bij het filteren met WHERE.

Alle voorbeelden kun je ook hier zelf uit proberen op sqlfiddle.com met de Uitslagen database.

Tip 1

Als je filtert op tekst moet deze tussen enkele quotes worden geplaatst. Maar het kan natuurlijk voorkomen dat de gezochte tekst zelf een quote bevat. Deze kun je 'escapen' door twee in plaats van één quotes te typen. De quote die wordt geëscaped wordt dan niet langer als afsluiting gezien, maar als onderdeel van de tekst. De query om alle studenten uit 's-Gravenhage te zoeken ziet er als volgt uit:

SELECT  *
FROM    Uitslagen
WHERE   plaats = '''s-Gravenhage';

Tip 2

Het blijft onhandig dat niet overal ter wereld de komma als decimaal teken wordt gebruikt. Dit levert voor ons Nederlanders nog al eens verwarring op. In de ANSI standaard van SQL is gekozen voor de Amerikaanse getalnotatie. In queries moeten decimalen dus ALTIJD genoteerd worden met een punt.

SELECT  *
FROM    Uitslagen
WHERE   resultaat >= 8.5

Laat je niet verwarren als je in het resultaat een komma ziet, de komma heeft in een query een heel andere betekenis.

Tip 3

Het is mogelijk om meerdere filtervoorwaarden te combineren, bijvoorbeeld door zowel een AND als een OR te gebruiken:

SELECT  *
FROM    Uitslagen
WHERE   plaats = 'Amsterdam' OR plaats = '''s-Gravenhage' 
        AND resultaat >= 8.5

Er zit hier een addertje onder het gras: voorwaarden worden niet van links naar rechts gecombineerd. De AND operator bindt sterker dan de OR. Onze voorbeeld query resulteert in:

  • alle studenten uit Amsterdam
  • alle studenten uit 's-Gravenhage met resultaat van minimaal 8,5.

Dat was echter niet wat we voor ogen hadden, we wilden alleen de studenten uit 's-Gravenhage en Amsterdam zien die minimaal een 8,5 scoren. We zien nu ook studenten uit Amsterdam die minder dan een 8,5 scoren. Gelukkig is dit eenvoudig op te lossen door gebruik te maken van haakjes:

SELECT  *
FROM    Uitslagen
WHERE   (plaats = 'Amsterdam' OR plaats = '''s-Gravenhage') 
        AND resultaat >= 8.5

Tip 4

Het tonen van alle studenten met een cijfer in de range 8,5 t/m 9 kan met de volgende query:

SELECT  *
FROM    Uitslagen
WHERE   resultaat >= 8.5 AND resultaat <=9

Voor het selecteren van een range is echter ook een apart keyword beschikbaar. Het keyword BETWEEN maakt de query iets korter. Deze kan op volgende manier worden gebruikt:

SELECT  *
FROM    Uitslagen
WHERE   resultaat BETWEEN 8.5 AND 9

Maar let op, het keyword BETWEEN kan het nogal eens verwarring opleveren; bij ons Nederlanders wordt BETWEEN vaak vertaald met 'tussen'. Echter ook de cijfers met grenswaarden, in ons voorbeeld 8,5 en 9, worden getoond in het resultaat. Een betere vertaling van BETWEEN is 'van ... tot en met'.

Tip 5

Om queries compacter te schrijven kun je soms gebruik maken van het IN keyword. Bijvoorbeeld om alle studenten uit Amsterdam, Rotterdam en 's-Gravenhage te tonen:

SELECT  *
FROM    Uitslagen
WHERE   plaats = 'Amsterdam' OR 
        plaats = 'Rotterdam' OR 
        plaats =  '''s-Gravenhage'

Dat kan ook zo:

SELECT  *
FROM    Uitslagen
WHERE   plaats IN ('Amsterdam', 'Rotterdam',  '''s-Gravenhage')

De laatste notatie is niet alleen veel korter, maar ook veel makkelijker uit te breiden.

[link]

5 redenen om via PDO met je SQL-database te communiceren

Er zijn verschillende manieren om vanuit PHP met een database te communiceren. Sinds PHP 5.1 is daar een mooie extensie bijgekomen: PHP Database Objects (PDO). Gebruik je nog de ouderwetse mysql_connect() en mysql_query() functies? Hier vijf redenen om over te stappen:

  1. Parameter binding

    Het maken van een query met input van website-bezoekers brengt gevaren met zich mee. Input van bezoekers kan gevaarlijke SQL code bevatten. Als de code onderdeel wordt een query is er sprake van een SQL injectie, een veel voorkomend beveiligingslek.

    Met PDO kun je beter wapenen tegen SQL injecties dankzij 'parameter binding'. PDO biedt de mogelijkheid placeholders te gebruiken in je query. Daarmee voorkom je dat er ongewenste SQL code in de query terechtkomt.

  2. Exploits of a mom

    Randall Munroe, xkcd.com, CC BY-NC 2.5

  3. Transactions

    Wijzigingen in je database staan vaak niet op zichzelf. Vaak vraagt één aanvraag van de bezoeker om wijzigingen in meerdere tabellen. Bij het doen van een bestelling in een webshop moet niet alleen de order worden opgeslagen, maar ook de voorraad worden bijgewerkt.

    Mocht één van deze queries niet goed gaan, bijvoorbeeld omdat de voorraad niet toereikend is, komt de database in een inconsistente toestand. Met transacties kun je in zo'n geval een 'rollBack' doen, waarmee alle wijzigingen in de database sinds het begin van de transactie ongedaan worden gemaakt.

  4. 'Universele' interface

    Met PDO ben je niet gebonden aan één database. Maar liefst twaalf databasesystemen worden ondersteund, waaronder MySql, PostgreSQL, Microsoft SQL Server en Oracle. Dankzij PDO kan je programma er op dezelfde manier mee communiceren. Tijdens het verbinden geef je aan wat voor type database het gaat, daarna kun je ze met dezelfde methoden bevragen.

  5. Verdwijnen van oude functies

    De verouderde mysql_*() functies worden niet meer ondersteund vanaf PHP versie 5.5.0. In de nieuwste versies (vanaf PHP 7.0.0) zijn ze zelfs niet meer opgenomen en dus niet meer te gebruiken.

  6. Object georiënteerd

    PDO is geheel object georiënteerd. Je hebt dus alle voordelen van object georiënteerd programmeren, inclusief exceptions. Met exceptions kun je fouten, zoals verbindingsproblemen, op een elegante manier afhandelen.

Opmerking: Is de PDO Extensie niet beschikbaar op het systeem waar je website op draait, en gebruik je een MySQL database? Stap dan over op mysqli. Minder universeel en elegant dan PDO, maar biedt ook parameter binding, transactions en stored procedures.

[link]

Bezoekerswachtwoorden veilig opslaan met PHP? Gebruik Hashing!

Ook deze week was het weer flink raak: de wachtwoorden van miljoenen internet gebruikers liggen op straat. Terwijl de maker van de website dit eenvoudig hadden kunnen voorkomen.

Wat is het gevaar?

In tegenstelling tot computers zijn mensen niet echt goed in onthouden. Toch moet je overal wachtwoorden voor onthouden. Met als gevolg dat veel mensen één wachtwoord gebruiken voor meerdere websites. Dit brengt een groot beveiligingsrisico met zich mee. Als een wachtwoord uitlekt zijn gelijk alle accounts toegankelijk waar dit wachtwoord is hergebruikt.

Hoe voorkom je diefstal van bezoekerswachtwoorden?

De beste oplossing om wachtwoorden niet te laten stelen, is ze simpelweg niet te bewaren! In plaats daarvan gaan we de hash van het wachtwoord opslaan. Een hashfunctie maakt een wachtwoord onherkenbaar. Op basis van de hash is het onmogelijk de invoer te achterhalen. Een hashfunctie levert altijd hetzelfde resultaat op bij dezelfde invoer. Een sterke hashfunctie zorgt daarbij ook voor dat twee verschillende teksten niet in dezelfde hash resulteren (als dit wel gebeurt is er sprake van een collision). Zelfs als het hackers lukt om een database met hashes te bemachtigen hebben ze nog geen wachtwoorden in handen.

Hoe gebruik je de hash functies van PHP?

Sinds PHP 5.5 is het erg eenvoudig geworden om wachtwoorden te hashen met behulp van de functie password_hash(). Deze functie heeft één verplicht argument: het wachtwoord. Daarbij kan met het tweede argument aangegeven worden welk hashing algoritme er gebruikt moet worden. Als je dit niet opgeeft wordt er standaard gebruik gemaakt van het sterke BCrypt algoritme. Naast hashing voegt deze functie ook een Salt toe, die beschermt tegen Rainbow Tables. Het genereren van de hash gaat als volgt:

 
  $wachtwoord = 'Geheim-Wachtwoord';
  $hash = password_hash($wachtwoord, PASSWORD_BCRYPT);
  echo $hash;

De gegenereerde hash is een tekenreeks van 60 karakters en kan er als volgt uit zien: $2y$10$Se3mLsHueAYTM­3G4Wd9hTuyfzPCRYtafI­mcOSO2U0H4290jPU.SGO. Uit deze hash is het onmogelijk het wachtwoord te achterhalen. Deze hash kun je dus veilig in je database opslaan.

Om te controleren of iemand een correct wachtwoord heeft ingevoerd gebruiken we de functie password_verify(). Deze geven we twee argumenten mee, het wachtwoord dat is ingevoerd bij inloggen en de hash die we hadden opgeslagen.


  $hash = '$2y$10$Se3mLsHueAYTM3G4Wd9hTuyfzPCRYtafImcOSO2U0H4290jPU.SGO';
  $wachtwoord = 'Onzin';

  if (password_verify( $wachtwoord, $hash)){
      echo 'Correct wachtwoord';
  } else {
    echo 'Incorrect wachtwoord';
  }

In dit geval zal het gebruikerswachtwoord een andere hash opleveren dan in onze database stond opgeslagen. Zo kunnen we controleren of het ingevoerde wachtwoord correct is, zonder het originele wachtwoord op te hoeven slaan. Zelfs als een hacker toegang krijgt tot onze database is er geen wachtwoord te vinden.