Concatten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Software Ontwikkelaar C#.NET

Software Ontwikkelaar C#.NET Zit het ontwikkelen van innovatieve applicaties in C#.NET, JAVA of PHP in jouw bloed en wil jij je kennis toepassen binnen uitdagende projecten in kantoorautomatisering of industrie. Dan kan MA-IT mogelijk iets voor je betekenen, aangezien wij uitbreiding zoeken in ons IT team van Software Engineer voor onze vestigingen in Deventer, Son en Gorinchem. Functie-eise Software Ontwikkelaar C#.NET Dit is wat je gaat doen Als C#, JAVA of PHP Developer ontwikkel je binnen een SCRUM omgeving, het hart van de producten die (inter)nationaal gebruikt worden. Het betreft complexe software waarbij je op een hoog abstractieniveau software ontwikkelt.

Bekijk vacature »

Applicatiebeheerder

Voor de afdeling Digitale Innovatie en ontwikkeling zijn wij op zoek naar Applicatiebeheerder (ft) Wat ga je doen bij ons De afdeling Digitale Innovatie en ontwikkeling is verantwoordelijk voor de applicaties die draaien voor alle 1500 gebruikers van onze 9 business units binnen Nederland. Als ERP systeem gebruiken wij SAP. Daarvoor hebben wij de nodige expertise in dienst. Naast SAP hebben wij echter steeds meer gespecialiseerde applicaties draaien zoals Slim4, Ortec, een CRM pakket en diverse websites. Samen met jouw collega zorg je ervoor dat al deze applicaties optimaal draaien. Voor de meeste applicaties zal het beheer enkel op het

Bekijk vacature »

Backend Java Developer (Java 8) voor organisatie m

Functieomschrijving Ben jij opzoek naar echte uitdaging? Wil jij meebouwen aan de toekomst? Als deze applicatie niet werkt dan is dit groot nieuws op televisie! Een nieuwe backend applicatie bouwen met de laatste technieken (Java8, Weblogic 12, Oracle 12 databases) Uitvoeren van diverse analyses; Bestaande applicatie uit faseren; Nauwe samenwerking met andere disciplines; Sparingspartners voor andere ontwikkelaars; Uiteraard kom je met nieuwe en innovatieve oplossingen; Uitvoeren van diverse testen; Functie-eisen Minimaal HBO werk en denkniveau; In ieder geval 3 jaar werkervaring als ontwikkelaar binnen complexe grote omgevingen; Ervaring met logistieke processen is een sterke pre; Je bent analytisch en beschikt

Bekijk vacature »

Java Backend Developer

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 werk je mee aan de architectuur laag. Daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het software ontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je ondersteunt de software architect en projectleider bij hun werkzaamheden. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak

Bekijk vacature »

Gezocht: Senior Frontend Developer, interne functi

Functieomschrijving Zoals hierboven ook al genoemd kom je terecht in een team van 12 Developers. Er is heel veel kennis in huis en deze kennis wordt actief gedeeld, zodat iedereen ervan kan profiteren. Dit blijkt ook wel uit het feit dat er 36 kennissessies per jaar worden georganiseerd (waarbij je heus niet altijd aanwezig hoeft te zijn) met als doel iedereen optimaal van elkaars kennis te laten profiteren. Er heerst een echte 'helpcultuur'. Jouw collega's zijn stuk voor stuk hardwerkende en gemotiveerde Software Developers, die heel trots zijn op de producten die zij opleveren. Jij zal als Frontend Javascript Developer

Bekijk vacature »

Junior Support Engineer

Geef jouw carrière direct een goede start als Junior Support Engineer (parttime/fulltime/bijbaan voor studenten) Volg jij een studie of heb jij net jouw opleiding afgerond en wil jij veel ervaring opdoen als Junior Support Engineer in een zeer korte tijd? Wil jij de ruimte hebben om door te groeien bij een gezellig en innovatief bedrijf waar inbreng van ideeën wordt gewaardeerd? Grijp dan nu je kans! Voor de afdeling Support is inepro op zoek naar een proactieve en energieke Junior Support Engineer die een kick krijgt van het oplossen van problemen. Wat ga je doen? Als Junior Support Engineer kun

