input filteren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Front-end Developer

Onze klant is sinds 2 jaar actief als adviseur en bemiddelaar in de verzekeringsmarkt. Sindsdien proberen zij deze slapende markt flink wakker te schudden. Dit willen zij doen door het bouwen van slimme vergelijkers op hun eigen website en die van partners. Het bedrijf wil continu voorop lopen, zodat consumenten eenvoudig de verzekeringen kunnen vinden die het beste bij ze past. Functieomschrijving Als Front-end Developer werk je aan vergelijkingsmodules die consumenten dagelijks gebruiken bij het vergelijken en afsluiten van verzekeringen. Je vindt het leuk om samen te werken met de product owner, bestaande modules te verbeteren en nieuwe vergelijkers "from

Bekijk vacature »

Oracle Apex Developer

Dit ga je doen Jouw taken bestaan uit: Het bouwen maatwerk Oracle applicaties voor Europese business units; Het implementeren van de nieuwste technieken om te blijven innoveren; Actief meedenken en aandragen van verbetervoorstellen. Hier ga je werken Deze organisatie in de regio Veenendaal is een van wereld grootste retailers met ruim 16.000 winkels in 27 markten en jaarlijks ruim 5,3 miljard klanten die winkelen bij een van hun welbekende retailmerken. Binnen de organisatie is er een IT Group actief die dient als IT Service Provider voor de hele organisatie en waar dagelijks IT'ers werken aan state-of-the-art IT oplossingen. Dit doen

Bekijk vacature »

Front end developer

Functie Binnen de functie van Front-end developer werk je mee aan uitdagende klantprojecten. In teamverband werk je aan de voorkant van onze state-of-the-art portaal oplossingen en apps. Dit alles gebeurt in een multidisciplinaire omgeving waarbij je de ruimte hebt om te sparren, je ideeën scherp te stellen, en waar je met de benodigde kennis en ervaring om je heen altijd terecht kunt bij je collega’s voor vragen en ondersteuning. Meestal werk je vanuit ons kantoor maar we bieden ook alle faciliteiten om thuis te kunnen werken. Voor sommige projecten ga je mee naar de klant, wellicht zelfs in het buitenland!

Bekijk vacature »

Full stack Python developer

Functie Samen met andere collega’s (een product owner, een software manager en een ervaren ontwikkelaar) ga jij onze producten verder ontwikkelen. Jouw verantwoordelijkheden zullen bestaan uit: – Verder wil gaan met de ontwikkeling van onze bestaande producten; nieuwe features! – Meedenkt over de roadmap van onze producten – Als sparringpartner kan optreden op het gebied van development – Zelf ook nieuwe ideeën op tafel durft te leggen en deze van scratch af aan wilt bouwen Hieronder ook een paar voorbeelden van projecten waar we momenteel mee bezig zijn of binnenkort aan willen beginnen: – Real-time interactie creëren in onze web

Bekijk vacature »

.NET software developer

Functie omschrijving Voor een gewilde werkgever in omgeving Roosendaal zijn wij op zoek naar een back-end software developer met een aantal jaar werkervaring. Je krijgt een plekje in het workflow team en je zal betrokken worden bij het bouwen van nieuwe software, en het optimaliseren van bestaande code. Je werkt bij dit bedrijf in een Scrum team waarin je soms klantcontact hebt. Jouw werkzaamheden zullen er als volgt uit zien: Je krijgt een plekje op de in-house IT afdeling. Deze afdeling bestaat uit zo'n 12 collega's, verdeeld over verschillende specialisaties (BI, Beheer, Business software & workflow). De vacature staat open

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Junior Front end developer

Functie Jij als developer gaat ons helpen onze producten verder te ontwikkelen en in te zetten in de markt. Op dit moment bestaat ons SaaS product uit 3 componenten die zowel los als in een pakket gekocht kunnen worden. Het gaat hier om een online kaartapplicatie, een workflow tool en een monitoring tool. Momenteel zijn wij 3 jaar geleden gestart met de ontwikkeling. De tech-stack waarmee we werken is voornamelijk Javascript, Vue.js en Python. Daarnaast gebruiken wij FaundaDB als database en werken we veel met GIS applicaties. De uitdaging die we momenteel hebben is dat we momenteel een intern team

