On 3 October 2011 14:30, Jim Giner <jim.giner@xxxxxxxxxxxxxxxxxx> wrote: > Thanks for the code sample - a little more complex than I've ever used. Can > you explain something for me? > > The first "unset" line - what is it doing? If it is removing the item from > the $process array, then how can you then reference the value ($v) in the > very next line? I must be missing something. > > Also - I don't see the need to be stripping slashes from the $k > (keys/indices?) elements. What am I missing there? > > As I said - the lines are a something new to me and I may not be > interpreting what is going on here. Basically I see that you are processing > all of the arrays (GET,POST, etc) at once, doing each one in turn. For each > one, you then get down to the values returned to the script as a $k/$v pair > which you then check to see if it is in itself an array.(although you ask if > $v is an array, while I would have thought you'd ask if $k was an array). > Once you get to the basest element you remove the slashes. > > Thanks again - still waiting on my host company to get back to me - they've > escalated the problem of not being able to turn the quotes off. Hmmm.... <?php // Are magic quotes enabled? if (get_magic_quotes_gpc()) { // Create an array of refererences to the GET, POST, COOKIE and REQUEST super-globals. // Because these are references, any changes made to $process will also be reflected // in the GET, POST, COOKIE and REQUEST super-globals. $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST); // Iterate each element in $process, creating $key and $val // $key is the index of $process and $val is the referenced super-global array. while (list($key, $val) = each($process)) { // Iterate $val (the super global array), creating $k and $v // $k is the name of the entry in the super-global and $v is the value. foreach ($val as $k => $v) { // Remove the entry from the super-global. unset($process[$key][$k]); // Is the value an array. if (is_array($v)) { // Insert the value back into the super-global, but strip slashes from the key. $process[$key][stripslashes($k)] = $v; // Because the value is an array, we don't want to process it here. // Instead, append a reference to the value to the $process array. // It will be picked up after the other super-globals are processed by the while() line. $process[] = &$process[$key][stripslashes($k)]; } else { // As the value is not an array, insert the stripped value back into the super-global, // using a stripped key. $process[$key][stripslashes($k)] = stripslashes($v); } } } // All done, so remove $process also. unset($process); } ?> -- Richard Quadling Twitter : EE : Zend : PHPDoc @RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY : bit.ly/lFnVea -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php