Bekijk vacature »

Front-end developer Zaandam area

Medior/Senior Font-end developer omgeving Zaandam, Noord-Holland Ben jij opzoek naar een baan in Noord-Holland waarin je met een multidisciplinair team verschillende websites en webshops kan bouwen? Veel afwisseling biedt en ruimte voor eigen ontwikkeling? Dan is dit de baan voor jou! Wij zijn opzoek naar een front-end developer met ervaring die graag: - Wilt leren en wil groeien en hierin de ruimte krijgt voor persoonlijke projecten - Met verschillende klanten wilt werken maar dan wel in-house - In een hecht, sociaal en energiek team wil werken - Werkt in een informele en gezellige setting Als frontend developer ga je samen

Bekijk vacature »

PHP developer

Geniale PHP developer! Als PHP developer bij touch creative werk je aan de vernieuwende backend development projecten, optimalisatie en onderhoud van nieuwe en bestaande sites & webapplicaties. Performance staat bij jou hoog in het vaandel en je weet dit accuraat te koppelen aan de frontend. Dit doe je deels in teamverband en deels zelfstandig. Je bent een gedreven en nieuwsgierige autodidact. En meer dan een developer die zich bezig houdt met nulletjes en eentjes. We zoeken iemand die zich actief opstelt vanaf de conceptfase en betrokken is tot en met de nazorg. Je werkt in een klein, maar multidisciplinair hecht

Bekijk vacature »

Medior ASP.Net Developer Personeel informatiesyste

Medior ASP.Net Developer Personeel informatiesysteem Web Wat ga je doen als Medior ASP.NET Developer? Als Medior ASP.Net Developer uit de omgeving Den Haag, ga jij werken aan een nieuwe personeelsadministratie webapplicatie. Het is een zeer complete HRM-oplossing waarbij flexibiliteit hoog in het vaandel staat. Zo maakt de standaard meegeleverde SDK het mogelijk om ter plekke extra functionaliteit te implementeren zonder tussen komst van programmeurs, verder is het volledig in de Cloud en benaderbaar via een browser of een iOS of Android app. Het huidige pakket is toe aan vernieuwing en zal volledig van scratch herschreven worden in C#, ASP.Net Core

Bekijk vacature »

Java Backend Developer

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 werk je mee aan de architectuur laag. Daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het software ontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je ondersteunt de software architect en projectleider bij hun werkzaamheden. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak

Bekijk vacature »

Medior Full Stack C# of Java Developer

Profit4Cloud, (www.profit4cloud.nl) nu met 45 collega's en vestigingen in Amsterdam, Apeldoorn en Eindhoven, zoekt Medior Full Stack C# of Java Developers voor projecten voor TOP-spelers in Banking, Finance, Industrie of Overheid in West-, Midden- en Oost-Nederland. Ben jij die Full Stack Developer die enthousiast wordt van state-of-the-art ontwikkeling voor toonaangevende klanten? Dan is Profit4Cloud jouw 'place to be'! Wat bieden wij jou als Medior Full Stack C# of Java developer? Profit4Cloud heeft de beste arbeidsvoorwaarden voor de beste professionals! Zo doen we altijd een op maat gemaakte aanbieding doen en bieden wij in ieder geval: - Onbeperkt opleidingsbudget - Bezoeken

Bekijk vacature »

Java / Oracle Software Ontwikkelaar

Kun jij ideeën omzetten in intuïtieve software? Adem je code en omarm je Scrum? Werk dan mee aan het succesvolle epd USER van Impulse Info Systems in Twente voor de Geestelijke Gezondheidszorg! Functie omschrijving Op de afdeling Ontwikkeling & Kwaliteit bouwen we iedere dag aan ons informatiesysteem voor de geestelijke gezondheidszorg: USER. Als ontwikkelaar ben je betrokken bij het ontwerp en maak je de oplossingen waarmee onze klanten hun tijd kunnen besteden aan het bieden van goede zorg aan cliënten. Je werkt in een scrumteam aan onze doelen. Enkele taken: Analyseer hoe we gebruikerswensen het beste kunnen implementeren Ontwikkel intuïtieve