Bekijk vacature »

Java developer (remote)

Functie Wat ga je doen als Java Developer? Jij als Java ontwikkelaar komt te werken in 1 van onze SCRUM teams. Momenteel werken er zo’n 30 ontwikkelaars binnen onze organisatie waarbij jij de brug slaat tussen het bouwen van verschillende functionaliteiten binnen onze applicaties en deze vervolgens te integreren in onze centrale hub. Je start je dag om 9 uur met een stand up en dan pak je jouw taken op voor de dag. Hieronder een aantal taken die jij zal uitvoeren: – Het bedenken en uitbouwen van features binnen de verschillende applicaties – Onderhouden van CI/CD pipelines – Bezighouden

Bekijk vacature »

PHP Back-end Developer

Vacature details Vakgebied: Software/IT Opleiding: Starter Werklocatie: Nijmegen Vacature ID: 13633 Introductie OUr client develop websites, webshops, and digital environments that are used by many visitors daily. They are seeking an experienced PHP-Developer Back-end to join the team. If you're looking for a position where you can tackle challenging, innovative, and multidisciplinary ICT projects and make a difference, this vacancy might be for you! Functieomschrijving As a PHP developer, you'll develop websites and digital environments used by many visitors daily. You'll work as a back-end developer and want to continuously develop in this field. You can work independently and efficiently,

Bekijk vacature »

.NET developer

Functie The position we have for you As a .NET developer you will work for one of our customers active in the High Tech Industry. Our customers are mainly located in the Eindhoven area. We are very selective when it comes to the projects we accept and therefore only focus on innovative and complex projects. Because our customers are mainly specialized in machine construction, you often work close to the machines. Our team currently consists of Embedded engineers, IOT developers and Cloud engineers. We mainly work on Microsoft projects where WPF, UWP, .NET Core and Microsoft Azure are used. Eisen

Bekijk vacature »

Full stack developer Node.js, React Remote

Functie Als fullstack JavaScript developer vind jij het uitdagend om op basis van concrete klantvragen nieuwe functionaliteiten te ontwikkelen. Bij voorkeur worden deze functionaliteiten op een bepaalde manier geprogrammeerd, zodat ze door meerdere klanten te gebruiken zijn. Je hebt dus vaak te maken met abstracte vraagstukken. Om dit te kunnen realiseren sta je nauw in contact met de product owner en/of klant. Je bent niet alleen onderdeel van het development team, maar hebt ook vaak contact met de product-owner en/of klanten om daardoor inzichten te verzamelen die leiden tot productverbeteringen. • Inzichten verzamelen bij de klant en/of product owner •

Bekijk vacature »

.NET developer

Functie As a .NET developer you start in a driven and diverse development team. Your team consists of 16 IT professionals, including 7 software engineers. Because your new employer is internationally active, there are also international IT professionals working in the IT department. As a result, the official language is English. As a team you are responsible for a new Cloud Native product. This product runs entirely in Azure with a Progress Database and various Azure Functions. In addition, this product has a JS front-end, a REST API system and a layer in C # .NET. The idea is therefore

Bekijk vacature »

Junior .NET developer

Functie Jij hebt natuurlijk net jouw Bachelor op zak en gaat nu voor het eerst aan de slag bij een werkgever als junior .NET ontwikkelaar. Waarschijnlijk lijkt het jou spannend om ineens aan de slag te gaan bij klanten in de consultancy. Maak je niet druk, jij komt hier terecht in een warm bad en wordt totaal niet in het diepe gegooid. Zodra jij hier begint wordt jij gekoppeld aan een persoonlijke manager met een persoonlijk ontwikkelplan. Jij krijgt een scala aan trainingen, denk aan trainingen ten behoeve van het opdoen van zelf kennis en gedragscompetenties, maar ook trainingen voor

Bekijk vacature »

.NET Developer gezocht!

