Concatten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior Rapid Custom Software Developers

Jouw rol Voor deze ‘leading edge’ technology practice zijn we op zoek naar Senior Rapid Custom Software Developers. Echte IT-freaks die de ontwikkelingen in het vakgebied nauwkeurig volgen en weten wat er speelt. Die kunnen werken op de grens van het onmogelijke en zo onze nationale en internationale klanten een beslissende voorsprong geven in hun markt. Je adviseert over innovatie en werkt mee aan de agile ontwikkeling en implementatie van state-of-the-art oplossingen, gebaseerd op .Net, Java en/of Mendix. Het gaat vaak om nieuwe technieken, veel eindgebruikers en complexe omgevingen, waarin de lat hoog ligt. Snelheid en topkwaliteit zijn bij deze

Bekijk vacature »

Junior C# / .NET developer met kennis van Java gez

Al 15 jaar zijn zij in Nederland de grootste aanbieder van Cloud software in de zakelijke en financiële sector. Zij ontwikkelen software waarmee hun klanten hun financieel beheer efficiënt en kwalitatief kunnen uitvoeren. Om het huidige team van ervaren developers te versterken en de geplande projecten te realiseren zoeken zij naar junior .NET developers met ervaring van object-georiënteerd programmeren en met voorkeur basis kennis van Java. Jij zal komen werken in een team van zeer ervaren developers met genoeg kennis in huis om jou te ondersteunen in jouw ontwikkelingen. Jullie zullen actief zijn met het ontwikkelen van Cloud software en

Bekijk vacature »

Als medior PHP developer bouwen op de bouwmarkt?

Het bedrijf waar jij in kom te werken is in 2006 opgericht. De 2 eigenaren van het bedrijf hebben altijd passie gehad voor de wereld van ICT en het ontwikkelen van websites en software. Door de jaren heen hebben ze volop websites, webapplicaties en verschillende software ontwikkeld. Het bedrijf heeft vele grote klanten en opdrachtgevers in de bouwmarkt. Dat is dan ook hun corebusiness. Zij streven naar lange klantenrelaties, waarvoor de kwaliteit ook gewaarborgd moet worden. Het team waar je in komt te werken, bestaat uit Junioren en Medioren. Alle developers voeren naast het ontwikkelen van de projecten in de

Bekijk vacature »

Junior VB.NET/Angular.JS developer voor maatwerk E

Dit bedrijf legt de focus op het bedenken van ERP oplossingen voor MKB bedrijven in specifiek de semi-proces industrie. Voornamelijk liggen deze oplossingen in document processing en resource planning. De oplossingen verschillen van het ontwikkelen van verschillende CMS systemen tot simpele beheer oplossingen. Inmiddels telt het bedrijf 174 F.T.E. 6 hiervan zijn hands on developers. Door het feit dat het een hele flexibele functie betreft, ligt er volop de mogelijkheid om door te groeien binnen de organisatie. Functie-omschrijving Als we kijken naar de functie, zien we een hele diverse functie. In tegenstelling tot veel van de bedrijven die vergelijkbaar werk

Bekijk vacature »

Golang Developer

Do you want to work within a fun, and innovative scrum team and dynamic working environment? Do you want to make a great contribution to the development of our high traffic websites, thanks to your knowledge in Go Programming Development in a high–performance environment?! Then we are looking for you! Due to replacement in the IT team we are immediately looking for a: Golang Developer Haarlem At BookerZzz, we use the latest technology and the sharpest minds to expand our high traffic booking platforms. We’re currently in the process of overhauling our stack, using Golang as our primary language, by

Bekijk vacature »

Medior PHP en toe aan een nieuwe uitdaging? Web, A

Dit hechte en gezellige bedrijf is 15 jaar geleden begonnen als web bureau. Ze hebben in die 15 jaar tijd interessante opdrachten binnen gesleept en zijn uitgegroeid tot een groep IT specialisten die mooie projecten neerzet. Ze detacheren en verhuren developers aan de opdrachtgevers. In overleg met je collega’s en lettend op je eigen discipline bekijken jullie wie welke opdracht gaat doen. Het is een baan die heel uitdagend en afwisselend is en je werkt voor klanten met grote namen. Het is een ambitieuze, jonge en gemotiveerde organisatie vol met kansen en mogelijkheden. Mocht je je willen specialiseren in een

Bekijk vacature »

Werken binnen een huiselijke sfeer! Medior/Senior

Het bedrijf waar je als Medior/Senior PHP Developer voor aan de slag gaat, is zo’n 13 jaar geleden over de startlijn gegaan. Het bedrijf telt 5 man en zijn op zoek naar 1 Developer ter aanvulling op het team. Ze richten zich voornamelijk op het ontwikkelen van software en systemen voor het primair onderwijs. Dit zijn verscheidene systemen die als oplossing(en) onder licentie bij het bedrijf afgenomen kan worden. Verder dan dat denken ze bij veel vraag naar een oplossing voor een specifiek probleem ook mee over maatwerk oplossingen. Door de jaren heen zijn ze technisch enorm vooruit gegaan. Hedendaags

