• 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

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

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

    saggy2829 30 september 2026 om 19:31

Marktplaats

  • [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
  • TK: Kraai.eu

    frio 25 oktober 2026 om 11:39

Array echo'en

  • Dees
  • 6 mei 2014 om 12:11
  • Dees
    Elite members
    Artikelen
    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

  • Gast, wil je besparen op je domeinnamen? (ad)
  • WHMCSAddons
    Meester
    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
    Artikelen
    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
    Meester
    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 );
    Meer tonen

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

  • FangorN
    Professional
    Artikelen
    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
    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
    Artikelen
    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);
    ?>
    Meer tonen


    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);
    ?>
    Meer tonen

    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
    Artikelen
    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
    Artikelen
    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
    Artikelen
    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
    Artikelen
    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
    Artikelen
    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
    Meester
    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
    Gevorderd
    Berichten
    424
    • 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
    Artikelen
    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
    Leerling
    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

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