• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Marktplaats
  4. Vraag & Aanbod Werk

Forum

  • Op zoek naar de legends

    Syntax 5 januari 2026 om 13:50
  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 4 januari 2026 om 10:58
  • Developer Gezocht

    K.Rens 30 december 2025 om 12:32
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04
  • Partner Gezocht om meerdere NFT Collecties op Open Sea te Plaatsen

    NFT Art Designer 1 maart 2025 om 14:08

Marktplaats

  • 321 Nieuwe Domeinnamen December 2025

    shiga 1 januari 2026 om 10:26
  • Meerdere mafia game template te koop

    Syntax 28 december 2025 om 21:20
  • Van een pixelige afbeelding naar een strakke, moderne website

    Syntax 21 december 2025 om 17:05

Scripter aangeboden

  • dmeigenaar
  • 23 januari 2019 om 19:51
  • dmeigenaar
    Student
    Ontvangen Reacties
    9
    Berichten
    60
    • 23 januari 2019 om 19:51
    • #1

    Beste leden,

    Aangezien ik de komende tijd weer aardig wat tijd vrij hebt bied ik mijzelf als scripter aan met een vast tarief van €7,50 per uur. Projecten zijn ook welkom met een vaste prijs en / of een project met een deadline.

    Programmeertalen die ik beheer:
    - PHP
    - HTML / HTML5
    - CSS / CSS3 / Bootstrap
    - Javascript (Klein beetje Ajax / jQuery)

    Hoeveel uur ik per week beschikbaar ben:
    - Dit verschilt per week, maar zeker wel 15 - 20 uur per week.

    Uitgevoerde werkzaamheden:
    - Criminals
    - Pokemon games
    - Aanmeldsystemen
    - Forumsystemen
    - Race games

    Projecten wat ik beheer (Zodat u enige beeld kan krijgen wat ik zo al bouw.):
    - pokemongym.nl
    - pokemonplasma.com
    - pokemoncity.nl
    - pokestad.nl
    - streetmaffia.com <-- Momenteel een race game op actief.

    Projecten waar ik aan gewerkt heb:
    - pokemonrpg.nl
    - pokeworld.nl

    Daarnaast al een aantal jaren actief in het updaten van een hele hoop sources (Maffia, Pokemon en MMORPG sources.).

    Ook bezit ik tientallen (Betaalde) maffia sources en nog andere betaalde sources. Interesse in een source, stuur maar gerust een privebericht. ;)

    Opdrachten mogen verstuurd worden per privebericht of mailen naar: [email protected]

    Hoop dat alles zo een beetje duidelijk vermeld is, zo niet? Laat het dan maar weten.

    Met vriendelijke groet,
    Damon

  • Guest, wil je besparen op je domeinnamen? (ad)
  • Thisguyisgone
    Elite members
    Ontvangen Reacties
    197
    Berichten
    7.880
    • 24 januari 2019 om 17:58
    • #2

    En wat heb je zelf gemaakt?

  • dmeigenaar
    Student
    Ontvangen Reacties
    9
    Berichten
    60
    • 24 januari 2019 om 18:06
    • #3

    In principe zijn al mijn sites die ik atm beheer / bezit, helemaal herschreven dus heb ik het zelf gemaakt.

    Heb nog geen behoefte gehad aan nieuw design / uiterlijk.

    Enigste wat niet 100% zelf gemaakt is het layout, dat is tevens wel gecleant en beter gemaakt als eerst.

  • Thisguyisgone
    Elite members
    Ontvangen Reacties
    197
    Berichten
    7.880
    • 24 januari 2019 om 18:07
    • #4

    Heb je voorbeeldcode die jij geschreven hebt?

    BTW: de racegame is gewoon van CodeCanyon..

  • dmeigenaar
    Student
    Ontvangen Reacties
    9
    Berichten
    60
    • 24 januari 2019 om 19:06
    • #5

    Ja dat heb ik.

    PHP
    <?php 
    $flipJ = array();
    
    
    if (!empty($_POST['bedrag'])) {
    	$bedrag = $_POST['bedrag'];
    
    
        if ($bedrag > $gebruiker['silver']) {
    	    $flipJ['text'] = "<div class='message_box red'><div class='icon'></div><span>Zoveel silver heb jij niet!</span></div>";
    	}
    	elseif ($bedrag != $_POST['bedrag']) { 
    	    $flipJ['text'] = "<div class='message_box red'><div class='icon'></div><span>Dit is een ongeldige inzet!</span></div>";
    	}
    	elseif (!is_numeric($bedrag)) {
    	    $flipJ['text'] = "<div class='message_box red'><div class='icon'></div><span>Dit is een ongeldige inzet!</span></div>";
    	}
    	elseif ($bedrag < 1000) {
    	    $flipJ['text'] = "<div class='message_box red'><div class='icon'></div><span>Minimale inzet is 1.000 silver.</span></div>";
    	}
    	else {
    		# Kansen per bedrag
    		if ($bedrag == 1000) { 
    			$kans = rand(1,100); 
    		}
    		elseif ($bedrag < 5001) { 
    			$kans = rand(5,100); 
    		}
    		elseif ($bedrag < 10001) { 
    			$kans = rand(10,100); 
    		}
    		elseif ($bedrag < 30000) { 
    			$kans = rand(20,100); 
    		}
    		elseif ($bedrag < 100000) { 
    			$kans = rand(20,100); 
    		} 
    		elseif ($bedrag < 150000) { 
    			$kans = rand(25,100); 
    		}
    		elseif ($bedrag < 250000) { 
    			$kans = rand(30,100); 
    		}
    		elseif ($bedrag < 350000) { 
    			$kans = rand(30,100); 
    		}
    		elseif ($bedrag < 700000) { 
    			$kans = rand(30,100); 
    		}
    		else { 
    			$kans = rand(45,100); 
    		}
    		if ($kans < 50) {
    		    $flipJ['text'] = "<div class='message_box green'><div class='icon'></div><span>Je hebt succesvol ".$bedrag." silver gewonnen!</span></div>";
    			Connect::query("UPDATE `gebruikers` SET `silver`=`silver`+'".$bedrag."' WHERE `user_id`='".$_SESSION['id']."'");
    			# Season update
    			$score = rand(1000,5000);
    			Connect::query("UPDATE `gebruikers` SET `score`=`score`+'".$score."' WHERE `user_id`='".$_SESSION['id']."'");
    		} 
    		else {
    			$flipJ['text'] = "<div class='message_box red'><div class='icon'></div><span>Je hebt jammer genoeg ".$bedrag." silver verloren!</span></div>";
    			Connect::query("UPDATE `gebruikers` SET `silver`=`silver`-'".$bedrag."' WHERE `user_id`='".$_SESSION['id']."'");
    		}
    	}
    }
    else {
    	$flipJ['text'] = "<div class='message_box red'><div class='icon'></div><span>Je moet wel een inzet invullen.</span></div>";
    }
    
    
    echo json_encode($flipJ);
    ?>
    Toon Meer


    Is gewoon simpel geschreven Kop of Munt code.

    Racegame komt inderdaad van CodeCanynon af. Enkel heb ik het aanmeld / registreer systeem al helemaal herschreven en verbeterd.

  • Thisguyisgone
    Elite members
    Ontvangen Reacties
    197
    Berichten
    7.880
    • 24 januari 2019 om 19:18
    • #6

    Ok laat maar :').

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 25 januari 2019 om 17:08
    • #7

    Zou bovenstaande code (met name de database queries) niet in een transactie moeten staan? Wat als iemand meerdere keren tegelijkertijd (parallel) een coinflip doet?

    Hoe zit het met escaping in zowel HTML als SQL?

    En kun je $flipJ niet gewoon als HTML retourneren (waarom een json_encode)?

    Nog veel belangrijker dan wat en hoe je iets programmeert zijn de keuzes waarom je iets op een bepaalde manier programmeert.

  • dmeigenaar
    Student
    Ontvangen Reacties
    9
    Berichten
    60
    • 25 januari 2019 om 19:16
    • #8

    De code hierboven kwam enkel uit een stukje kop of munt code. Dmv een stukje json script code herlaadt die het uitvoer stukje uit een ander script. HTML en opmaak wordt in een ander script in opgemaakt.

    Met escaping van SQL bedoel je dit neem ik aan:

    Connect::query("UPDATE `gebruikers` SET `silver`=`silver`+'".$bedrag."' WHERE `user_id`='".$_SESSION['id']."'");

    Met escaping moet het dit zijn:

    Connect::query("UPDATE `gebruikers` SET `score`=`score`+''".$score."'' WHERE `user_id`=''".$_SESSION[''id'']."''");

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 25 januari 2019 om 19:32
    • #9

    Nee, met escaping bedoel ik meer het ontdoen van enige speciale betekenis van tekstpassages in een bepaalde context.

    Escaping is belangrijk om zaken als SQL-injectie tegen te gaan. Het beste lijkt mij gewoon om dit altijd consequent te doen, ook al is het soms niet direct nodig. Het voordeel hiervan is dat je DATA in queries altijd hetzelfde behandelt, en je je dus ook niet elke keer hoeft af te vragen of een passage bewust niet was ge-escaped, of toch per ongeluk was vergeten.

  • dmeigenaar
    Student
    Ontvangen Reacties
    9
    Berichten
    60
    • 25 januari 2019 om 19:42
    • #10

    Voor het escapen van SQL queries, had ik laatst dit gemaakt.

    PHP
    <?php
    # Anti SQLi (SQL Injection)
    $array = array(
        "union",
        "sql",
        "mysql",
        "database",
        "cookie",
        "coockie",
        "select",
        "from",
        "where",
        "benchmark",
        "concat",
        "table",
        "into",
        "by",
        "values",
        "exec",
        "shell",
        "truncate",
        "wget",
        "/**/",
        "1=1",
        "xss"
    );
    
    
    foreach ($array as $d) {
        $string = security($_SERVER['QUERY_STRING']);
        if (strpos(strtolower($string), $d) !== false) {
            $ip        = $_SERVER['REMOTE_ADDR'];
            $loc       = $_SERVER['PHP_SELF'];
            $browseros = $_SERVER['HTTP_USER_AGENT'];
            $oslanguage = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
            $date       = date("d.m.Y / H:i:s");
            $file       = security(''.$loc.'?'.$string.'');
            echo '<meta http-equiv="refresh" content="0;url=index.php" />';
            exit();
        }
    }
    
    
    # Anti XSS (Cross-site scripting)
    function security($input) {
        global $db;
    
    
        $input = $db->real_escape_string($input);
        $input = strip_tags($input);
        return $input;
    }
    Toon Meer


    En dan bij belangrijke momenten: security($_POST['login']) <-- Bij wijze van.

  • AarClay
    Intermediate
    Ontvangen Reacties
    34
    Berichten
    423
    • 25 januari 2019 om 19:44
    • #11

    Wat heeft het strippen van tags met sql-injection te maken?

  • darkshifty
    Student
    Ontvangen Reacties
    12
    Berichten
    91
    • 25 januari 2019 om 21:16
    • #12

    dmeigenaar's insteek is prima, zijn kennis is alleen nog niet optimaal. Dat is ook niet iets wat hij ontkent. Hij bied zich aan als "Scripter" en niet als Programmeur.

    De kritiek en met name niet echt opbouwend, vind ik op ICTScripters regelmatig slecht en onbehoorlijk.

    dmeigenaar, je aanbod is prima. Het voldeed voor mijn behoefte destijds.
    Je code is inderdaad niet optimaal maar daar hebben je oplossingen als Udemy voor.
    Mijn advies is, volg eens een cursus, start eens een Codeignigter of Laravel project daar leer je enorm van (en ook snel!).

    Wat betreft escapen van data gaat als volgt op de msqli manier:

    PHP
    $bedrag = mysqli_real_escape_string($_POST['bedrag']);
    
    
    Connect::query("UPDATE `gebruikers` SET `silver`=`silver`+'".$bedrag."' WHERE `user_id`='".$_SESSION['id']."'");

    Persoonlijk zou ik hem dan ook nog als int casten.

    Ik zelf werk niet met MySQLi, simpelweg omdat ik persoonlijk PDO effectiever vind. Je hebt er meer functionaliteit in om waardes te definiëren (b.v. bindParam/bindValue).


    PHP
    $q = "INSERT INTO `log_useragent` (`username`,`data`,`date`) VALUES (:username, :logData, NOW())";
    $st = $db->prepare($q);
    $st->bindValue(':username', $_SESSION['user']['username'], PDO::PARAM_STR);
    $st->bindValue(':logData', $logData, PDO::PARAM_STR);
    $start = $st->execute();

    FangorN legt goed uit waarom men dit doet.

  • dmeigenaar
    Student
    Ontvangen Reacties
    9
    Berichten
    60
    • 25 januari 2019 om 21:49
    • #13

    Bedankt DarkShifty voor het duidelijk maken van het topic wat ik hier aangemaakt heb.

    Daarbij maak ik inderdaad gebruik van mysqli_real_escape_string, alleen in een function gebouwd.

    Zelf gebruik ik mysqli, maar kan ook overweg gaan met PDO.
    Alleen zelf zie ik nog niet echt een super groot voordeel om te switchen van mysqli naar PDO.

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 25 januari 2019 om 23:08
    • #14
    Citaat van darkshifty

    Persoonlijk zou ik hem dan ook nog als int casten.

    Dat heeft niet zoveel zin. Als de data afkomstig is van een externe bron is het beter om de waarde gewoon te valideren. Voldoet deze niet aan het formaat dan gewoon afkeuren / programma staken. Een typecast probeert vaak recht te buigen wat al krom is. In het gunstigste geval levert dit dan een query op die weliswaar syntactisch correct is, maar semantisch nog steeds onzinnig is.

    Neem bijvoorbeeld code.php?id=aap en je verwacht dat $_GET['id'] een getal bevat (vaak een auto increment id). Een typecast van "aap" levert je dan het cijfer 0 op. Een query met die informatie levert dan nog steeds niet het gewenste resultaat op. Valideren is bijna in alle situaties beter.

    Het geven van typehints is dan wel leuk enzo, maar tenzij je PDO::ATTR_EMULATE_PREPARES uitzet wordt volgens mij niet van het zogenaamde binary protocol gebruik gemaakt in communicatie met je (MySQL) database. Dit had dacht ik tot gevolg dat alles gewoon als string wordt behandeld en dan zijn die typehints dus nogal loos.


    Citaat van dmeigenaar

    # Anti SQLi (SQL Injection)

    Vervolgens wordt een array van verboden waardes gegeven. Realiseer je je goed dat dit een blacklist is. Het nadeel van blacklists m.b.t. securityzaken is dat als je een case vergeet dat daarmee je beveiliging effectief om zeep is. Het is beter om te definiëren wat wel toegestaan is in plaats van wat niet toegestaan is.

    Overigens is het gebruik van real_escape_string() alleen veilig in combinatie met quotes, het een is niet veilig zonder het ander. Ook dienen alle character encoderingen in de pas te lopen want escaping-functionaliteit is hier zwaar van afhankelijk.

  • AarClay
    Intermediate
    Ontvangen Reacties
    34
    Berichten
    423
    • 26 januari 2019 om 14:11
    • #15

    Ik heb wel eens gezien dat iemand ook een blacklist had van 'forbidden words' voor in een SQL-query. Eén daarvan was WHERE.

    Toen bleek dat station Purmerend Overwhere opeens niet geaccepteerd werd.. ;)

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 26 januari 2019 om 17:07
    • #16

    Zolang je alle delen die afkomstig zijn van een externe bron (de DATA delen in je SQL) op de juiste manier escaped dan is het onmogelijk om de werking van de query te veranderen. Hier hoef je dus helemaal geen ingewikkelde constructies voor te maken. Wanneer je met MySQLi werkt vergt het enkel wat discipline en als je van PDO gebruik maakt dan gebruik je als het goed is / ben je veroordeeld tot prepared statements. Ook daar geldt dat als je dit op de wijze toepast zoals het bedoeld is er eigenlijk niets mis kan gaan.

    Neemt niet weg dat je altijd waakzaam moet zijn en je je altijd af moet vragen:
    - in welke context je zit
    - waar de data vandaan komt
    - of er een speciale reden is om niet te escapen (in wat voor context dan ook), en dit anders wel te doen

  • AarClay
    Intermediate
    Ontvangen Reacties
    34
    Berichten
    423
    • 27 januari 2019 om 10:42
    • #17

    Tuurlijk. Spreekt voor sich dat ik hem toen aanbevolen om mysqli_real_escape_string() te gebruiken. Nadat ik zag dat de rest in zijn query wel prima was. :)

  • dmeigenaar
    Student
    Ontvangen Reacties
    9
    Berichten
    60
    • 27 januari 2019 om 11:44
    • #18

    Ik heb tot dus verre niet in enkele query mysqli_real_escape_string() staan.
    Enkel bij queries die wat toevoegen zoals $_POST bijvoorbeeld.

    Is het dan verstandig om uit voorzorg mysqli_real_escape_string() bij elke query toe te voegen?

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 27 januari 2019 om 15:01
    • #19

    Niet zozeer of uitsluitend uit voorzorg, maar meer om je werkwijze te simplificeren en te standaardiseren. Het is gewoon veel makkelijker om alles gewoon consequent te escapen, tenzij je een speciale (en gedocumenteerde) reden hebt om dit niet te doen.

    Zoals eerder aangegeven, als je dit niet overal doet dan kan elke keer de vraag rijzen of je bewust niet ge-escaped hebt of dit per ongeluk vergeten bent. Je zou hier dan elke keer over na moeten denken en jouw code moeten herinspecteren. Ain't nobody got time for that.

    Dit creëert ook een groter bewustzijn. Eigenlijk zou je je te allen tijde moeten afvragen als je met DATA uit een externe bron werkt of deze ge-escaped moet worden. Een externe bron kan ook jouw database zijn, deze bevat namelijk (indirect) ook USER DATA. Een goede instelling is om deze nooit te vertrouwen. Zelfs niet als deze in je database zit.

    Het is echter niet de bedoeling dat je op voorhand alles voor een bepaalde context escaped waar je deze DATA niet direct voor gebruikt. Zo is het niet verstandig om bijvoorbeeld htmlentities() over tekst heen te gooien als deze de database in gaat omdat je die op den duur mogelijk gebruikt/weergeeft in een HTML-context. Vermijd het escapen van input, het (bredere) devies is nog steeds

    filter input, escape output

    Met de nadruk op output, oftewel, als je data in een bepaalde context gebruikt, dan is het zaak om te escapen. Je zou je in ieder geval altijd moeten afvragen of er ge-escaped moet worden en dit dan ook altijd doen, en zoniet, zou je een aantekening moeten maken die aangeeft waarom dat daar niet nodig of gewenst is.

    Natuurlijk kun je de behandeling van DATA wel wat versoepelen op het moment dat geregistreerde gebruikers deze invoeren omdat je dan al iets beter weet wie deze personen zijn, maar dit zou nooit mogen resulteren in het zomaar accepteren van wat voor data dan ook of het blindelings verwerken hiervan, dit zou nog steeds aan alle (veiligheids)regels moeten voldoen. Je zult die data nog altijd valideren (filter input) en escapen in queries (escape output).

  • AarClay
    Intermediate
    Ontvangen Reacties
    34
    Berichten
    423
    • 27 januari 2019 om 15:36
    • #20
    Citaat van dmeigenaar

    Ik heb tot dus verre niet in enkele query mysqli_real_escape_string() staan.
    Enkel bij queries die wat toevoegen zoals $_POST bijvoorbeeld.

    Is het dan verstandig om uit voorzorg mysqli_real_escape_string() bij elke query toe te voegen?

    Alleen als je de waarde kan manipuleren, zoals bij $_POST, $_GET, $_COOKIE, $_SESSION, $_SERVER en $_ENV. De laatste twee zijn wat lastiger, maar het zou in de praktijk kunnen.

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    tcbhome 28 december 2025 om 13:55
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37

Gebruikers die dit topic bekijken

  • 1 Gasten
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacy Policy
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen | Beste Zetes eid kaartlezer webshop
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design