zoekfunctie via PHP/MYSQL met query

Pagina: 1
Acties:
  • 1.206 views

Onderwerpen


Acties:
  • 0 Henk 'm!

  • gentillekes
  • Registratie: Juli 2010
  • Laatst online: 17-08-2023
Ik heb een database met een aantal contactpersonen gemaakt in een MySQL DB. Deze contactpersonen kan ik via PHP aanmaken op mijn website, en met diezelfde website kan ik ook de reeds aangemaakte contactpersonen weergeven.
Elk contactpersoon wordt aangemaakt met bepaalde categorieën (regio, opleiding, geslacht etc).
Alles werkt in principe goed, maar ik wil nu een zoekformuliertje maken (vrij simpel lijkt mij) met MySQL.
Ik dacht dus aan een bepaalde query die er als volgt uitziet:
code:
1
$query      =    mysql_query("SELECT * FROM kandidaat WHERE regio = '".$_POST['regio']."' AND geslacht = '".$_POST['geslacht']."' AND opleiding = '".$_POST['opleiding']."'");

Nu werkt deze Query goed (gegevens worden correct weergegeven op de website, echter wanneer ik een veld leeglaat, dan werkt de query niet (even voor jullie beeldvorming; de zoekfunctie ziet er als volgt uit: een veld waar ik een keuzelijst heb met regio's, opleidingen en een checkbox met het geslacht)
Wat kan ik regelen waardoor ik, wanneer ik een bepaald veld NIET invul, dat toch op de andere wordt gezocht?

op *snip* kunnen jullie de website bekijken.

[ Voor 2% gewijzigd door Creepy op 15-12-2010 14:29 ]


Acties:
  • 0 Henk 'm!

  • Aganim
  • Registratie: Oktober 2006
  • Laatst online: 17:33

Aganim

I have a cunning plan..

Voordat je überhaupt verder gaat: zou je niet eerst je userinput controleren/beveiligen? Rechtstreeks zoeken op $_POST data is natuurlijk vragen om SQL injecties.

Acties:
  • 0 Henk 'm!

  • Keiichi
  • Registratie: Juni 2005
  • Laatst online: 06-07 22:35
Aganim schreef op woensdag 15 december 2010 @ 10:46:
Voordat je überhaupt verder gaat: zou je niet eerst je userinput controleren/beveiligen? Rechtstreeks zoeken op $_POST data is natuurlijk vragen om SQL injecties.
En toch krijg ik het niet voor elkaar (value van regio op
code:
1
';UPDATE kandidaat SET achternaam='SQL injected';SELECT * FROM kandidaat WHERE regio = '
gezet).

Maar goed. Quick&Dirty zou zijn om standaard %% om een zoekterm heen te zetten. Anders eerst controleren of je een lengte van een waarde 0 is en dan niet opnemen in je query.

Solar @ Dongen: http://solar.searchy.net/ - Penpal International: http://ppi.searchy.net/


Acties:
  • 0 Henk 'm!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 19:25
Je kan natuurlijk voor een dergelijke (ranzige) oplossing gaan:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$query = "SELECT * FROM kandidaat";
$c = " WHERE";
if(isset($_POST["regio"])){
 $query.= $c . " regio = '" . addslashes($_POST["regio"]) . "'";
 $c = " AND";
}
if(isset($_POST["geslacht"])){
 $query.= $c . " geslacht = '" . addslashes($_POST["geslacht"]) . "'";
 $c = " AND";
}
//enz
$result = mysql_query($query);
?>


enz :P

Maar dat kan vast (veel) netter :+

[ Voor 5% gewijzigd door Noxious op 15-12-2010 10:56 ]


Acties:
  • 0 Henk 'm!

  • gentillekes
  • Registratie: Juli 2010
  • Laatst online: 17-08-2023
Hey gaat om een klein (oefen) projectje, beveiliging komt later aan bod :-) Ik heb nog niet veel ervaring met PHP en MySQL, dit projectje is ervoor om mijn kennis wat uit te breiden. Stap voor stap wil ik dus steeds wat functies toevoegen, alles dat tot nu toe op mijn website staat is zelf gebouwd.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
gentillekes schreef op woensdag 15 december 2010 @ 10:55:
Hey gaat om een klein (oefen) projectje, beveiliging komt later aan bod :-) Ik heb nog niet veel ervaring met PHP en MySQL, dit projectje is ervoor om mijn kennis wat uit te breiden. Stap voor stap wil ik dus steeds wat functies toevoegen, alles dat tot nu toe op mijn website staat is zelf gebouwd.
Beveiliging hoort toch echt direct bij je eerste stapjes.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
En gebruik aub dan wel mysql_real_escape_string() en co, ipv addslashes(). Addslashes is niet bedoelt voor het Echt Escapen van Strings in Mysql. ;)
[/captain obvious]