Functie omschrijving Wij zijn op zoek naar een .NET Developer! Wil jij werken voor een internationaal bedrijf waar je legio mogelijkheden krijgt als Software Ontwikkelaar? Grijp nu je kans en kijk snel of jouw vaardigheden aansluiten bij onderstaand profiel! Je kunt een uitdagende rol gaan vervullen als .NET Developer binnen een internationaal bedrijf dat gevestigd is in omgeving Bergen. Dit bedrijf is zeer vooruitstrevend en verricht betekenisvol werk. Binnen dit bedrijf wordt gewerkt aan de productie en ontwikkeling van medische middelen. Als .NET Developer ga jij je bezig houden met het volgende: Je wordt betrokken bij alle fasen van software

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET ontwikkelaar start jij in ons development team met twee andere .NET developers. Als team werken jullie in scrum en is er iedere ochtend om 11.00 een standup. Jij krijgt als junior .NET ontwikkelaar een inwerk traject dat echt specifiek wordt ingericht op basis van wat jij nodig hebt. Een van de grootste pluspunten bij ons is dat wij binnen ons bedrijf veel (technische) vrijheid geven en juist eigen initiatieven erg stimuleren. Jouw werkzaamheden gaan er bij ons als volgt uit zien: – Het ontwikkelen van nieuwe software samen met interne en eventueel externe ontwikkelaars; – Het

Bekijk vacature »

Pagina: 1 2 volgende »

Ruben D

Ruben D

28/12/2017 17:11:07
Quote Anchor link
Hallo allemaal,

Dit is eerder een vraag om advies over veiligheid.
Ik merkte deze functies onlangs op:
$sanitized_a = filter_var($a, FILTER_SANITIZE_EMAIL);

Dus je kan input filteren tegen sql injectie bvb.

Nu vraag ik mij af of dit even veilig is om te gebruiken als de zelfgemaakte functies gelijk in wordpress.
 
PHP hulp

PHP hulp

21/05/2024 10:49:00
 
Jan Koehoorn

Jan Koehoorn

28/12/2017 17:55:05
Quote Anchor link
Ruben D op 28/12/2017 17:11:07:
Dus je kan input filteren tegen sql injectie bvb.

Daar is deze functie niet specifiek voor bedoeld. Deze functie probeert van een string nog een geldig emailadres te maken. Om SQL injection tegen te gaan kun je beter gebruik maken van bv. PDO en Prepared Statements
Gewijzigd op 28/12/2017 17:55:37 door Jan Koehoorn
 
Ruben D

Ruben D

28/12/2017 18:27:29
Quote Anchor link
Ja dat klopt, met "FILTER_SANITIZE_STRING" dan.
Ik zou het ook zo doen maar wou weten of dit daar ook tegen helpt.
 
Thomas van den Heuvel

Thomas van den Heuvel

28/12/2017 19:21:54
Quote Anchor link
Een verkeerd gebruik van prepared statements is nog steeds even fataal (denk bijvoorbeeld aan het concateneren van lappen SQL waarmee je in wezen het prepared-statement-stramien bypassed). Het grootste probleem is dat iemand zich op een zeker moment veilig waant enkel door het gebruiken van een bepaalde techniek (lees: goocheltruc), zonder dat men precies weet wat de gevaren nu eigenlijk zijn. Als je niet weet wat een hondendrol is weet je ook niet wanneer je er in staat. En dan heb je letterlijk stront.

SQL injectie voorkom je ook niet (altijd) simpelweg door het filteren van input, tenzij deze heel strict is. Wat veel beter werkt tegen SQL injectie is output escaping. En vaak gaan input filteren en output escapen hand in hand.

Desalniettemin zijn dit twee compleet verschillende dingen.

EDIT: en sanitizen is wéér iets anders, daarbij wordt vaak geprobeerd recht te buigen wat eigenlijk al krom is. Vergelijk dit met een typecast waarbij getracht wordt iets om te zetten naar een bepaald type waarbij alles wat onleesbaar is uit oogpunt van dat type wordt weggekapt. Maar daarmee was dus eigenlijk de invoer al ongeldig... Invoer is meestal gewoon GOED of FOUT, en niet MISSCHIEN-GOED-DUS-LAAT-IK-PROBEREN-ER-IETS-VAN-TE-BAKKEN.

