Re: Stripslashes

From: 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:
This is what I use, and it has worked ever time. if ( get_magic_quotes_gpc() ) { $_POST = array_map("stripslashes", $_POST); } Jim Lucas
    
That 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.
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 ) {
       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

« previous php.general (#247066) next »