{signature}


Acties:
  • 0 Henk 'm!

  • _Apache_
  • Registratie: Juni 2007
  • Laatst online: 20:02

_Apache_

For life.

gentillekes schreef op woensdag 15 december 2010 @ 10:55:
Hey gaat om een klein (oefen) projectje, beveiliging komt later aan bod :-) Ik heb nog niet veel ervaring met PHP en MySQL, dit projectje is ervoor om mijn kennis wat uit te breiden. Stap voor stap wil ik dus steeds wat functies toevoegen, alles dat tot nu toe op mijn website staat is zelf gebouwd.
Wanneer verwacht je te gaan beveiligen? Als je verder gaat leren scripten, ga je verder en dieper in het scripten, waardoor het beveiligen erbij inschiet. Beveiliging vanaf het fundament loop je hier dus al mis.
Voordat je de eerste letter code neerlegt, moet je begrijpen waarom je bepaalde dingen nooit zomaar mag aannemen.

Zero SR/S 17.3kWh / 2700WP PV / HRSolar zonneboiler


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 19:41

MueR

Admin Tweakers Discord

is niet lief

Om te beginnen geen addslashes gebruiken bijvoorbeeld.
Keiichi schreef op woensdag 15 december 2010 @ 10:53:
En toch krijg ik het niet voor elkaar (value van regio op
code:
1
';UPDATE kandidaat SET achternaam='SQL injected';SELECT * FROM kandidaat WHERE regio = '
gezet).
Multiple queries worden door mysql_query niet ondersteund.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Foamy
  • Registratie: November 2006
  • Laatst online: 17-06 17:21

Foamy

Fulltime prutser

Cartman! schreef op woensdag 15 december 2010 @ 11:00:
[...]
Beveiliging hoort toch echt direct bij je eerste stapjes.
Dat inderdaad. Als je jezelf aanleert om vanaf het begin af aan al veilig te programmeren en grappen als SQL injectie voorkomt scheelt je dit later veel werk, en belangrijker: het scheelt je verkeerde programmeermethodiek afleren.

Wat betreft je vraag: Je gebruikt nu AND in je query, hierdoor worden enkel resultaten weergegeven welke aan alle voorwaarden voldoen. Je zou bijvoorbeeld kunnen nadenken over het gebruik van OR, of misschien de hele query zelfs nog anders opbouwen. Dit afhankelijk van de gewenste zoekresultaten.

Misschien is het handig dat je eerst een query ontwerpt aan de hand van ja datamodel, en op basis daarvan pas je code gaat schrijven?

blub


Acties:
  • 0 Henk 'm!

  • gentillekes
  • Registratie: Juli 2010
  • Laatst online: 17-08-2023
als ik OR gebruik, dan gebruikt hij enkel één van de opgegeven velden gecombineerd met de rest. Als ik dan zoek op alle mannen uit zuid-limburg met een MBO opleiding dan komen records tevoorschijn van alle mannen, alle personen uit zuidlimburg en alle personen met een mbo opleiding

Acties:
  • 0 Henk 'm!

  • ajakkes
  • Registratie: Maart 2004
  • Laatst online: 16-05 22:32

ajakkes

👑

Begin met je _POST variabelen uit je query te halen. Deze zal je eerst moeten controleren en bewerken.
$veilige_regio = mysql_real_escape_string($_POST['regio']);
if ($veilige_regio == ""){
$veilige_regio = "%";
}

Edit:
En maak even een backup van je database want morgen heeft iemand een DROP uitgevoerd. Tenzij je je beveiliging snel op orde hebt. Dit is geen dreigement maar een waarschuwing.

[ Voor 30% gewijzigd door ajakkes op 15-12-2010 11:34 ]

👑


Acties:
  • 0 Henk 'm!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 19:25
ajakkes schreef op woensdag 15 december 2010 @ 11:31:
Begin met je _POST variabelen uit je query te halen. Deze zal je eerst moeten controleren en bewerken.
$veilige_regio = mysql_real_escape_string($_POST['regio']);
if ($veilige_regio == ""){
$veilige_regio = "%";
}
Is dit dan niet handiger?

PHP:
1
2
3
4
5
<?php
if(isset($_POST["bla"])){
$bla = mysql_real_escape_string($_POST["bla"]);
}
?>


Edit: nvm, ik zie al wat je doet :P
MueR schreef op woensdag 15 december 2010 @ 11:05:
[...]

