• 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. Scripting & programmeren
  4. PHP + SQL

Forum

  • Beta-testers gezocht voor Crypto-oefenplatform

    Syntax 29 januari 2026 om 16:11
  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 19 januari 2026 om 09:34
  • Developer Gezocht

    Mikevdk 10 januari 2026 om 18:57
  • Op zoek naar de legends

    Syntax 5 januari 2026 om 13:50
  • [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

Marktplaats

  • 350 Nieuwe Domeinnamen Januari 2026

    shiga 1 februari 2026 om 14:21
  • 321 Nieuwe Domeinnamen December 2025

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

    Syntax 26 december 2025 om 00:07

Beveiligen met PDO

  • L.Kok
  • 9 mei 2013 om 18:04
  • L.Kok
    Elite members
    Ontvangen Reacties
    35
    Berichten
    1.117
    Filebase Entries
    1
    • 9 mei 2013 om 18:04
    • #1

    Hallo iedereen,

    Ik ben zonet begonnen met het leren van PDO. Echter loop het niet zo vlotjes als ik hoopte.
    Ik ben een kleine source van mij aan het omzetten, om er dan mee verder te gaan.
    Ik maak mijn databaseconnectie in het bestand: config.php

    Maar dan gebruik ik in het bestand functions.php een functie waarbij ik de functie: quote van PDO gebruik.
    Het ziet er als volgt uit:

    PHP
    //Beveiligingsfuncties 
    function sql($tekst){ 
        $tekst = $db->quote($tekst); 
        $tekst = addslashes($tekst); 
        return $tekst; 
    }

    Echter krijg ik nu de error bij een query:

    PHP
    Fatal error: Call to a member function quote() on a non-object in /home/laurens/domains/****************/public_html/include/functions.php on line 16

    Weet iemand wat er fout zou kunnen zijn? Dit is de lijn waarop de functie: $sql wordt gebruikt:

    PHP
    $sql = "INSERT INTO gebruikers (gebruikersnaam, wachtwoord, ipadres, emailadres) VALUES ('".sql($gebruikersnaam)."', '".sql(encryptie($wachtwoord))."', '".$ipadres."', '".sql($emailadres)."')";  
    $db->exec($sql);

    Alvast bedankt,
    Laurens

    Met vriendelijke groet,

    L.Kok
    YoungVision

  • Guest, wil je besparen op je domeinnamen? (ad)
  • Tim
    Enlightened
    Ontvangen Reacties
    77
    Berichten
    3.686
    • 9 mei 2013 om 18:08
    • #2

    Hallo,

    $db is onbekend in de functie.
    Je moet de DB variabele als parameter meegeven, of in klasses werken en binnen de scope de waarde pakken of de globale (afgeraden) variabele pakken.

    Mvg,
    Tim

    Master student IT-recht en Master student Ondernemingsrecht & software ingenieur
    My Personal profile
    My professional profile (LinkedIn/CV)

  • tcbhome
    Intermediate
    Ontvangen Reacties
    2
    Berichten
    516
    • 9 mei 2013 om 18:19
    • #3

    Normaal zou dit zo moeten werken

    PHP
    //Beveiligingsfuncties 
    function sql($tekst){ 
        global $db;
    
    
        $tekst = $db->quote($tekst); 
        $tekst = addslashes($tekst); 
        return $tekst; 
    }

    StreetMaffia.be - Banditi.be - GunMaffia.be - Mijn-Maffia.com

  • Tim
    Enlightened
    Ontvangen Reacties
    77
    Berichten
    3.686
    • 9 mei 2013 om 18:25
    • #4
    Citaat van tcbhome

    Normaal zou dit zo moeten werken

    PHP
    //Beveiligingsfuncties 
    function sql($tekst){ 
        global $db;
    
    
        $tekst = $db->quote($tekst); 
        $tekst = addslashes($tekst); 
        return $tekst; 
    }


    Hallo,

    Afgeraden dus ;)

    Mvg,
    Tim

    Master student IT-recht en Master student Ondernemingsrecht & software ingenieur
    My Personal profile
    My professional profile (LinkedIn/CV)

  • L.Kok
    Elite members
    Ontvangen Reacties
    35
    Berichten
    1.117
    Filebase Entries
    1
    • 9 mei 2013 om 18:27
    • #5
    Citaat van tcbhome

    Normaal zou dit zo moeten werken

    PHP
    //Beveiligingsfuncties 
    function sql($tekst){ 
        global $db;
    
    
        $tekst = $db->quote($tekst); 
        $tekst = addslashes($tekst); 
        return $tekst; 
    }

    Dit heb ik zonet geprobeerd, maar dit lukt niet.

    Tim bedankt voor je antwoord, ik zal het tijdelijk oplossen door middel van een 2de parameter mee te geven aan de functie.
    Omdat ik nog niet veel verstand heb van classes, etc.

    Heeft er iemand misschien een goede tutorial over?

    Met vriendelijke groet,

    L.Kok
    YoungVision

  • bramieboy100
    Intermediate
    Berichten
    433
    • 9 mei 2013 om 18:43
    • #6

    Addslashes is totaal zinloos, quote zorgt voor de beveiliging. Addslashes was alleen voordat real escape string bestond als vervanger. Nu hebben we ook quote.

    LOL

  • Malik
    Guest
    • 9 mei 2013 om 19:01
    • #7
    PHP
    //Beveiligingsfuncties 
    function sql($db, $tekst){ 
        $tekst = $db->quote($tekst); 
        $tekst = addslashes($tekst); 
        return $tekst; 
    }
  • bramieboy100
    Intermediate
    Berichten
    433
    • 9 mei 2013 om 19:03
    • #8

    Volgens mij moet je even bovenaan je functie gobal $db; zetten.

    LOL

  • Tim
    Enlightened
    Ontvangen Reacties
    77
    Berichten
    3.686
    • 9 mei 2013 om 19:14
    • #9
    Citaat van bramieboy100

    Volgens mij moet je even bovenaan je functie gobal $db; zetten.


    Hallo,

    Lees eens wat L.kok zei en wat ik zei ;)

    Mvg,
    Tim

    Master student IT-recht en Master student Ondernemingsrecht & software ingenieur
    My Personal profile
    My professional profile (LinkedIn/CV)

  • Tieske
    Lormans Design
    Ontvangen Reacties
    11
    Berichten
    333
    • 10 mei 2013 om 07:35
    • #10

    Zoals al eerder werd vermeld is addslashes niet benodigd bij PDO,
    Zeker niet als je PDO in combinatie met de Prepare functie gaat gebruiken.
    Dan komt je query er ongeveer zo uit te zien:

    Voor elke variabele die je in een query wilt gebruiken moet je een bind param aanmaken.
    indien de variabele enkel (altijd) een getal is dan gebruik je INT ipv STR

    PHP
    try {
    	// Maken van verbindingen
    	$db = new PDO('mysql:host='.$host.';port='.$poort.';dbname='.$dbname.', $gbnaam, $wachtwoord);
    	$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    
    	$stmtdata = $db->prepare("SELECT `level` FROM `users` WHERE `login`=:login LIMIT 1");
    	$stmtdata->bindParam(':login', $login, PDO::PARAM_STR);
    	$stmtdata->execute();
    
    
    } catch(PDOException $e) {
    	echo "<pre>";
    	echo "Regelnummer: ".$e->getLine()."<br>";
    	echo "Bestand: ".$e->getFile()."<br>";
    	echo "Foutmelding: ".$e->getMessage()."<br>";
    	echo "</pre>";
    } // close catch
    
    
    // Sluiten van verbindingen
    $db = NULL;
    Toon Meer

    Met vriendelijke groet,
    Mathijs Lormans

    Designer / Sustainability expert: Lormans Design
    Design, Engineering and Development
    Bouwkundig ontwerp, tekenwerk, advies en projectmanagement!
    3D modeling en 3D printing

  • L.Kok
    Elite members
    Ontvangen Reacties
    35
    Berichten
    1.117
    Filebase Entries
    1
    • 10 mei 2013 om 08:58
    • #11

    Hallo Tieske,

    Je moet weten dat ik nog maar net begonnen ben met het leren van PDO, ben nu trouwens ook OOP aan het leren op advies van Patrick.
    Maar van je code begrijp ik dus niet zoveel.

    Is het mogelijk hierover ene duidelijke uitleg te geven?

    Met vriendelijke groet,

    L.Kok
    YoungVision

  • Tieske
    Lormans Design
    Ontvangen Reacties
    11
    Berichten
    333
    • 10 mei 2013 om 10:50
    • #12

    Beste L.Kok,

    natuurlijk is dit mogelijk.

    Van OOP heb ik persoonlijk geen kennis maar kan je wel uitleggen hoe je op een 'standaard' manier connectie maakt etc.

    Op de manier zoals ik laat zien maak je op iedere pagina een nieuwe DB connectie.

    Je begint met een Try (hier probeer je DB connectie te maken)
    in de Catch aan het einde van de pagina worden alle fouten afgevangen welke je db connectie en/of je query's geven.
    Dit is dus handig bij het debuggen van je script.

    Na de Catch word de db verbinding weer afgesloten.

    Vervolgens maak je connectie met je database, (lijkt mij duidelijk, is de 'standaard PDO manier')

    PHP
    $host = "localhost";
    $poort = ""; // normaal niet nodig
    $dbname = "database naam";
    $gbnaam = "Gebruikersnaam database";
    $wachtwoord = "wachtwoord bij gebruikersnaam database";

    Vervolgens ga je een Statment maken (een PDO query)
    Door hierbij Prepare te gebruiken ga je eerst de query naar de server sturen & word gecontroleerd of dat deze klopt (zo voorkom je half uitgevoerde query's)
    Tevens is door de prepare functie het onnodig om addslashes etc te doen. want dit word al door de prepare functie gecontroleerd.

    Enkel kun je in de prepare query geen PHP variabele invoegen. ipv voer je de 'variabelen' in met een :
    Dus inplaats van `login` = "$login" krijg je `login` = :login

    Hierna dien je de parameter :login dus een waarde mee te geven, dit doe je door de Bindparam functie.
    aan het einde van de Bindparam functie kun je aangeven of het een STR ('String' tekst of tekst gecombineerd met cijfers) of een INT (enkel cijfers betreft)
    Indien je niet zeker van de input bent dus altijd STR gebruiken.

    Ten slotte dien je de statement nog uit te voeren, met de definitieve paramters erin: dit is de execute lijn.

    Hierbij nog een link naar een tutorial waarin het nog eens duidelijk, stap voor stap word uitgelegd.
    http://www.sitemasters.be/tutorials/1/1/…HP_Data_Objects)

    Met vriendelijke groet,
    Mathijs Lormans

    Designer / Sustainability expert: Lormans Design
    Design, Engineering and Development
    Bouwkundig ontwerp, tekenwerk, advies en projectmanagement!
    3D modeling en 3D printing

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