> filter input, escape output
> mysql_real_escape_string() is geen wondermiddel
Gewijzigd op 28/12/2017 19:25:56 door Thomas van den Heuvel
 
Ruben D

Ruben D

28/12/2017 19:42:18
Quote Anchor link
verkeerd als hier: (geen input filter)
$stmt = $pdo->prepare("INSERT INTO myTable (name, age) VALUES (?, ?)");
$stmt->execute([$_POST['name'], 29]);

of bypass gelijk dit denk ik dat je bedoeld?
$stmt = $pdo->prepare("INSERT INTO myTable (name, age) VALUES ($name, ?)");

Ik dacht wel ergens gelezen te hebben dat mysqli escape eruit gaat bij recente versies.
Ik zal is kijke of ik het nog kan vinden.
 
Jan Koehoorn

Jan Koehoorn

28/12/2017 20:51:17
Quote Anchor link
Sowieso gebruik je nooit rechtstreeks $_POST variabelen in parameter binding.

Voordat je de waarden gebruikt om aan je insert query te koppelen, heb je alles gevalideerd (met bv. een EmailValidator class) en in orde bevonden.

Een andere optie, is werken met Value Objects, waarbij de validatie in de constructor plaatsvindt. Een Value Object voor een email adres kan er zo uitzien:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
class Email
{
    private $email;

    public function __construct($email)
    {

        if ( ! filter_var($email, FILTER_VALIDATE_EMAIL)) {
            throw new InvalidArgumentException(sprintf('[%s] is not a valid email address', $email));
        }


        $this->email = $email;
    }


    public function __toString()
    {

        return $this->email;
    }
}

?>


Het voordeel van werken met Value Objects is, dat je in je hele codebase nu nog maar één plek voor het valideren van email adressen hebt, namelijk in de constructor van dat object.
Gewijzigd op 28/12/2017 21:23:05 door Jan Koehoorn
 
Thomas van den Heuvel

Thomas van den Heuvel

29/12/2017 01:20:47
Quote Anchor link
Jan Koehoorn op 28/12/2017 20:51:17:
Value Objects

Dit klinkt allemaal best zinnig enzo, maar hoe ga je dit inpassen in de validatie van formuliergegevens? Wanneer een exception gethrowd wordt, wordt de normale flow van het programma onderbroken.

Ik zou ook niet zeggen dat een exception hier op zijn plaats is, het ligt immers in de lijn der verwachting dat iemand (al dan niet per ongeluk) een verkeerd e-mailadres invult. Ook wil je dan niet dat alles gestaakt wordt maar idealiter krijg je dan gebruiksvriendelijke terugkoppeling over *alle* velden waar mogelijk iets mis mee is (en niet enkel de eerste waar ie op stuk loopt, denk aan JavaScript popups uit de jaren 90 :p).

Ik had ook eerder een berichtje in deze thread in een ander draadje geklopt hoe je exceptions zou moeten zien (als ik er (ver) naast zit hoor ik dat ook graag, ben benieuwd naar andere inzichten over exceptions).

Mogelijk zou een exception bijvoorbeeld (wel?) op zijn plaats zijn bij formulierafhandeling wanneer een CSRF-token niet meer klopt (of niet meer bestaat) bij validatie omdat dat echt iets "onverwachts/ongeplands" is. Maar zelfs dan heb je liever dat (wanneer je sessie onderwater weer hersteld is, want het is meestal zoiets als een verlopen sessie ofzo) je weer teruggestuurd wordt naar het formulier met de zojuist ingevulde informatie -ook al is deze goed- maar met de mededeling dat het token is verlopen en je nogmaals dient te submitten. Dat lijkt mij vriendelijker dan een aparte "oeps, er ging iets mis" pagina nadat je het afgelopen half uur een verhaal hebt zitten typen, en dat je dat dan kwijt bent.

