Learnit Training
« Terug naar alle thema's

Trainingen PHP

Wij hebben meerdere PHP trainingen ontwikkeld waarin u alles kunt leren over programmeren in PHP. Onder andere onze cursus PHP basis en voor de wat gevorderde programmeurs hebben we de cursus PHP vervolg.Ook leert u tijdens deze cursussen queries te maken in MYSQL.

“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

“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

“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

“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

“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.

“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.

“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

“Duidelijke uitleg over de installatie en het beheer van MySQL. Inclusief de mogelijke problemen die er kunnen ontstaan, en hoe je die kunt oplossen. Tempo was goed te doen. De trainer speelde in op de wensen/vragen van de cursisten. Is goed in het overdragen van zijn kennis op de cursisten.” Training: MySQL Administering - Beoordeling: 9.2

J. Adriaanse, Gemeente Renkum

“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

“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

[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]

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]

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.