Bekijk vacature »

PHP Developer in the Wolfpack!

Op E-commerce vlak behoort dit bedrijf tot één van de grootste spelers in het land. Zij maken deel uit van een groter geheel; een overkoepelende organisatie dat ook in andere landen actief is. Je komt te werken in een onwijs innovatief, strak en fris pand. Dat zorgt voor een gemoedelijke sfeer binnen het bedrijf. Samen met je collega’s werk je aan projecten voor grote klanten als Sanoma, Coolcat, Scotch & Soda en nog veel meer! Functie-omschrijving Als PHP Developer binnen het bedrijf kom je terecht in ‘The Wolfpack’. The Wolfpack bestaat uit 8 PHP Developers. Al deze developers beschikken over

Bekijk vacature »

Front-end developer

Jij weet wat er nodig is. Jouw hart gaat sneller kloppen van techniek. Jij wil vooruit. Ben jij de Front-end Developer die we zoeken? Je bent creatief, thuis in gebruikersinteractie en een gedreven engineer in hart en nieren. Daarnaast heb jij een klantgerichte en proactieve houding. Precies de kwaliteiten die een Front-end Developer nodig heeft. Wat doe je als Developer? Als Front-end Developer werk je aan de technische realisatie van front-end (web)applicaties in de verschillende uitdagende opdrachten voor Sogeti’s klanten. Dit kan zowel op klantlocatie zijn, als binnen het Center of Excellence van Sogeti. Jij houdt van het uitdenken en

Bekijk vacature »

Java Full Stack Developer

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Full Stack Developers om ons development team te versterken. Als Full Stack developer werk je in Agile teams bij onze klanten en ben je verantwoordelijk voor alle lagen van de stack. Ben je beter in de backend, dan helpen we je verder met de front-end en andersom natuurlijk. Je gaat hoogwaardige software maken voor verschillende opdrachtgevers in jouw regio. Je ontwikkelt, adviseert over architectuur en past de nieuwste technologieën toe. Je bent een professional die het IT-vak serieus

Bekijk vacature »

Medior .Net ontwikkelaar met passie voor het vak e

Wegens de toenemende groei van business op development vlak zoekt deze partij naar een nieuwe ervaren ontwikkelaar met aantoonbaar trackrecord. Ze tellen een duizendtal man groot en jouw werklocatie zal in provincie Limburg zijn bij één van hun klanten of binnen het interne project team(afhankelijk waar jij het beste past). Het hart en teamgevoel maakt het verschil binnen de club en daar word veel waarde aan gehecht om het resultaat hoog te houden. Functie-omschrijving Het team waar je in komt te werken bestaat, met jou erbij, uit 7 man; Mediors en Seniors. Je hebt dus meer dan genoeg collega’s waar

Bekijk vacature »

Medior (+) PHP developer gezocht in de regio Amste

Dit bedrijf is sinds twee jaar actief en is binnen hun segment de grootste op de markt. Op dit moment hebben zij al meer dan zeventig partners en doen grote projecten voor bijvoorbeeld gemeentes. Het bedrijf bestaat uit tien man met een gemiddelde leeftijd van zevenentwintig jaar waarvan er vijf gespecialiseerd zijn in het bouwen van websites middels verschillende PHP- technieken. Dit bedrijf staat open voor talenten en intelligente developers die met hun kennis een toegevoegde waarde kunnen zijn voor dit bedrijf. Naast het ontwikkelen van nieuwe technieken en websites wordt er ook veel waarde gehecht aan de onderlinge sfeer

Bekijk vacature »

Op zoek naar een PHP developer met Magento kennis

Dit full services internetbureau bestaat vijf jaar. Het bedrijf is in een korte periode heel erg succesvol geworden. Dit komt door de fantastische mensen die daar werken. Ze boeken met elkaar het één na het andere resultaat. Ze krijgen mooie opdrachten van internationale klanten en daar behoort ook webshops maken in Magento. Het is de bedoeling dat je met Magento de schaalbaarheid en flexibiliteit biedt die nodig is om een webshop te laten groeien. De bedoeling is dat je jouw ideeën vertaalt naar mooie oplossingen en dat je in staat bent om de bestaande markt op het gebied van online

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 »

Ruby on Rails developer

Mijn opdrachtgever, regio Haaglanden, heeft ruimte voor een Ruby on Rails developer. Het is een internationale projectorganisatie, top bereikbaar met OV en vanzelfsprekend word er Agile gewerkt. De specs: Ruby (on rails) REST Relationale databases GIT, DevOps Engels (nog belangrijker dan Nederlands) Kom jij binnenkort, het liefst fulltime, beschikbaar? Ik kijk uit naar jouw telefoontje!

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

15/02/2019 21:17:07
 
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.