Versio

array_walk_recursive

Vooral voor beginnende PHP-ers is het belangrijk om je te verdiepen in veiligheid in je scripts. Wanneer je met formulieren werkt en informatie in een database wilt stoppen moet je de invoer van de gebruiker controleren.

Nu kan de $_POST array behoorlijk lang worden, en zelfs multidimensionaal zijn. Als je bijvoorbeeld een aantal checkboxen in je formulier hebt met een arraynaam 'hobbies', dan staat in $_POST['hobbies'] ook weer een array.

Sinds PHP 5 bestaat er een functie, array_walk_recursive, die een hele array kan doorlopen en op elk arrayelement dezelfde bewerking kan doen. Dit werkt ook met multidimensionale arrays (vandaar de naam recursive)

array_walk_recursive krijgt twee argumenten mee: de array, en een string met daarin de naam van de functie die op de elementen losgelaten wordt. In die functie kun je al je standaardbeveiliging zetten. Zie verder het voorbeeld.

Ik weet dat veel hosts nog geen PHP 5 draaien, maar hopelijk duurt dat niet lang meer. En anders installeer je gewoon WAMP, dan kun je lokaal alvast zien hoe het werkt.

Happy PHP-ing!

Jan Koehoorn

Voorbeeld: http://phphulp.ikhoefgeen.nl/array_walk_recursive.php

Gesponsorde koppelingen

BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  

PHP script bestanden

  1. arraywalkrecursive

 

13 reacties op 'array_walk_recursive'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
PHP Newbie
PHP Newbie
7 jaar geleden
 
0 +1 -0 -1
is dit niet meer een uitleg van een functie dan een script?

Verder is het natuurlijk weer heel netjes, zoals we van je kennen ;-)
Jonathan -
Jonathan -
7 jaar geleden
 
0 +1 -0 -1
Netjes (zoals altijd)
Hipska BE
Hipska BE
7 jaar geleden
 
0 +1 -0 -1
een voorbeeldje? dan zie je ook al eens wat je als uitkomst van $_POST krijgt ;-)
Jan Koehoorn
Jan Koehoorn
7 jaar geleden
 
0 +1 -0 -1
@ allemaal: thanks! Een voorbeeldje is moeilijk, want mijn host draait geen PHP 5. Misschien kan iemand hem ergens neerzetten voor me? PM me de link maar.
Joren de Wit
Joren de Wit
7 jaar geleden
 
0 +1 -0 -1
Netjes hoor. Ga ik zeker gebruik zodra mijn host php5 gaat draaien.
Legolas
Legolas
7 jaar geleden
 
0 +1 -0 -1
Voor de mensen zonder PHP 5: PHP_Compat
(en dan deze functie: php_compat_array_walk_recursive())
Jonathan -
Jonathan -
7 jaar geleden
 
0 +1 -0 -1
sorry, heb geen php5 (had ik wel raargenoeg...)
Kasper Isgek
Kasper Isgek
7 jaar geleden
 
0 +1 -0 -1
Functie kende ik nog niet, maar komt zeker wel van pas om bijv. htmlentities() overheen te gooien! Bedankt!
Jan Koehoorn
Jan Koehoorn
7 jaar geleden
 
0 +1 -0 -1
Intussen staat er een voorbeeld op Jelmer's site.
Lissy Pixel
Lissy Pixel
7 jaar geleden
 
0 +1 -0 -1
Zoals we van je gewend zijn Jan heel helder en duidelijk !!!
Wederom Bedankt voor het delen van je kennis en uitleg.
Bas Kreleger
Bas Kreleger
7 jaar geleden
 
0 +1 -0 -1
Ziet er netjes uit Jan, weer wat geleerd :).

Toen ik het voorbeeld zag deed het me denken aan de functie var_dump() maar toen ik even las zag ik dat je een functie over elke waarde in de array kan halen. Lijkt me erg handig en bespaart weer werk!
Zero Dead
Zero Dead
7 jaar geleden
 
0 +1 -0 -1
Gebruik dit ook op GET-dingen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
    if($_SERVER['REQUEST_METHOD'] == 'GET') {
        array_walk_recursive($_GET, 'safe');
    }
Citroen Anoniem Graag
Citroen Anoniem Graag
6 jaar geleden
 
0 +1 -0 -1
Als ik </div><h1><b>dsjkla</b></h1> intyp gaat het niet goed, misschien is het handig om ook even htmlentities() er overheen te gooien.

Verder ziet het er prima uit!

Om te reageren heb je een account nodig en je moet ingelogd zijn.

  • Labels
  • Geen tags toegevoegd.
Get Adobe Flash player