Bekijk vacature »

Oracle Apex Ontwikkelaar

Wat je gaat doen: Als Oracle Ontwikkelaar werk je zowel zelfstandig als in teamverband aan het ontwikkelen en ontwerpen van software componenten. Je levert een bijdrage aan de ontwikkeling tot en met de implementatie. Je bent in staat om informatie te verzamelen,te analyseren en te documenteren van wensen en eisen van de eindgebruikers. Je bent in staat om functionele vereisten te vertalen naar technische specificaties, ontwikkelt web applicaties met behulp van Oracle Applicatie Express, door de veranderingen en ontwikkelingen van web formulieren en rapporten. Verbeteren van bestaande Oracle Apex Systemen. Ontwikkelen en veranderen van Oracle 11g database schema’s. Schrijven van

Bekijk vacature »

Senior NET Developer Financieel Real-Time Detectie

Senior .NET Developer Financieel Real-Time Detectie platform Wat ga je doen? Als Senior .Net Developer uit de omgeving Den Haag ga jij werken aan een Real-Time Detectie platform om Financieel-Economische Criminaliteit (FEC) tegen te gaan. Het platform herkent serieuze risico's voor financiële instellingen zoals, witwassen, terrorismefinanciering, belastingontduiking en andere vormen van FEC. Door digitalisering is de impact van financieel-economische criminaliteit sterk toegenomen. De bedreigen van FEC is groter, nu banken, verzekeraars, pensioenfondsen en trustkantoren sterk afhankelijk zijn van digitale systemen. Het platform gebruik van real-time (big) data-analyse van netwerktransacties, forensische analyse, fraude management en machine learning. Als Senior.Net developer bouw

Bekijk vacature »

Senior developer / Microservices / SOAP / REST / U

Functieomschrijving Ben jij een kenner op het gebied van Microservices? Heb jij ervaring met het bouwen van koppelingen met SOAP en REST? En wil jij graag betrokken worden bij het opzetten van een nieuwe architectuur? Lees dan snel verder! Bijdragen aan de nieuwe Microservices architectuur; Ontwikkelen van webservices op basis van SOAP en REST; Opzetten van externe services van derde partijen; Werken binnen een Agile/Scrum team; Nieuwe technische ontwikkelingen bijhouden en eventueel implementeren. Functie-eisen Minimaal een afgeronde hbo opleiding; Ervaring met het opzetten van een Microservices architectuur; Goede kennis van webservices op basis van SOAP en REST: Kennis van Java

Bekijk vacature »

Pagina: « vorige 1 2

Thomas van den Heuvel

Thomas van den Heuvel

14/02/2019 00:14:02
Quote Anchor link
Ivo P op 13/02/2019 13:32:45:
ik weet niet wat voor versie van mysqli jij gebruikt, maar met een ? werkt dat daar normaal wel.

http://php.net/manual/en/mysqli-stmt.prepare.php
http://php.net/manual/en/mysqli-stmt.bind-param.php


Mja.
http://fangorn.thijma.nl/images/phphulp/aint-nobody.png

Prepared statements in mysqli zijn "clunky as hell". Met enige discipline ben je beter af met zelf quoten + escapen.
Gewijzigd op 14/02/2019 00:24:33 door Thomas van den Heuvel
 
PHP hulp

PHP hulp

22/02/2019 20:46:43
 
Ozzie PHP

Ozzie PHP

14/02/2019 01:32:05
Quote Anchor link
@Ivo

>> In jouw query kan $id niet iets anders zijn dan een INT, neem jij aan.

Ja, omdat die waarde van een auto increment veld komt en dus niets anders dan een integer kan zijn.

