Versio

extract en htmlentities

Overzicht Reageren

Kasper Isgek

Kasper Isgek

10/07/2006 01:57:00
Quote Anchor link
Ik kan me herinneren dat je de extract functie kon combineren met htmlentities of htmlspecialchars. Dat stond dacht ik ergens tussen de reacties bij een tutorial, maar kon het niet meer terugvinden.

Maar goed, punt is dat het erop lijkt dat het niet werkt:
extract(htmlentities($_POST)) geeft logischerwijze een foutmelding, omdat de invoer voor htmlentities dan geen string is maar een array.
htmlentities(extract($_POST)) geeft daarentegen geen foutmelding en zou ook moeten werken, maar vooralsnog lijkt het tegen te sputteren: het blijkt nog steeds mogelijk werkende javascript code of html in te voeren.

Alleen als ik de geextracteerde (als dat een woord is tenminste) variabelen handmatig omzet naar de bijbehorende htmlentiteiten werkt het, maar dan gaat het nut van extract() weer verloren.

De vraag dus: hoe kan ik htmlentities en extract in één keer combineren, zodat ik veilige en bruikbare variabelen haal uit een via POST verzonden formulier?
 
PHP hulp

PHP hulp

24/05/2012 15:02:48
Gesponsorde koppelingen:
 
PHP Newbie

PHP Newbie

10/07/2006 02:01:00
Quote Anchor link
iets omslagtiger werken ;-)

$var = extract($_POST);
htmlentities($var);
 
Kasper Isgek

Kasper Isgek

10/07/2006 02:06:00
Quote Anchor link
Nee, dat werkt niet. Logisch ook, omdat je uit extract() meerdere variabelen haalt die je nu zou toewijzen aan één variabele.

Daarnaast is wat jij doet hetzelfde als wat ik had, htmlentities(extract($_POST)) :)
 
PHP Newbie

PHP Newbie

10/07/2006 02:09:00
Quote Anchor link
$_POST = htmlentities($_POST);
extract($_POST);

zal dan ook wel niet werken? of wel
 
Kasper Isgek

Kasper Isgek

10/07/2006 02:17:00
Quote Anchor link
Nee, htmlentities accepteert alleen een string als input. $_POST is een array, dus dat conflicteert.
 
PHP Newbie

PHP Newbie

10/07/2006 02:18:00
Quote Anchor link
dan een foreach, en daarna weer met een implode aan elkaar plakken, of zeg ik nu weet iets doms
 
Kalle P

Kalle P

10/07/2006 03:10:00
Quote Anchor link
Lees de discussie die loopt tussen de Wes en de rest over het gebruik ervan.
http://www.phphulp.nl/php/tutorials/4/366/

Jelmer geeft overigens een duidelijk reactie erbij:
En dat htmlentities(extract($_POST)) werkt betwijfel ik sterk. Extract geeft namelijk een integer (aantal goed geïmporteerde waarden) terug als return-waarde. Die wordt dus door htmlentities getrokken. Niet de variabelen.

Verder wijs ik je door naar:
http://nl3.php.net/extract
 
Kasper Isgek

Kasper Isgek

10/07/2006 14:30:00
Quote Anchor link
Dat was inderdaad de tutorial waarnaar ik op zoek was, bedankt Kalle :)

En Jelmer heeft gelijk. Dat verklaart ook meteen waarom je een getal ziet als je echo extract($_POST) doet. Had het zelf nog niet gezien, maar bedankt voor de verheldering :)
 
Bo az

Bo az

10/07/2006 14:37:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
function post_entities(&$array){
    foreach($array as $k => $v){
        if(is_array($v)){
            post_entities($v);
        }
else{
            $array[$k] = htmlentities($array[$k]);
        }
    }
}

?>

aanroepen met:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
post_entities($_POST);
extract($_POST);
?>


Ik heb het niet getest
Gewijzigd op 01/01/1970 01:00:00 door Bo az
 
Roland

Roland

10/07/2006 18:03:00
Quote Anchor link
foreach($array as $k => $v){

ik snap deze niet helemaal wat is de waarde van $k en $v ?
 
Kasper Isgek

Kasper Isgek

10/07/2006 18:06:00
Quote Anchor link
Bedankt! Het werkt :)

Edit:
$k = key
$v = value

Bijvoorbeeld $_POST['adres'], heeft als key 'adres' en als value de waarde, bv. 'phphulpweg 12'.
Gewijzigd op 01/01/1970 01:00:00 door Kasper Isgek
 



Overzicht Reageren

Get Adobe Flash player