Oftewel: ik zie niet zogauw hoe het (veelvuldig) gebruiken van exceptions een goed idee is bij formulierafhandeling/-validatie. Het is niet "fataal" als iemand iets verkeerds ingevuld heeft, noch is het dan onduidelijk wat er vervolgens zou moeten gebeuren.
Gewijzigd op 29/12/2017 01:26:50 door Thomas van den Heuvel
 
Ozzie PHP

Ozzie PHP

29/12/2017 01:50:45
Quote Anchor link
@Thomas:

Ik vind dat ook wat lastig. Op het forum heb ik mensen wel eens horen (niet letterlijk) zeggen dat je beter overal exceptions kunt gebruiken (ipv if-statements). Ik vraag me dus ook wel af wanneer wel en wanneer niet. Mij lijkt het ook niet logisch om een fout e-mailadres af te vangen met een exception, en toch schijnt het te gebeuren.

Want eigenlijk is het natuurlijk best raar ... Je vangt een situatie die zich kan voordoen af met een exception ... maar als je weet dat de situatie zich kan voordoen ... in hoeverre is het dan nog een exception? En ... wanneer is iets dan überhaupt nog een exception? Iemand die een typfout maakt (veelvoorkomend gedrag) zie ik niet als een exception, iemand die een fout wachtwoord invoert ook niet. Dat is allemaal VOORSPELBAAR gedrag.

Maar wat zou dan wel een exception kunnen zijn ... Misschien een keuzeformulier dat als waarde A, B of C verwacht, maar X ontvangt? Dan is er sprake van iets onverwachts wat riekt naar een hackpoging, maar verder zou ik het zo gauw ook even niet weten.
 
Thomas van den Heuvel

Thomas van den Heuvel

29/12/2017 14:37:52
Quote Anchor link
Precies, maar dan zou je kunnen zeggen: ik heb een set A, B, C en hier moet een geldige keuze in gemaakt worden. Als je dan X krijgt is dat geen geldige keuze. Het is dan nog steeds duidelijk wat er zou moeten gebeuren (kies een geldige waarde).

Was dat niet ook op de DOS-prompt: de keuze-loop vliegt er toch ook niet uit als je iets anders dan [a]bort, [r]etry, [f]ail kiest? :)

Zoals ik het zie is een exception een soort van noodrem, waarbij de code zegt "ik kom er ff niet uit". Een hoger gelegen laag / ander stuk code beslist dan meestal wat er moet gebeuren. Dit is denk ik ook een kenmerk van exceptions: de plek waar aan de noodrem wordt getrokken is zelden tot nooit de plek waar dit verder wordt afgehandeld. Immers, dit zou namelijk inhouden dat de code al een soort van idee heeft van wat er mis is gegaan, en hoe hier mee omgegaan moet worden. Wat weer een indicatie is dat je hiervoor geen exception hoeft te/zou moeten gebruiken :).
 
Jan Koehoorn

Jan Koehoorn

29/12/2017 16:46:59
Quote Anchor link
Thomas van den Heuvel op 29/12/2017 01:20:47:
Jan Koehoorn op 28/12/2017 20:51:17:
Value Objects

Dit klinkt allemaal best zinnig enzo, maar hoe ga je dit inpassen in de validatie van formuliergegevens?


Niet. Daar vul je gewoon een array met errors. Je zou trouwens wel kunnen denken aan een AJAX call op de onblur van een formfield, met daarin dan weer wél de check met het value object. Dan heb je userfriendly validation aan the client side en uiteraard check je altijd serverside. Ik zou dat alleen doen bij formulieren met veel velden. Dan is het wel prettig om meteen na het verlaten van het veld erachter te komen dat het invalid is, en niet pas bij het submitten van het formulier.
 
Ozzie PHP

Ozzie PHP

29/12/2017 17:23:44
Quote Anchor link
Thomas van den Heuvel op 29/12/2017 14:37:52:
Precies, maar dan zou je kunnen zeggen: ik heb een set A, B, C en hier moet een geldige keuze in gemaakt worden. Als je dan X krijgt is dat geen geldige keuze. Het is dan nog steeds duidelijk wat er zou moeten gebeuren (kies een geldige waarde).

Ik snap wat je bedoelt ... maar stel we hebben 2 radiobuttons waarbij je kunt kiezen of je van een product de variant van € 50 wilt hebben, of de luxere variant van € 65.

Je kunt dus kiezen uit waarde € 50 of € 65. Stel dat je nu ineens als waarde € 1 krijgt (een keuze-optie die helemaal niet beschikbaar is), zou je dan niet een exception kunnen gooien? In dat geval heeft namelijk iemand handmatig de POST-data gewijzigd en is er blijkbaar sprake van een soort hackpoging. Dit gaat weer net iets verder dan simpelweg 'een ongeldige keuze'.

In zo'n geval zou ik misschien op een hoger niveau het IP-adres even willen blokkeren vanwege verdacht gedrag.
 
Jan Koehoorn

Jan Koehoorn

29/12/2017 17:40:52
Quote Anchor link
Ozzie PHP op 29/12/2017 17:23:44:
In zo'n geval zou ik misschien op een hoger niveau het IP-adres even willen blokkeren vanwege verdacht gedrag.


En dat is een goed voorbeeld van Value Objects. Je throwt een Exception, en in de catch log je iets, of je onderneemt een andere actie. Bij Value Objects kun je denken aan geldbedragen, datumbereiken, emailadressen, etc.
 
Ozzie PHP

Ozzie PHP

29/12/2017 20:21:08
Quote Anchor link
@Jan,

Maar dan moet dat value object wel weten welke waardes wel en niet zijn toegestaan. De toegestane waardes geef je dan als parameter mee in een array of zo?
 
Jan Koehoorn

Jan Koehoorn

29/12/2017 20:30:29
Quote Anchor link
@ Ozzie,

nee, de enige parameter(s) die je aan de constructor meegeeft, zijn de value(s) die je wilt gebruiken. De validatie vindt geheel in de constructor plaats, en je kunt natuurlijk ook properties gebruiken om bijv. een onder- en bovengrens van een waarde aan te geven.

Mijn voorbeeld hierboven in dit topic is niet helemaal volledig. Een Value Object is bijvoorbeeld altijd final, want je wilt dat de waarde niet kan veranderen als hij eenmaal gevalideerd is, door hem bijvoorbeeld te extenden, wat dus verboden is. Een VO heeft ook geen setters. Dat is eigenlijk de essentie van een Value Object; alleen het feit dat hij aangemaakt is en dus door de constructor-validatie komt, garandeert dat hij altijd valid is.

Er is nog veel meer te vertellen over Value Objects, maar dat valt een beetje buiten dit topic, maar er zijn goeie blogs over te vinden.

Edit:


Nog één aanvulling: wanneer je in een andere class in de constructor een type-hint naar een Value Object aangeeft, garandeer je dus dat die property altijd valid is. Bijvoorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
class Subscriber {
    private $name;
    private $email;

    public function __construct($name, Email $email) {
        $this->name = $name;
        $this->email = $email;
    }
}

?>


Als nu $email niet van het type Email is, of niet goed aangemaakt is, krijg je automatisch een Exception. Het scheelt je dus heel veel validatie.

Toevoeging op 29/12/2017 20:41:04:

Jan Koehoorn op 28/12/2017 20:51:17:
Sowieso gebruik je nooit rechtstreeks $_POST variabelen in parameter binding.

Voordat je de waarden gebruikt om aan je insert query te koppelen, heb je alles gevalideerd (met bv. een EmailValidator class) en in orde bevonden.

Een andere optie, is werken met Value Objects, waarbij de validatie in de constructor plaatsvindt. Een Value Object voor een email adres kan er zo uitzien:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
final class Email
{
    private $email;

    public function __construct($email)
    {

        if ( ! filter_var($email, FILTER_VALIDATE_EMAIL)) {
            throw new InvalidArgumentException(sprintf('[%s] is not a valid email address', $email));
        }


        $this->email = $email;
    }


    public function __toString()
    {

        return $this->email;
    }
}

?>


Het voordeel van werken met Value Objects is, dat je in je hele codebase nu nog maar één plek voor het valideren van email adressen hebt, namelijk in de constructor van dat object.
Gewijzigd op 29/12/2017 20:37:53 door Jan Koehoorn
 
