Wij als website bouwers moeten vaak genoeg input valideren. Zo ook ik, en dan wel 'Nederlandse' input. Dat wil zeggen: adressen, postcodes, telefoonnummers, plaatsnamen en dergelijke. Als je googled naar 'nederlandse' regex's, vind je niets. Vandaar dat ik dit lijstje even maak. Ze zijn zowel voor JavaScript als PHP geschikt.
/^([1-9][e][\s])*([a-zA-Z]+(([\.][\s])|([\s]))?)+[1-9][0-9]*(([-][1-9][0-9]*)|([\s]?[a-zA-Z]+))?$/i
Dit valideert onder andere de mogelijke adressen:
Straat 12 Straat 12-14 Straat 12b Straat 12 II Dr. J. Straat 12 Dr. J. Straat 12 a Dr. J. Straat 12-14
Dit is een aanzienlijk minder complexe regex.
/^[1-9][0-9]{3}[\s]?[A-Za-z]{2}$/i
Valideert het volgende:
1000 AB 1000AB
Dit is wel een enigszins ingewikkelde regex. Deze is gebouwd aan de hand van wikipedia.
/^(([2][e][[:space:]]|['][ts][-[:space:]]))?[ëéÉËa-zA-Z]{2,}((\s|[-](\s)?)[ëéÉËa-zA-Z]{2,})*$/i
Dit valideert deze lijst plaatsnamen
/^(((0)[1-9]{2}[0-9][-]?[1-9][0-9]{5})|((\\+31|0|0031)[1-9][0-9][-]?[1-9][0-9]{6}))$/
/^(((\\+31|0|0031)6){1}[1-9]{1}[0-9]{7})$/i
Fouten gevonden, of heb je nog suggesties/toevoegen of verzoeken? Laat dan even een comment achter.
6 commentsIk gebruik al tijden de PHP Data Objects, omdat deze naar mijn mening stukken makkelijker werken dan de mysql(i) plugin. Behalve dat is het object georiënteerd, waar mijn voorkeur ligt.
Nu is het aanmaken van een PDO object iets wat je zelden doet, en wat je dus zo nu en dan zult vergeten hoe dat moet. Vandaar dat ik even een geheugensteuntje hier plaats.
//MySQL
$dbh = new PDO("mysql:host=$hostname;dbname=mysql", $username, $password);
//PostGres
$dbh = new PDO("pgsql:dbname=pdo;host=localhost", $username, $password);
1 comment
Zo nu en dan willen er van grote websites nog wel eens duizenden wachtwoorden uitlekken, omdat de website niet goed beveiligd is. Nu gaat dit artikel niet in op het beveiligen van je website, maar hoe je het kan voorkomen dat de wachtwoorden die uitgelekt zijn misbruikt kunnen worden.
Stel je voor dat je wachtwoorden uitlekken, op die manier kan je makkelijk achterhalen welk wachtwoord je moet invullen om in te kunnen loggen. Wachtwoorden worden gehashed door middel van sha1 of md5. Door deze manier van hashen kunnen meerdere wachtwoorden dezelfde hash hebben. Het wachtwoord 'a' kan precies hetzelfde gehashed worden als het wachtwoord 'b'. Dus wanneer een hacker het precieze wachtwoord niet weet, kan deze wel inloggen.
Hoe kun je dit voorkomen? Heel simpel, door het toevoegen van een salt. Een salt is een statische willekeurige string, die je zelf verzonnen hebt. Wanneer iemand inlogt met het wachtwoord 'a' wordt deze salt er op toegepast. Stel onze salt is 'mijnsalt'. Dan wordt het wachtwoord in principe 'amijnsalt'. Vervolgens hash je deze met sha1, dan heeft het wachtwoord 'a' in combinatie met 'mijnsalt' een andere hash dan het wachtwoord 'b' in combinatie met 'mijnsalt'. En dus kunnen hackers nooit op je website inloggen.
Je past als volgt een salt toe in je website:
define("SALT", "mijnsalt");
$wachtwoord = "a";
$wachtwoord = sha1($wachtwoord . SALT);
Zelfs wanneer je website is gehacked, kunnen hackers (mits ze je salt niet kennen) niet inloggen op de accounts van je gebruikers.
5 comments