• 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

  • 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
  • 🚀 WE ZOEKEN TESTERS! 🚀

    Servertjee 3 oktober 2026 om 10:56
  • Luchtvaartsoftware: Hoe technologie de moderne luchtvaart verandert

    saggy2829 30 september 2026 om 19:31
  • Hoe gebruiken jullie WhatsApp voor marketing en klantopvolging?

    aiqanobzfsej5 29 september 2026 om 12:55

Marktplaats

  • [TE KOOP] Malavita.be [Maffiaspel, gebaseerd op omicidio.nl, unieke code]

    Dpm_x 26 oktober 2026 om 00:22
  • TK: Kraai.eu

    frio 25 oktober 2026 om 11:39
  • [TE KOOP] Likeboost24.nl: complete SMM-webshop met eigen merk, volautomatische levering en betalen op de eigen pagina

    Jeroen.G 16 oktober 2026 om 14:27

Beveiligen met PDO

  • L.Kok
  • 9 mei 2013 om 18:04
  • L.Kok
    Elite members
    Berichten
    1.120
    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

  • Gast, wil je besparen op je domeinnamen? (ad)
  • Tim
    Expert
    Berichten
    3.684
    • 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
    Gevorderd
    Berichten
    517
    • 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
    Expert
    Berichten
    3.684
    • 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
    Berichten
    1.120
    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

  • bramieboy100
    Gevorderd
    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
    Gast
    • 9 mei 2013 om 19:01
    • #7
    PHP
    //Beveiligingsfuncties 
    function sql($db, $tekst){ 
        $tekst = $db->quote($tekst); 
        $tekst = addslashes($tekst); 
        return $tekst; 
    }
  • bramieboy100
    Gevorderd
    Berichten
    433
    • 9 mei 2013 om 19:03
    • #8

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

    LOL

  • Tim
    Expert
    Berichten
    3.684
    • 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
    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;
    Meer tonen

    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
    Berichten
    1.120
    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

  • Tieske
    Lormans Design
    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

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

Gebruikers die dit topic bekijken

  • 2 Gasten
  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