Ozzie PHP

Ozzie PHP

29/12/2017 21:31:45
Quote Anchor link
@Jan,

>> nee, de enige parameter(s) die je aan de constructor meegeeft, zijn de value(s) die je wilt gebruiken.

Oké ... maar hoe zou je dat dan doen bij een keuze met radiobuttons ... in het voorbeeldje wat ik gaf, kun je dmv een radiobutton waarde ABC123 of XYZ789 kiezen. Hoe voorkom je dan dat een hacker de waarde KLM456 verstuurt? Anders gezegd ... hoe weet dat value object dat alleen ABC123 en XYZ789 zijn toegestaan?
 
Jan Koehoorn

Jan Koehoorn

29/12/2017 21:42:18
Quote Anchor link
Voorbeeld met alleen de constructor:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
class MyVerySpecificValueSet
{
    private $allowed = [
        'ABC123' => true,
        'XYZ789' => true,
    ];


    private $val;

    public function __construct($val)
    {

        if (empty($this->allowed[$val])) {
            throw new InvalidArgumentException(
                sprintf('[%s] is not a valid value for [%s]', $val, __CLASS__)
            );
        }


        $this->val = $val;
    }
}

?>
 
Ozzie PHP

Ozzie PHP

29/12/2017 21:53:28
Quote Anchor link
Maar nu maak je de waardes hardcoded ... dat lijkt me niet handig, want dan kun je ze niet vanuit de formulierafhandeling meegeven. Dan zou je voor ieder formulier een aparte class moeten maken.
 
Jan Koehoorn

Jan Koehoorn

29/12/2017 21:58:17
Quote Anchor link
Het aanmaken van een class is in PHP absoluut geen dure operatie. En bovendien: hoeveel formulieren heb je op je website? Je kunt zonder enige probleem tientallen of honderden VO's aanmaken. En als je dat onoverzichtelijk vindt, dan maak je gewoon een ouderwetse Validator Class.
 
Rob Doemaarwat

Rob Doemaarwat

29/12/2017 22:23:18
Quote Anchor link
Ik denk dat @Ozzie doelt op bijvoorbeeld een lijst die uit je database komt. En zelf denk ik dan nog door naar een lijst met waarden die weer afhankelijk is van een andere keuze in hetzelfde formulier. In een "kassa" scherm moet je bijvoorbeeld eerst een betaalmethode kiezen (PayPal, CreditCard, iDeal, enz). Alleen in het geval van iDeal moet je vervolgens ook nog een bank kiezen. Die betaalmethode moet je valideren (stel even dat die lijst uit een database komt), en dan moet je in één specifiek geval ook nog een bank kiezen (met een lijst die meestal door een betaalprovider wordt geleverd). Dat lijkt me allemaal wat lastig in zo'n "vast" Value Object te verwerken.

(ja, ik weet, we dwalen af ...).
 
Ozzie PHP

Ozzie PHP

29/12/2017 22:26:10
Quote Anchor link
Het gaat er niet om of het een dure operatie is ... stel je hebt een webshop en je verkoopt duizenden producten met een simpele en een dure versie die beiden anders geprijsd zijn. Om aan te geven welke versie je wil, moet je als klant de juiste prijs selecteren. Er zijn dus maar 2 prijzen mogelijk en iedere andere bedrag is sowieso verkeerd. Je wil dan niet bij ieder product handmatig gaan aangeven welke prijzen zijn toegestaan.

(uiteraard zit hier dan ook een programmeerfout als je het op deze manier zou programmeren, maar het is puur even als voorbeeldje bedoeld)

PS

Alvorens ik dit topic nu kaap ... Ruben ... heb jij al een antwoord op je vraag?
 
Ruben D

Ruben D

29/12/2017 22:39:56
Quote Anchor link
Ja filter input met PDO in database en output filteren met htmlentities denk ik.
Ik wou er even op in gaan wat het nut van bind_param is, is dit ook en filter op je variabel?
dan zou ik er dus 2 achter elkaar hebben, niet dat het erg is.

hierna mag je het kapen.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.