Gå til innhold

Hvordan "vaske" alle variabler i $_POST arrayet?


Anbefalte innlegg

Har en side som tar imot en 10-talls variabler med $POST. Jeg leter etter en måte for å "vaske" innholdet mhp tagger og sql-injection.

Regner med det er noen som har gjort det før..

 

Fant denne i manualen:

<?php
foreach ($_POST as $postvarname => $rawpostcontent) 
{
array_push($_POST[$postvarname],
strip_tags(substr(trim($rawpostcontent),0,250)));
}
?>

 

Jeg får feilmelding:

Warning: First argument to array_push() needs to be an array in /sti/script.php on line 166

 

Linje 164-167 i mitt scipt:

foreach ($_POST as $postvarname => $s)

{

array_push($_POST[$postvarname],strip_tags($s));

}

 

Som dere ser er strip_tags det eneste jeg gjør foreløpig.

Klager altså på at $_POST ikke er en array...

 

-torms

Lenke til kommentar
Videoannonse
Annonse
$_POST_SQL_OK = array_map("mysql_escape_string",$_POST)

$_POST_HTML_SQL_OK = array_map("strip_tags",$_POST)

 

kanskje?

 

Den så bra ut Torbjørn!

 

Men hvordan beholde navnene på variblene?

Eller gjør jeg det nå?

Virker ikke slik, pga testet ut og fant at både tagger og sql lagres i db.

 

Eks $_POST['navn']

 

Jeg vil beholde "navn" som variabelnavn etter "vaskingen" ellers er noe av poenget borte.

 

-torms

Lenke til kommentar
Klager altså på at $_POST ikke er en array...

Feil, den klager på at $_POST[$postvarname] ikke er en array. ;)

 

Skifte til bare $_POST?

Hvordan mener du det vil se ut da lokaltog?

 

Noe sånt?

foreach ($_POST as $s){

$_POST = strips_tags($s);
}

 

Og det skal beholde varibelnavnene?

 

-torms

Lenke til kommentar
$_POST_SQL_OK = array_map("mysql_escape_string",$_POST)

$_POST_HTML_SQL_OK = array_map("strip_tags",$_POST)

 

kanskje?

 

Den så bra ut Torbjørn!

 

Men hvordan beholde navnene på variblene?

Eller gjør jeg det nå?

Virker ikke slik, pga testet ut og fant at både tagger og sql lagres i db.

 

Eks $_POST['navn']

 

Jeg vil beholde "navn" som variabelnavn etter "vaskingen" ellers er noe av poenget borte.

 

-torms

ser du at jeg tilordner nye arrays?

 

$_POST_SQL_OK inneholder all informason i $_POST, med mysql_escape_string kjørt.

 

bruk $_POST_SQL_OK['etellerannetl'] for å hente data fra denne. Jeg laget nye arrays slik at ikke originaldataene forsvinner helt.

 

evt si:

$_POST = array_map("mysql_escape_string",$_POST);

 

for å overskrive den originale $_POST

Lenke til kommentar
Noe sånt?

foreach ($_POST as $s){

$_POST = strips_tags($s);
}

 

Og det skal beholde varibelnavnene?

 

-torms

aldeles ikke... du setter $_POST (som er et array) til verdien av ett og ett element.

 

når loopen er ferdig vil $_POST være lik det siste elementet i det som tidligere var $_POST.

OK.

Dette var det jeg endte opp med og funker glimrende:

foreach ($_POST as $key => $value) { 
$value = strip_tags($value);
$value=mysql_escape_string($value); 
$$key = $value; 
}

Endret av torms
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...