Om te beginnen geen addslashes gebruiken bijvoorbeeld.
ty :) die onthou ik: http://shiflett.org/blog/...-mysql-real-escape-string
MueR schreef op woensdag 15 december 2010 @ 11:05:
[...]

Multiple queries worden door mysql_query niet ondersteund.
Wel toch (sinds MySQL 4.1)? Als je een query tussen haken zet, dus bijv:

SQL:
1
SELECT * FROM testtabel WHERE test IN (SELECT test FROM testtabel2);

[ Voor 41% gewijzigd door Noxious op 15-12-2010 11:40 ]


Acties:
  • 0 Henk 'm!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 19:25
- dubbelpost -

[ Voor 96% gewijzigd door Noxious op 15-12-2010 11:39 ]


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Noxious schreef op woensdag 15 december 2010 @ 11:34:
Wel toch (sinds MySQL 4.1)? Als je een query tussen haken zet, dus bijv:

SQL:
1
SELECT * FROM testtabel WHERE test IN (SELECT test FROM testtabel2);
Da's een subquery. ;)

Multiple queries, dus meerdere achter elkaar geschreven queries, zijn godzijdank standaard niet toegestaan met de mysql_* functies. Maar dan is dat niet het enige gevaar met SQL injection, dus je moet gewoon _altijd_ beschermd zijn tegen sql injection, of je kan beter maar een ander beroep/hobby zoeken.

[ Voor 10% gewijzigd door Voutloos op 15-12-2010 11:48 ]

{signature}


Acties:
  • 0 Henk 'm!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 19:25
Ahjawel, maar als die subquery een drop table zou zijn, wordt ie dan ook uitgevoerd?

Acties:
  • 0 Henk 'm!

  • gentillekes
  • Registratie: Juli 2010
  • Laatst online: 17-08-2023
[b][message=35208363,noline]ajakkes schreef op woensdag 15 december 2010 @ 11:31[/message
Edit:
En maak even een backup van je database want morgen heeft iemand een DROP uitgevoerd. Tenzij je je beveiliging snel op orde hebt. Dit is geen dreigement maar een waarschuwing.
Een DROP? mijn expertise in het SQL wereldje is niet zo groot, maar ik neem aan dat iemand een tabel heeft verwijderd, hoe kun jij dat zien dan? :-)

edit: begrijpend lezen :+

[ Voor 3% gewijzigd door gentillekes op 15-12-2010 11:55 ]


Acties:
  • 0 Henk 'm!

  • ajakkes
  • Registratie: Maart 2004
  • Laatst online: 16-05 22:32

ajakkes

👑

Het zou zo lullig zijn als je data weg is omdat je hulp vraagt bij je pagina.

In je TS laat je zien waar je pagina staat en hoe de _POST data behandeld wordt (onbeveiligd). Dit is voor sommigen genoeg om ermee te rommelen.

Een query als die van Keiichi is dan vrij onschuldig. De achternaam van iemand veranderen in SQL injected. Maar een drop table is al vervelender.

Op een van mijn subdomeinen die ik toch echt niet openbaar heb gemaakt en lastig te raden is krijg ik zo af en toe al berichten in mijn errorlog waar te zien is dat hackers proberen toegang tot mijn database te krijgen.

👑


Acties:
  • 0 Henk 'm!

  • gentillekes
  • Registratie: Juli 2010
  • Laatst online: 17-08-2023
ik ga zodadelijk dan even naar de beveiliging kijken, heeft verder nog ieman een oplossing? In de tussentijd heb ik niets meer gevonden..
oplossing van JapyDooge werkt niet, ik zie vervolgende helemaal geen invoervelden meer.

Alles van AND naar OR heeft geen zin.
Alleen AND kan, maar dan zijn alle velden verplicht (iets dat ik eigenlijk niet wil).
Alleen OR kan, maar is dan niet meer concequent.
bij gebruik van %% werkt de query ook niet meer, ik heb dit als volgt gedaan (ik weet niet of het correct is trouwens):
SELECT * FROM kandidaat WHERE regio = '".$_POST[%'regio'%]."'

Acties:
  • 0 Henk 'm!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 19:25
Euh, ik zou dan voor '%".$_POST['regio']."%' gaan persoonlijk :P :+

En verder, die $_POST is nog niet geescaped :+

Acties:
  • 0 Henk 'm!

  • ajakkes
  • Registratie: Maart 2004
  • Laatst online: 16-05 22:32

ajakkes

👑

PHP:
1
2
3
4
$veilige_regio = mysql_real_escape_string($_POST['regio']);
if ($veilige_regio == ""){
$veilige_regio = "%";
}


En dit zal je moeten doen voor alle 4 de velden.

👑


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Noxious schreef op woensdag 15 december 2010 @ 13:05:
Euh, ik zou dan voor '%".$_POST['regio']."%' gaan persoonlijk :P :+
Los van de SQL injection: :w indexen!

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • TJHeuvel
  • Registratie: Mei 2008
  • Niet online
Wat je nu doet is alle data gewoon in je query gooien, ongeacht of de gebruiker wel wat ingevuld heeft. Wat je dus wilt is eerst kijken of het veld niet leeg was, en dan pas in je query stoppen.

Zoals hierboven al is aangegeven, kan dit evt zo eruit zien:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php

//Hier iets van input validatie.
$regio = $_POST['regio'];
$geslacht = $_POST['geslacht'];
$opleiding = $_POST['opleiding'];

$query = "SELECT * FROM kandidaad WHERE";

if(!empty($regio)) // De variable regio is niet leeg.
{
    $query .= " regio = '$regio' AND";
}
if(!empty($geslacht))
{
    $query .= " geslacht = '$geslacht' AND";
}

if(!empty($opleiding))
{
    $query .= " opleiding = '$opleiding' AND";
}

//Er staat nu altijd 1 AND teveel, die moet eraf.
//Haal dus de 3 laatste karakters eraf.
$query = substr($query,0,-3);

if(empty($regio) && empty($geslacht) && empty($opleiding))  //Kijk eerst of er uberhaupt wel iets ingevuld is. Leuk voor de gebruiker, maar de query is ook nog invalide door de loze WHERE.
{
    echo "Vul minimaal 1 veld in!";
} else {
    echo $query;
}
?>



Oh en, als ik jou was zou ik dat beveiliging-praat nu maar voor lief nemen, je moet eerst uberhaupt iets hebben om te beveiligen. Als dit ooit naar de boze buitenwereld komt wordt het zeker een issue, maar focus je voor nu maar gewoon op de taal leren!

Freelance Unity3D developer


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Even een handige functie maken en in een library stoppen (bestandje met handige functies die je kunt includen) zal je dan helpen.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

function escapePostValue($formname)
{
    if(!isset($_POST[$formname])) return '%';
    $val = mysql_real_escape_string($_POST[$formname]);
    if($val === '') return '%';
    return $val;
}

// Eventueel kun je nog een trim doen

?>


Edit: In de post hierboven wordt veelvuldig incorrect gebruik gemaakt van de functie empty(), deze functie returnt namelijk false bij de string "0". En als je een ID gebruikt dat 0 kan zijn, dan gaat het dus mis.

[ Voor 26% gewijzigd door Davio op 15-12-2010 13:56 ]


Acties:
  • 0 Henk 'm!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 19:25
RobIII schreef op woensdag 15 december 2010 @ 13:34:
[...]

Los van de SQL injection: :w indexen!
Tsja het was niet mijn tip :+

Wat is er mis met de query aanpassen adhv het aantal gegeven input velden zoals ik eerder (niet perfect maar toch) voorstelde?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Jawel :?

Je suggesteert om een like met %foo% te doen. Dat is funest in termen van performance want 't levert je een full table scan op en is in 99 v.d. 100 % van de gevallen helemaal niet nodig/gewenst.
gentillekes schreef op woensdag 15 december 2010 @ 13:00:
bij gebruik van %% werkt de query ook niet meer, ik heb dit als volgt gedaan (ik weet niet of het correct is trouwens):
Los van dat je de % op de verkeerde plek hebt staan mis je een Like. Maar misschien is 't eens verstandig te gaan kijken naar een tutorial PHP en SQL want je bent in 't donker in een porceleinwinkel op een mug aan 't jagen met een honkbalknuppel ;)

[ Voor 44% gewijzigd door RobIII op 15-12-2010 13:59 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • gentillekes
  • Registratie: Juli 2010
  • Laatst online: 17-08-2023
CyCloneNL schreef op woensdag 15 december 2010 @ 13:34:
Wat je nu doet is alle data gewoon in je query gooien, ongeacht of de gebruiker wel wat ingevuld heeft. Wat je dus wilt is eerst kijken of het veld niet leeg was, en dan pas in je query stoppen.

Zoals hierboven al is aangegeven, kan dit evt zo eruit zien:

<code>

Oh en, als ik jou was zou ik dat beveiliging-praat nu maar voor lief nemen, je moet eerst uberhaupt iets hebben om te beveiligen. Als dit ooit naar de boze buitenwereld komt wordt het zeker een issue, maar focus je voor nu maar gewoon op de taal leren!
Ik heb jouw stukje code gebruikt, welke naar mijn weten correct in elkaar steekt. Als ik nu geen enkel veld invul dan krijg ik namelijk de echo 'vul minimaal 1 veld in'.
Wanneer ik ze invul krijg ik echter: 'Warning: mysql_fetch_assoc() expects parameter 1 to be resource, string given in /customers/rogermooren.nl/rogermooren.nl/httpd.www/test/showone.sql.php on line 95'

Deze foutmelding refereert naar:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    echo "<table border='0'><tr>
<td><b>achternaam</b></td>
<td><b>voornaam</b></td>
<td><b>geslacht</b></td>
<td><b>regio</b></td>
<td><b>opleiding</b></td>
<td><b>linkedin</b></td>
    ";
    while($result1 = mysql_fetch_assoc($query)){
    echo "<tr>";
        echo "<td>" .$result1['achternaam']. "</td>";
        echo "<td>" .$result1['voornaam']. "</td>";
        echo "<td>" .$result1['geslacht']. "</td>";
        echo "<td>" .$result1['regio']. "</td>";
        echo "<td>" .$result1['opleiding']. "</td>";
        echo "<td><a href=".$result1['linkedin'].">klik hier</a></td>";
    echo "</tr>";
    }
    echo "</table>";
}
?>


uiteraard zal ik wel iets fout hebben gedaan omdat ik nu deels gegeven code van jullie gebruik, en deze combineer met dat wat ik al had. wat is wijsheid?

Acties:
  • 0 Henk 'm!

  • TJHeuvel
  • Registratie: Mei 2008
  • Niet online
Wijsheid is hier te vinden, bookmark de manual zeker even!

In dit geval is het de mysql_fetch_assoc die problemen geeft, heel specifiek zeurt hij over het feit dat hij een Resource verwacht, maar een String krijgt.

Zoals in de manual te lezen is moet het argument het resultaat van een mysql_query call zijn, en niet de query-string zelf.

[ Voor 10% gewijzigd door TJHeuvel op 15-12-2010 14:27 ]

Freelance Unity3D developer


Acties:
  • 0 Henk 'm!

  • gentillekes
  • Registratie: Juli 2010
  • Laatst online: 17-08-2023
RobIII schreef op woensdag 15 december 2010 @ 13:56:
[...]

Jawel :?

Je suggesteert om een like met %foo% te doen. Dat is funest in termen van performance want 't levert je een full table scan op en is in 99 v.d. 100 % van de gevallen helemaal niet nodig/gewenst.

[...]

Los van dat je de % op de verkeerde plek hebt staan mis je een Like. Maar misschien is 't eens verstandig te gaan kijken naar een tutorial PHP en SQL want je bent in 't donker in een porceleinwinkel op een mug aan 't jagen met een honkbalknuppel ;)
dat met die porseleinwinkel klopt deels wel, maar ik ben deze website aan het maken als projectje, juist om deze taal/techniek onder de knie te krijgen. Hierbij was het eigenlijk begonnen om een CV database te maken, en elke keer als ik een bepaald onderdeeltje heb afgewerkt, komt er weer een gedetailleerdere (of complexere) functionaliteit bij. Zo begon ik bij het correct weergeven van info uit een DB naar een website, daarop volgde het aanmaken van data die naar de DB werd gestuurd, en nu moet ik erop zoeken :9

OT: best een leuk projectje trouwens

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 19:41

MueR

Admin Tweakers Discord

is niet lief

Ja ho eens even. Je zit zomaar wat code te copy pasten en verwacht dan ook nog dat wij fouten gaan oplossen? Zelfs wanneer je de foutmelding gewoon letterlijk kan opzoeken? Zo werken we niet.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:44

Creepy

Tactical Espionage Splatterer

Ik denk dat het wijsheid is om een PHP tutorial te volgen. Je hebt de basis van PHP en MySQL nog niet onder de knie. Dat is niet erg, we hebben het allemaal moeten leren. Dit is echter wel iets wat in nagenoeg elke PHP/MySQL tutorial staat uitgelegd en iets waarvan we verwachten dat je dat zelf onder de knie kan krijgen

mysql_fetch_assoc verwacht een resultset en geen directe query. Kijk eens naar mysql_query()

Ga dus rustig even zelf verder. Bekijk eens wat tutorials en probeer de basis zelf onder de knie te krigen. Als je daarna tegen een probleem aanloopt dan kan je altijd een topic hier openen. We verwachten dan wel iets meer dan "dit is de foutmelding en dit is de code". Dat staat overigens prima uitgelegd in Het algemeen beleid #quickstart en in PRG Beleid

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.