2010-10-10 36 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); 
相關問題