>> En dan missen ook nog de ' ' om $id.

Dat hoeft bij een numerieke waarde toch ook niet?
 
Thomas van den Heuvel

Thomas van den Heuvel

14/02/2019 01:49:48
Quote Anchor link
Okay jongens, nog een keer, heel langzaam vanaf het begin.

Het probleem van het weglaten van quotes als deze "niet nodig zijn" is het volgende:

Elke keer als je een stuk code ziet waarbij dit het geval is zou er een kleine alarmbel af moeten gaan waarbij je denkt: "Hé, hier zijn geen quotes gebruikt, wat is hier aan de hand?". Vervolgens ga je na dat er inderdaad een id gevalideerd wordt, en deze wordt ook niet geaccepteerd (als het goed is) voor opname in de query (laat staan het dan uitvoeren hiervan!) als deze niet van het goede formaat is. Vervolgens concludeer je dat alles okay is.

En dit doe jij, of mogelijk iemand anders, ELKE KEER WEER als je deze code ziet. Je moet je er elke keer van vergewissen dat dit klopt. Dit is je reinste tijdsverspilling.

Het is in ieder geval veel makkelijker (Don't Make Me Think) om ALLE externe data te voorzien van quotes, en gewoon al dit soort data te escapen. Je hoeft er dan NOOIT over na te denken of dit "veilig" is of niet.

Nogmaals, ten overvloede, het gebruik van real_escape_string() zonder quotes is niet veilig (interne link) omdat real_escape_string() niets escaped als er niets te escapen valt.
Gewijzigd op 14/02/2019 01:52:47 door Thomas van den Heuvel
 
Rob Doemaarwat

Rob Doemaarwat

14/02/2019 07:11:51
Quote Anchor link
Eenmalig een wrapper class maken en klaar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
//bar wordt ook echt null, en niet ''
$db->execute('update tabelnaam set foo = :foo, bar = :bar where id = :id',['foo' => 5,'bar' => null,'id' => 5]);

//en voor recht-toe-recht-aan werk nog korter
$db->update('tablenaam',['foo' => 5,'bar' => null],['id' => 5]);

Nooit meer na hoeven te denken over quotes, nooit meer na hoeven te denken over escapen.
 
Ozzie PHP

Ozzie PHP

14/02/2019 10:49:59
Quote Anchor link
@Thomas

>> Het is in ieder geval veel makkelijker (Don't Make Me Think) om ALLE externe data te voorzien van quotes

Ik meen ergens gelezen te hebben in de documentatie van MySQL dat het niet wordt aangeraden om een getal (bijvoorbeeld een ID) te quoten. Hoe zit dat dan?
 
- Ariën -
Beheerder

- Ariën -

14/02/2019 11:13:41
Quote Anchor link
Hm... Als ik dus dit doe:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
UPDATE tpb SET getal = 1

dan is er toch geen externe data?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
UPDATE tpb SET getal = '".$_GET['something']."'

Deze is juist extern, en behoort sowieso van single-quotes te worden voorzien.
Én natuurlijk van de real_escape_string functionaliteit!!
Gewijzigd op 14/02/2019 11:14:26 door - Ariën -
 
Ivo P

Ivo P

14/02/2019 11:43:29
Quote Anchor link
als je SET getal = 1 doet, is het inderdaad overbodig.

maar zodra het wordt

$teller = 10;
...SET getal = $teller

vervallen we weer in het varhaal van Thomas: je moet weer terug kijken om te zien dat $teller inderdaad gevalideerd is.

Je 2e vraag met $_GET is heel duidelijk, maar elke andere variabele kán ook rare data bevatten.

Zo heb ik ooit een bug moeten zoeken waarom een van de medewerkers nooit een keuringsrapport kon opslaan en alle collega's wel.

Uiteindelijk bleek het probleem te zijn
UPDATE ..... SET medewerker = '$naam' .....

En helaas: zijn naam bevatte een '
Volkomen legitieme data, maar liet wel een query mislukken. En die naam kwam gewoon uit de database onder zijn user-gegevens (waarom niet volstaan kon worden met zijn user-id is weer een andere vraag.)
 
Ozzie PHP

Ozzie PHP

14/02/2019 12:39:11
Quote Anchor link
Maar ik meen dus ergens gelezen te hebben in de officiële documentatie dat je een getal niet behoort te quoten en dat dat werd afgeraden. Dus ik weet t nu ook niet.
 
Thomas van den Heuvel

Thomas van den Heuvel

14/02/2019 17:19:52
Quote Anchor link
Bron?

En dit boeit echt niets of heel weinig. Althans niet voor MySQL.

Alleen wanneer je prepared statements gebruikt in MySQLi maak je gebruik van het zogenaamde "binaire protocol" waarbij er iets met types gedaan wordt, anders zijn het toch allemaal strings.

Hetzelfde geldt voor PDO, als je daar de emulatie van prepared statements niet uitzet zet PDO ook doodleuk overal quotes omheen en negeert deze de typehints als je values bind(t). En je moet de logs induiken om dit na te gaan, omdat je op geen enkele andere manier kunt zien welke concrete SQL-code nu daadwerkelijk aan je database wordt gevoerd.

Daarbij, dit is wederom een tradeoff: mogelijk lever je een heel klein beetje performancewinst in voor een eenvoudige en eenduidige werkwijze die altijd veilig is.

Of je bouwt een wrapper zoals @Rob voorstelt. Maar zelfs dan. Stuur je dan altijd eerst SQL-templates naar de database met een prepare(), zelfs als het SELECT-queries betreft? Ik zie best mogelijkheden om een mooie wrapper te bouwen, maar dat is in zekere zin allemaal abstractie en de vraag is dan wat voor meerwaarde dat heeft? Boven een rechttoe-rechtaan-aanpak in MySQLi?

En het wordt natuurlijk weer anders als je een echte database abstractie laag maakt (waar het tweede fragment van @Rob op zinspeelt?) maar ook daar zul je je moeten afvragen of die abstractie echt nodig is en zich ooit terugverdient.

Deze hele discussie is ook gewoon "backwards" omdat we het de hele tijd hebben over "het beste gereedschap" zonder hier een concrecte "klus" in te betrekken. Het laatste bepaalt het eerste, niet andersom...
Gewijzigd op 14/02/2019 17:53:23 door Thomas van den Heuvel
 
Ozzie PHP

Ozzie PHP

14/02/2019 17:58:49
Quote Anchor link
>> Bron?

Ja, als ik dat nog had kunnen terugvinden had ik het er uiteraard bij gezet.

In ieder geval wel stof tot nadenken.

>> mogelijk lever je een heel klein beetje performancewinst in voor een eenvoudige en eenduidige werkwijze die altijd veilig is.

Ja, dat stukje performancewinst boeit me niet eerlijk gezegd. Het stond er alsof het niet goed was om een getal te quoten.

Voor de rest met je eens hoor. Wat ik me wel afvraag ... ga je bijv. een id in een query dan nog escapen? Of zorg je ervoor dat je vantevoren die id al hebt gevalideerd? Wat is het beste? Eerst controleren of het een nummer is én dan ook nog escapen lijkt me overdreven?
 
Thomas van den Heuvel

Thomas van den Heuvel

14/02/2019 18:15:35
Quote Anchor link
> Eerst controleren of het een nummer is én dan ook nog escapen lijkt me overdreven?
Nee dat is niet overdreven. Je wilt geen enkele ruimte aan het toeval overlaten.

Je escaped dan dus nog steeds omdat je anders weer in de eerdere situatie terecht komt waarbij je niet weet of de quotes bewust zijn weggelaten of toch per ongeluk zijn vergeten. Je wilt hier niet elke keer weer over nadenken.

Je komt dan ook elke keer weer in een programmeerspagaat. Wel of geen quotes aanbrengen? Gewoon niet doen :p. Behandel alle externe data gewoon hetzelfde, is een stuk makkelijker.

Quoten + escapen en klaar.

En indien invoer in eerste instantie niet voldoet de query niet eens uitvoeren omdat dat zelden tot nooit een zinnig resultaat oplevert.
Gewijzigd op 14/02/2019 18:18:09 door Thomas van den Heuvel
 
Rob Doemaarwat

Rob Doemaarwat

14/02/2019 20:21:13
Quote Anchor link
Thomas van den Heuvel op 14/02/2019 17:19:52:
... echte database abstractie laag ... maar ook daar zul je je moeten afvragen of die abstractie echt nodig is en zich ooit terugverdient.

Zelf heb ik het idee dat ik er sneller door kan werken omdat ik minder code hoef te schrijven. Niet steeds die standaard stukken SQL, minder kans op fouten. Maar ook minder PHP omdat een groot deel van de afhandeling - lijstjes - er al in zit. Daarnaast loop je gewoon veel meer risico op een "misser" als je steeds handmatig moet escapen, en dat kan een *dure* grap worden.
 
Ozzie PHP

Ozzie PHP

14/02/2019 20:35:58
Quote Anchor link
@Thomas

Voor de duidelijkheid, dan wordt het dus bijv. zoiets?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

$sql
= "SELECT '" . $conn->real_escape_string($foo) . "' FROM bar WHERE id = '" . $conn->real_escape_string($id) . "'";

?>


Correct?
 
Thomas van den Heuvel

Thomas van den Heuvel

14/02/2019 23:23:19
Quote Anchor link
> Daarnaast loop je gewoon veel meer risico op een "misser" als je steeds handmatig moet escapen, en dat kan een *dure* grap worden.
Sure, zoals ik al zei, je moet enige discipline hebben. Bij elk stuk data moet de realisatie zijn waar deze vandaan komt en hoe je deze zou moeten behandelen. Escaping hoort daar eigenlijk altijd bij (filter input, escape output). Uitzonderingen daarop zijn ook echt uitzonderingen.

> Correct?
Euh, $foo (kolomnaam?) waarom zou je dat dynamisch willen maken? Kolomnamen staan ook niet tussen quotes. Ik zou daar misschien een whitelist voor gebruiken ofzo. Voor $id lijkt het mij in orde. Quoten en escapen gaat bijna altijd over waarden, niet zozeer over kolomnamen, die liggen meestal vast.
 
Ozzie PHP

Ozzie PHP

15/02/2019 00:07:48
Quote Anchor link
>> Euh, $foo (kolomnaam?) waarom zou je dat dynamisch willen maken?

Pffff, ik lag blijkbaar te slapen. Haha, dat sloeg inderdaad totaal nergens op.
 
Ward van der Put
Moderator

Ward van der Put

15/02/2019 09:21:37
Quote Anchor link
Thomas van den Heuvel op 14/02/2019 23:23:19:
Euh, $foo (kolomnaam?) waarom zou je dat dynamisch willen maken? Kolomnamen staan ook niet tussen quotes.


Als je één (abstract) class wilt kunnen gebruiken voor verschillende tabellen, dan zijn dynamische kolomnamen onmisbaar. Dat kan overigens ook een constante zijn in plaats van een variabele:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
public function create(array $keyed_data)
{

    $columns = array_keys($keyed_data);
    $sql = 'INSERT INTO ' . static::TABLE_NAME . ' (' . implode(', ', $columns) . ') VALUES (:' . implode(', :', $columns) . ')';

    // etc.
}
?>


Hier zijn zowel de tabelnaam als alle kolomnamen dynamisch.
 
Ozzie PHP

Ozzie PHP

15/02/2019 10:42:06
Quote Anchor link
Ah ja, oké ... dan werk je dus niet echt met queries maar met aparte functies om bijv. iets te inserten of updaten en als parameters geef je dan de kolomnaam en argumenten mee aan de functie. Dat kan inderdaad ook.
 

Pagina: « vorige 1 2



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.