开发者

Why am I getting this Array to String Conversion Notice

I am using an eCard program here to send invitations for an开发者_JAVA百科 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);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