Re: Stripslashes
| From: | Jim Lucas | Date: | Sun, 14 Jan 2007 07:57:53 +0000 |
| Subject: | Re: Stripslashes | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-247066@lists.php.net to get a copy of this message | ||
Larry Garfield wrote:
On Sunday 14 January 2007 12:01 am, Jim Lucas wrote:Up until this point, I have not had a project that I had to submit arrays via POST. Just happens that next week, I would have started my first project that does require me to submit via POST with arrays and I would have found it then, but anyways, it is fixed now. on my dev server I have PHP 4.3.11 so I had to build my own work around for array_walk_recursive, since it is only in PHP5 and newer :( I am pretty sure that it does what the function does in PHP5 Try this <plaintext><?PHP //stripslashes test function array_walk_recursive(&$a, $b, $c=null) { foreach ( $a AS $k => $v ) {This is what I use, and it has worked ever time. if ( get_magic_quotes_gpc() ) { $_POST = array_map("stripslashes", $_POST); } Jim LucasThat will break as soon as you submit an array back through a POST request, which I do rather often. :-) You need to iterate over the array, and if an item is an array, iterate over it recursively. array_walk() can be useful here. Of course, the real answer is to disable magic quotes in the first place as they are spawn of Satan. If you're using a web host that doesn't let you do so, get a real web host. Had to think about that one and test, but you are right.
if ( is_array($v) ) {
array_walk_recursive($v, $b, $c);
$a[$k] = $v;
} else {
$a[$k] = $b($v, $k, $c);
}
}
return true;
}
function my_stripslashes($a, $b, $c='') {
return stripslashes($a);
}
$data[] = addslashes("Jim's new list");
$data[] = addslashes("Tom's new list");
$data[] = array(addslashes("bill's"), addslashes("Tracy's"));
var_dump($data);
array_walk_recursive($data, "my_stripslashes");
var_dump($data);
?>
Jim Lucas