• 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

  • 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
  • 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 26 december 2025 om 00:07
  • Van een pixelige afbeelding naar een strakke, moderne website

    Syntax 21 december 2025 om 17:05

Array echo'en

  • Dees
  • 6 mei 2014 om 12:11
  • Dees
    Elite members
    Ontvangen Reacties
    64
    Articles
    1
    Berichten
    358
    • 6 mei 2014 om 12:11
    • #1

    Ik moet voor debugging een array laten weergeven in een string.

    PHP
    "Arguments: ".$trace['args'];

    Natuurlijk als je dit doet krijg je een Array naar string conversion. Ik heb het met print_r en var_dump geprobeerd maar dan komt het er steeds zo uit te zien:

    PHP
    array(1) { [0]=> array(1) { ["piet"]=> string(19) "Du Boi" } } array(2) { [0]=> &string(17) "SELECT * FROM jan" [1]=> &array(1) { ["piet"]=> string(19) "Du Boi" } }
    Arguments:


    Het komt dus helemaal boven aan te staan (er staan nog meer dingen boven arguments maar die zijn nu niet relevant).

    Ook heb ik het met json_encode gedaan maar dan vond ik niet passend omdat de JSON string er dan niet overzichtelijk uit ziet. Ik heb het ook met een foreach gedaan maar het kan zijn dat je een stuk of 5 arrays in elkaar hebt en dat is steeds verschillend en dat vind ik ook niet de beste oplossing.

    Tot nu toe is de beste oplossing json_encode, maar dan krijg je dus een overzichtelijke string.

    Misschien weten jullie een betere oplossing? Alvast bedankt!

    Met vriendelijke groet,

    Dees

  • Guest, wil je besparen op je domeinnamen? (ad)
  • WHMCSAddons
    Master
    Ontvangen Reacties
    88
    Berichten
    2.411
    • 6 mei 2014 om 12:28
    • #2
    PHP
    <?php echo '<pre>'.print_r($array, 1).'</pre>'; ?>

    Zo krijg je een duidelijker beeld in de levels van de array's, als dat is wat je bedoelt althans..

  • Dees
    Elite members
    Ontvangen Reacties
    64
    Articles
    1
    Berichten
    358
    • 6 mei 2014 om 12:35
    • #3

    Ja dat is precies wat ik bedoel. Had print_r al geprobeerd maar dan zonder de return te specificeren. Dankje!

    Met vriendelijke groet,

    Dees

  • WHMCSAddons
    Master
    Ontvangen Reacties
    88
    Berichten
    2.411
    • 6 mei 2014 om 12:36
    • #4

    @dees040
    Ik heb even een voorbeeld voor je online gezet, zo kan iedereen zien wat er gebeurd.

    Demo: http://84.105.129.190/demo/print_r.php

    Code:

    PHP
    <?PHP
    /**
     * Example for Ictscripters.com
     */
     if (!function_exists("print_r_pre"))
     {
    	 function print_r_pre( $array )
    	 {
    		 return '<pre>' . print_r($array, 1) . '</pre>';
    	 }
     }
     
     $array = array(
     	"Waarde 1"	=> "Value 1",
    	"Waarde 2"	=> array(
    		"Waarde 2.0"	=> "Value 2.0",
    		"Waarde 2.5"	=> "Value 2.5"
    	),
    	"Waarde 3"	=> "Value 3"
     );
     
     echo print_r_pre( $array );
    Toon Meer

    Maak er vaak een functie van, scheelt wat programmeer werk en is makkelijker te onthouden voor gebruik.

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 31 mei 2016 om 15:54
    • #5

    Hier zou nog user input in kunnen zitten.

    Met bijvoorbeeld JavaScript. Met AJAX calls.

    De bovenstaande functie vervult zijn rol wel, maar is NIET VEILIG.

    ESCAPE ALTIJD OUTPUT, tenzij je hier een speciale - en gedocumenteerde - reden voor hebt.

    Een veilig alternatief zou dus zoiets zijn (aanname: character encoding UTF-8):

    PHP
    <?php
    function dump($a) {
        echo '<pre>'.htmlspecialchars(print_r($a, true), ENT_QUOTES, 'UTF-8').'</pre>';
    }
    ?>
  • sjaakmans
    Beginner
    Ontvangen Reacties
    8
    Berichten
    40
    • 1 juni 2016 om 20:00
    • #6

    Waarom zo ingewikkeld? Voor debugging kun je toch het beste zoiets als dit doen:

    PHP
    <?php
    $array = [];
    var_dump($array);
    die();


    Eventueel kun je ook nog zoiets maken als:

    PHP
    <?php
    
    
    function dd($data) {
        var_dump($data);
        die();
    }
    
    
    dd('string'); // Geeft output en stopt het script.

    Lijkt mij makkelijker en korter.

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 1 juni 2016 om 22:13
    • #7

    Lijkt mij stukken slechter leesbaar, maar to each his own I guess. Probeer het allemaal uit en kijk wat je het fijnste vindt werken.

    var_dump() escaped trouwens geen output en dat is uit oogpunt van veiligheid / makkelijk debuggen wellicht wel niet bepaald handig.

    Vergelijk:

    PHP
    <?php
    // Force UTF-8.
    header('Content-Type: text/html; charset=UTF-8');
    
    
    $test = array('<script>while(1) alert(\'irritant he\')</script>');
    
    
    function dd($data) {
        var_dump($data);
        die();
    }
    dd($test);
    ?>
    Toon Meer


    Met:

    PHP
    <?php
    // Force UTF-8.
    header('Content-Type: text/html; charset=UTF-8');
    
    
    $test = array('<script>while(1) alert(\'irritant he\')</script>');
    
    
    function dump($a) {
     echo '<pre>'.htmlspecialchars(print_r($a, true), ENT_QUOTES, 'UTF-8').'</pre>';
    }
    
    
    dump($test);
    ?>
    Toon Meer

    Bewerkt één keer, laatst door FangorN (18 juli 2016 om 12:31).

  • stackingcoder
    Beginner
    Berichten
    1
    • 17 juli 2016 om 01:28
    • #8
    Citaat van sjaakmans

    Waarom zo ingewikkeld? Voor debugging kun je toch het beste zoiets als dit doen:

    PHP
    <?php
    $array = [];
    var_dump($array);
    die();

    Eventueel kun je ook nog zoiets maken als:

    PHP
    <?php
    
    
    function dd($data) {
        var_dump($data);
        die();
    }
    
    
    dd('string'); // Geeft output en stopt het script.

    Lijkt mij makkelijker en korter.

    Inderdaad, dd staat voor Die & Dump

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 17 juli 2016 om 13:17
    • #9

    En wat als je nu meerdere stukken data / arrays wilt dumpen? Dan is deze functie niet bruikbaar omdat deze stopt na de eerste dump.

    Functies dienen flexibel en herbruikbaar te zijn. In dat opzicht zou het misschien een verbetering zijn om een optionele tweede parameter mee te geven die aangeeft of het programma verder moet gaan / moet stoppen met het uitvoeren van code.

    PHP
    <?php
    function myDump($data, $stop=false) {
        // do something to dump $data
        // ...
        if ($stop) {
            exit;
        }
    }
    ?>


    Persoonlijk zet ik zelf altijd (tijdelijk) exit's en die's in code zelf, meestal na een of meer dumps. Dit omdat het niet echt de taak is van een functie voor het dumpen van data om de executie van het programma te stoppen. Dit zijn echt twee verschillende taken en horen dan ook eigenlijk niet thuis in een en dezelfde functie...

    Daarbij is het rechtstreeks naar het scherm dumpen van data zonder escaping om eerder genoemde redenen (en aangetoond met bijbehorend voorbeeld) niet veilig.

  • Dees
    Elite members
    Ontvangen Reacties
    64
    Articles
    1
    Berichten
    358
    • 20 juli 2016 om 09:31
    • #10
    Citaat van FangorN

    En wat als je nu meerdere stukken data / arrays wilt dumpen? Dan is deze functie niet bruikbaar omdat deze stopt na de eerste dump.

    PHP
    function dd()
    {
        array_map(function ($data) {
            var_dump($data);
        }, func_get_args());
    
    
        die(1);
    }

    Met vriendelijke groet,

    Dees

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 20 juli 2016 om 10:40
    • #11

    +1 voor het scheiden van het debuggen van data en het beeindigen van de applicatie
    -2 want nog steeds niet veilig

    Nogmaals: var_dump() escaped géén output.

    Misschien moet het gewoon een keer grondig misgaan voordat jullie tot inkeer komen. Een gebrande hand is in het algemeen de beste leermeester.

  • Dees
    Elite members
    Ontvangen Reacties
    64
    Articles
    1
    Berichten
    358
    • 20 juli 2016 om 11:36
    • #12

    Ik gebruik geen var_dump's, etc. op een production environment alleen op development environment, dus dat zal niet zo'n probleem zijn. Maar ook op mijn development environment wordt alles ge-escaped. So no worries ;) .

    Met vriendelijke groet,

    Dees

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 20 juli 2016 om 13:01
    • #13

    Waarom stel je bovenstaande oplossing dan voor?

    Bij het beantwoorden van een vraag zou je voorbij moeten gaan aan het simpelweg beantwoorden van de vraag maar ook zelf opgedane kennis en ervaring hierin moeten verwerken.

    Indien een vraag een oplossing zoekt in een verkeerde richting of wanneer de aanpak gewoon krom is dan moet je niet voortborduren op deze verkeerde richting/aanpak maar simpelweg aangeven dat de aanpak veranderd moet worden.

    Output escaping zou in alle facetten van (PHP) programmeerwerk moeten zitten, ongeacht de omgeving.

    Citaat van D.Oomens

    dus dat zal niet zo'n probleem zijn.

    Het is niet heel erg ver gezocht dat de data van je development omgeving een afspiegeling is van je live omgeving. Het is ook niet altijd zo dat een development omgeving compleet is afgeschermd van de buitenwereld.

    Ook is het niet gegarandeerd dat je enkel data dumpt op een ontwikkelomgeving. Soms gebeurt het wel eens dat bepaalde kwesties alleen "live gedebugged" kunnen worden.

    Het (soms) niet escapen van (user) data vormt te allen tijde een potentieel risico. Dit risico kun je niet het hoofd bieden door simpelweg te zeggen "dat zal niet zo'n probleem zijn". Assumption is the mother of all f*ckups. Op eenzelfde wijze kun je daaropvolgende inbraken / veiligheidslekken / diefstal van gevoelige informatie van zo'n foutieve aanname niet verexcuseren met "oeps".

    Citaat van D.Oomens

    Maar ook op mijn development environment wordt alles ge-escaped. So no worries .

    Hier gaat het ook niet om. Je stelt iets voor (waarvan je weet) dat (het) (potentieel) onveilig is. Mja, no worries, zo lang je je eigen schaapjes maar op het droge hebt?

    Predik ajb geen slechte programmeergewoontes, hoe onschuldig deze ook in eerste instantie lijken te zijn. Je weet namelijk niet hoe je codesnippets worden gebruikt.

    Nnet zoals met medicijnen zou een codesnippet met een bijsluiter of in ieder geval een "word of warning" of toelichting moeten komen... Simpelweg een codefragment plaatsen zonder enig commentaar vertelt je niets over het wat en (wellicht nog belangrijker) ook niet over het waarom. Je kunt hier dan ook niet uit afleiden of deze met een zekere rationele gedachtengang totstand is gekomen, of zo maar uit de mouw wordt geschud in een onbewaakt moment. Voor minder ervaren gebruikers is dit onderscheid minder duidelijk. Als je hier code plaatst moet je deze ook kunnen onderbouwen.

    Bewerkt één keer, laatst door FangorN: spelling (20 juli 2016 om 17:09).

  • WHMCSAddons
    Master
    Ontvangen Reacties
    88
    Berichten
    2.411
    • 24 juli 2016 om 21:01
    • #14

    @FangorN
    Wie zijn code live gaat debuggen is ook niet bepaald slim bezig, bij mij draait een kopie altijd op een development omgeving. Ga live niet zomaar code outputten omdat 'iets' even niet werkt zoals het verwacht wordt..

  • AarClay
    Intermediate
    Ontvangen Reacties
    34
    Berichten
    423
    • 24 juli 2016 om 22:46
    • #15

    En als het écht moet, gooi er dan even een ip-whitlelist op met jouw IP.

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 25 juli 2016 om 03:26
    • #16

    @WMDiensten
    Lees nogmaals wat ik zeg/typ. Dit heeft niets te maken met al dan niet "slim bezig zijn". Het gaat erom welke mogelijkheden je tot je beschikking hebt. En als je dan niet anders kunt dan live debuggen kun je er beter voor zorgen dat dit veilig gebeurt inderdaad. Dit is altijd (het) belangrijk(ste). Dat laatste was eigenlijk mijn punt...

    Maar prima als je een draai wilt geven aan wat ik zeg, en dat je het daar dan vervolgens niet mee eens bent :p.

  • stijnhau
    Student
    Ontvangen Reacties
    3
    Berichten
    174
    • 28 juli 2016 om 19:49
    • #17

    @WMDiensten
    live code debuggen kan onder bepaalde gevallen wel noodzakelijk zijn. Als je bevoorbeeld een groot project hebt die heel veel instellingen heeft waarbnij een bepaalde koppeling bevoorbeeld niet werkt.
    Probeer dat maar eens na te doen.
    Bevoorbeeld een koppeling met een plc die aan een machine hangt van een miljoen euro.

    Check mijn projecten op stijnhau.be

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