2010-10-10 40 views
0

我使用的是电子贺卡程序here发送邀请的事件,并得到通知如下:为什么我会得到这个数组到字符串转换通知

注意:数组字符串转换在 /NFS/C07在线路32

这里/h01/mnt/108712/domains/christmasnativity.org/html/ecard/include/common.inc.php 是从线29至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); 
} 

任何线索可能导致此错误的通知?

谢谢。

回答

1

可避免在阵列上运行的stripslashes这样

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

但是然后数组$value内的值不会被去除。

更完整的解决方案是这样的:

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); 
    } 
    } 
} 
+0

完美!谢谢您的帮助。 – fmz 2010-10-10 20:34:23

4

$_REQUEST中的一个值是一个数组。如果变量使用诸如foo[]之类的名称,则可能发生这种情况。

0

Like Ignacio Vazquez-Abrams说,其中$value是一个数组。您可以使用下面来看看什么是一个数组(假设你是/可以将结果输出到某个地方,你可以看到他们):

$_REQUEST[$name] = stripslashes($value); 
var_dump($value); 
相关问题