PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : VMS1.2 $_POST array nicht rekursiv



djghost2001
27.01.2008, 20:44
Hay,

da ich gerade meine scripte umstelle ist mir aufgefallen das $_POST Variablen nicht rekursiv übergeben werden.

Beispiel:

ausgabe von print_r($_POST)

so soll es aussehen:


Array
(
[min] => 1000
[max] => 1000000
[win] => Array
(
[1] => 10.00
[2] => 8.00
[3] => 6.00
[4] => 2.50
[5] => 2.50
[6] => 2.50
[7] => 4.00
[8] => 1.80
[9] => 1.80
[10] => 1.80
)

[go] => save
)



so kommt es aber an:



Array
(
[min] => 1000
[max] => 1000000
[win] => Array
[go] => save
)



gruß
djghost2001

djghost2001
27.01.2008, 21:03
hab mich jetzt so beholfen:

Datei extras.lib.php folgendes ersetzt:


// Funktion zum Variablen absichern !
function extra_securevars ($value, $name, $art) {
global $GLOBALS;
// magic_quotes = on?
if (get_magic_quotes_gpc ()) $value = stripslashes ($value);
if ($art == 'GET') $_GET[$name] = $value;
elseif ($art == 'POST') $_POST[$name] = $value;
elseif ($art == 'COOKIE') $_COOKIE[$name] = $value;
elseif ($art == 'SERVER') $_SERVER[$name] = $value;
elseif ($art == 'SESSION') $_SESSION[$name] = $value;
else die ('Fehler in der Variablenabsicherungsfunktion!');
}

durch:


// Funktion zum Variablen absichern !
function extra_securevars($array){
global $GLOBALS;
foreach($array as $key=>$value) {
if(is_array($array[$key])) {
$result[$key] = extra_securevars($array[$key]);
}
else{
if (get_magic_quotes_gpc ()) $result[$key] = stripslashes ($value);
else $result[$key] = $value;
}
}
return $result;
}


Datei extras.init.php folgendes ersetzt:


array_walk($_GET, 'extra_securevars', 'GET');
array_walk($_POST, 'extra_securevars', 'POST');
array_walk($_SERVER, 'extra_securevars', 'SERVER');
if (count ($_SESSION) > 0) array_walk($_SESSION, 'extra_securevars', 'SESSION');


durch:


$_GET = extra_securevars($_GET);
$_POST = extra_securevars($_POST);
$_SERVER = extra_securevars($_SERVER);
if (count ($_SESSION) > 0) $_SESSION = extra_securevars($_SESSION);

bitte aber trotzdem um bugfix, von mir aus auch mit meiner lösung ;)
Resultat (secure) ist das selbe wie vorher, nur das die arrays auch rekursiv durchgegangen werden.

gruß
djghost2001

Gremlin
28.01.2008, 21:10
Vielen Dank, werde deinen bugfix nehmen da dies imho die beste Lösung ist. Werde es die Tage ins VMS einbauen.

djghost2001
28.01.2008, 21:31
wie gesagt kanst du gerne machen.
hätte ich bei meinem keno die variablen nicht rekursiv über mehrere ebenen übergeben wäre es mir auch nicht aufgefallen ;)