Re: Re: php.ini setting

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux