简体   繁体   中英

Why am I getting this Array to String Conversion Notice

I am using an eCard program here to send invitations for an event and get the following notice:

Notice: Array to string conversion in /nfs/c07/h01/mnt/108712/domains/christmasnativity.org/html/ecard/include/common.inc.php on line 32

Here is the code from lines 29 to 33:

/* Clean up request: Remove magic quotes, if the setting is enabled. */
if (get_magic_quotes_gpc()) {
  foreach($_REQUEST as $name => $value) 
    $_REQUEST[$name] = stripslashes($value);
}

Any clues what may be causing this error notice?

Thanks.

One of the values in $_REQUEST is an array. This can happen if a variable uses a name such as foo[] .

You can avoid running stripslashes on arrays like this

if (get_magic_quotes_gpc()) {
  foreach($_REQUEST as $name => $value)
    if(!is_array($value)){
      $_REQUEST[$name] = stripslashes($value);
    }
}

but then the values inside an array $value won't get stripped.

A more complete solution would be something like this:

if (get_magic_quotes_gpc())
{
  strip_slashes_recursive($_REQUEST);
}

function strip_slashes_recursive(&$array)
{
  foreach ($array as $key => $value)
  {
    if (is_array ($value))
    {
      strip_slashes_recursive ($array[$key]);
    }
    else
    {
      $array[$key] = stripslashes($value);
    }
  }
}

Like Ignacio Vazquez-Abrams says, one of the $value 's is an array. You can use the following to see what is an array (assuming you are/can output the results to somewhere you can see them):

$_REQUEST[$name] = stripslashes($value);
var_dump($value);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM