• Inloggen
  • Registreer
  • Zoeken
Dit topic
  • Overal
  • Dit topic
  • Dit forum
  • Artikelen
  • Pagina's
  • Forum
  • Downloads
  • Meer opties

ICTscripters

Dé plek voor IT

Dé plek voor IT

Aanmelden

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  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
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  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
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  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
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • nieuwe game

    frio 1 november 2026 om 14:08
  • Criminolz

    qevanto 31 oktober 2026 om 20:52
  • [Beta] Ottomaan: gratis browserspel met een echte, levende stad. Feedback gezocht!

    frio 27 oktober 2026 om 12:22
  • Port Father: beta van een browsergame in Antwerpen 1931, feedback welkom

    Jeroen.G 26 oktober 2026 om 10:33
  • Maffia Hotel: een browsergame waarin je van lobbygast naar spil van het hotel groeit

    eeyk 22 oktober 2026 om 18:43
  • Crime Club volledig herschreven vanaf nul

    frio 19 oktober 2026 om 23:57
  • Malavita (nieuwe maffia game, van 0)

    jos 19 oktober 2026 om 23:18
  • Herkent deze Notion-structuurscan echte problemen?

    Jeroen.G 19 oktober 2026 om 15:09

Marktplaats

  • [Aanbod] Stadskaart voor je browsergame: van menu naar klikbare stad, vanaf €200

    frio 29 oktober 2026 om 18:17
  • [Verkoop] G4G (Gangsters 4 Gangsters): volledige broncode, nieuw gebouwd in PHP 8.3 | € 30 per domein

    frio 27 oktober 2026 om 18:54
  • [TE KOOP] Malavita.be [Maffiaspel, gebaseerd op omicidio.nl, unieke code]

    Dpm_x 26 oktober 2026 om 00:22

Functie veilig?

  • Jannick
  • 25 november 2009 om 11:15
  • Gesloten
  • Jannick
    nyan nyan nyan nyan
    Berichten
    1.972
    • 25 november 2009 om 11:15
    • #1

    Haihai,
    Ik heb hier een functie voor m'n website.. En ik vraag me af of ie veilig genoeg is. Het word gebruikt om geld van contant naar bank te overzetten. Ergens denk ik dat ik wat vergeten ben... Maar wat. Wat zou ik hier nog aan kunnen verbeteren? De meegegeven $id word al gecontroleerd voordat de methode word aangeroepen.

    PHP
    function cnb($hoeveel, $id)
    {
        $sql = mysql_query("SELECT contant FROM users WHERE id = '" . $id ."'");
        $fetch = mysql_fetch_assoc($sql);
        if ($fetch['contant'] < $hoeveel)
        {
            return false;
        }
        else {
            $query = mysql_query("UPDATE users SET bank = bank + $hoeveel WHERE id = '" . $id ."'") or die(mysql_error());
            if ($query)
            {
            $query2 = mysql_query("UPDATE users SET contant = contant - $hoeveel WHERE id = '" . $id ."'") or die(mysql_error());
                if($query2)
                {
                    return true;
                }
            }
            else { return false;
            }
        }
    }
    Meer tonen

    Jannick

    Edit: Iets in code gefixed :)

  • Gast, wil je besparen op je domeinnamen? (ad)
  • RiiCk
    ondergetekende.
    Berichten
    1.091
    • 25 november 2009 om 11:18
    • #2

    Hallo Jannick,

    Na mijn weten is die wel beveiligd genoeg. Ik neem aan dat je er boven over er onder nog wel hebt staan dat ze niet meer van de bank kunnen halen dan dat ze hebben?

    Groetjes

    EDIT:
    Ik zie dat dit er al in staat sorry, Dan lijkt die mij veilig genoeg.

    Klik hier om mijn verkoop topic te bekijken

  • Jannick
    nyan nyan nyan nyan
    Berichten
    1.972
    • 25 november 2009 om 11:20
    • #3

    Jup, in een ander script word er een variabele aangeroepen die gekoppeld staat aan deze functie. Als die true is dan krijg je dat te zien, als ie false is een melding dat je niet genoeg geld hebt.

  • Niels
    -1
    Berichten
    1.360
    • 25 november 2009 om 11:34
    • #4

    $id is niet beveiligd. Maak er (int) $id van of voer mysql escape real string uit.

    -1

  • RiiCk
    ondergetekende.
    Berichten
    1.091
    • 25 november 2009 om 11:36
    • #5
    Citaat van Niels

    $id is niet beveiligd. Maak er (int) $id van of voer mysql escape real string uit.

    Zoals jannick zegt:
    De meegegeven $id word al gecontroleerd voordat de methode word aangeroepen.

    Klik hier om mijn verkoop topic te bekijken

  • Niels
    -1
    Berichten
    1.360
    • 25 november 2009 om 11:50
    • #6

    Dan nog betweter. Waarom zou je extra controles plaatsen als het zo normaal toch echt moet gebeuren. met (int) weet je tenminste zeker dat het een integer is en geen decimaal getal.

    Tevens zie je ook niet hoe $id 'gecontroleerd' wordt wel dus hoe kun je dan een klein scriptje bekijken op veiligheid.

    -1

  • Stefan.J
    Meester
    Berichten
    2.358
    • 25 november 2009 om 11:50
    • #7

    $hoeveel = '0, level = 255';

    Denk daar maar eens over na. ;)

  • Jannick
    nyan nyan nyan nyan
    Berichten
    1.972
    • 25 november 2009 om 11:57
    • #8

    Heel leuk, maar voordat de functie word aangeroepen worden zowel de ID als valuta gecontroleerd of het numeriek is, anders roept ie 'm nieteens aan... Zou het beter zijn om het binnen de functie te controleren?

    Edit:
    Wat ik nu heb:

    PHP
    function cnb((int)$hoeveel, (int)$id)
    {
        if(is_numeric($hoeveel)) {
        $sql = mysql_query("SELECT contant FROM users WHERE id = '" . $id ."'");
        $fetch = mysql_fetch_assoc($sql);
        if ($fetch['contant'] < $hoeveel)
        {
            return false;
        }
        else {
            $query = mysql_query("UPDATE users SET bank = bank + $hoeveel WHERE id = '" . $id ."'") or die(mysql_error());
            if ($query)
            {
            $query2 = mysql_query("UPDATE users SET contant = contant - $hoeveel WHERE id = '" . $id ."'") or die(mysql_error());
                if($query2)
                {
                    return true;
                }
            }
            else { return false;
            }
        }
        }
    }
    Meer tonen

    het is wel dubbel nu volgens mij, maar goed...

    Edit 2: Ok, dat werkte dus niet. *zoekt verder*

  • Stefan.J
    Meester
    Berichten
    2.358
    • 25 november 2009 om 12:09
    • #9

    Die verantwoordelijkheid kun je beter binnen de functie leggen ja. Anders zit je als nog alles eerst te valideren, en dan de functie aan te roepen.

  • Jannick
    nyan nyan nyan nyan
    Berichten
    1.972
    • 25 november 2009 om 12:10
    • #10

    Jup, heb 't aangepast :) Die (int) hoort voor de variabelen voordat ze gebruikt worden?, dus niet in bijv. function cnb($hoeveel, $id) maar in if ($fetch['contant'] < (int)$hoeveel) ?

  • Niels
    -1
    Berichten
    1.360
    • 25 november 2009 om 12:12
    • #11
    Citaat van Jannick

    Heel leuk, maar voordat de functie word aangeroepen worden zowel de ID als valuta gecontroleerd of het numeriek is, anders roept ie 'm nieteens aan... Zou het beter zijn om het binnen de functie te controleren?

    Maar dan nog. Door een FAIL van php kan het altijd mis gaan. filter_var heeft bijvoorbeeld ook nog veel fouten waardoor bijvoorbeeld niet legitieme e-mail adressen toch als TRUE returnen.

    -1

  • Jannick
    nyan nyan nyan nyan
    Berichten
    1.972
    • 25 november 2009 om 12:15
    • #12

    De controle voor e-mailadressen is volgens mij maximaal, er komen explodes, ereg's etc in voor, maar dat terzijde. Voor de geinteresseerden, ik heb 'm hiervan gebruikt: Klik.
    Dit is het script wat ik nu heb:

    PHP
    function cnb($hoeveel, $id)
    {
        if(is_numeric($hoeveel)) {
        $sql = mysql_query("SELECT contant FROM users WHERE id = '" . $id ."'");
        $fetch = mysql_fetch_assoc($sql);
        if ($fetch['contant'] < (int)$hoeveel)
        {
            return false;
        }
        else {
            $query = mysql_query("UPDATE users SET bank = bank + $hoeveel WHERE id = '" . $id ."'") or die(mysql_error());
            if ($query)
            {
            $query2 = mysql_query("UPDATE users SET contant = contant - $hoeveel WHERE id = '" . $id ."'") or die(mysql_error());
                if($query2)
                {
                    return true;
                }
            }
            else { return false;
            }
        }
        }
    }
    Meer tonen
  • Darsstar
    Vreemd
    Berichten
    1.173
    • 25 november 2009 om 16:50
    • #13
    PHP
    function cnb($boeveel, $id)
    {
        $id      = (int) $id;
        $hoeveel = abs((int) $hoeveel);
    
    
        $query = mysql_query("UPDATE `users` SET `bank` = `bank` + ".$hoeveel.", `contant` = `contant` - ".$hoeveel." WHERE `contant` >= ".$hoeveel." AND `id` = ".$id);
        return (bool) mysql_affected_rows();
    }

    Waarom zou je PHP dingen laten controleren wanneer MySQL dit ook kan en je ook nog eens een query bespaart?

    miauw!

  • Jannick
    nyan nyan nyan nyan
    Berichten
    1.972
    • 25 november 2009 om 17:21
    • #14

    Waar staat die abs() voor?
    Nou ja, ben nog redelijk aan het leren en ben nog niet bekend met dat soort dingen :P
    Edit: $query word nergens aangeroepen... Is dat nu ook overbodig geworden?

  • Darsstar
    Vreemd
    Berichten
    1.173
    • 25 november 2009 om 17:33
    • #15

    abs() geeft de absolute waarde van een getal...
    -10 wordt 10
    10 wordt 10

    miauw!

  • Jannick
    nyan nyan nyan nyan
    Berichten
    1.972
    • 25 november 2009 om 17:37
    • #16

    Nice... Dit is nu wat ik heb:

    PHP
    function cnb($hoeveel, $id)
    {
        $id      = (int) $id;
        $hoeveel = abs((int) $hoeveel);
    
    
    mysql_query("UPDATE `users` SET `bank` = `bank` + ".$hoeveel.", `contant` = `contant` - ".$hoeveel." WHERE `contant` >= ".$hoeveel." AND `id` = ".$id);
        return (bool) mysql_affected_rows();
    }

    Typfoutje verbeterd ($boeveel). Vraag na aanleiding van je code: Zijn '-haakjes niet nodig in query's? Ik doe altijd '" . $variabele . "', en zie dat jij ze niet gebruikt. Kan je dat overal zo toepassen, en welke voorwaarden zijn er daaraan?

  • Darsstar
    Vreemd
    Berichten
    1.173
    • 25 november 2009 om 17:49
    • #17

    Om strings MOET je quotes zetten...
    Als je mysql laat rekenen en het komt een string tegen zal het deze in een integer omzetten... (volgens mij)
    Dus waarom zou je er een string van maken als mysql het daarna weer in een integer omzet...

    Het "$query = " was inderdaad niet nodig...
    Ik dacht eerst even dat ik de query aan mysql_affected_rows() moest geven, dat was niet zo, en toen was ik vergeten dat stukje ook nog wel te halen.

    miauw!

  • MrMees
    De causeur!
    Berichten
    464
    • 25 november 2009 om 18:18
    • #18

    Ik denk wel dat je nog is_numeric of ctype_digit kan gebruiken om een fout aan te geven. Dat is wel zo makkelijk voor de gebruiker!

    Net zo als met hoeveelheid > contant. Als gebruiker is het wel netjes en handig om z'n fout te laten zien.


    Correct me if I am wrong

    Rembo&amp;amp;Rembo.

    http://www.criminalspoint.com/db/artikel/317.html

  • Darsstar
    Vreemd
    Berichten
    1.173
    • 25 november 2009 om 18:37
    • #19
    Citaat van MrMees

    Ik denk wel dat je nog is_numeric of ctype_digit kan gebruiken om een fout aan te geven. Dat is wel zo makkelijk voor de gebruiker!


    Doe je mooi bij je formulier?

    Citaat van MrMees

    Net zo als met hoeveelheid > contant. Als gebruiker is het wel netjes en handig om z'n fout te laten zien.


    Doe je als cnb() FALSE returned?

    miauw!

  • MrMees
    De causeur!
    Berichten
    464
    • 25 november 2009 om 19:22
    • #20
    Citaat van Darsstar


    Doe je mooi bij je formulier?

    Met javascript of iets dergelijks?

    Rembo&amp;amp;Rembo.

    http://www.criminalspoint.com/db/artikel/317.html

Registratie

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

Nu registreren Aanmelden

ICT Nieuws

  • PHP waarschuwt voor twee ernstige bugs die makkelijk uit te buiten lijken

    Aaron 22 oktober 2026 om 22:19

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
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacyverklaring
  10. Contact
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design