2016-03-13 73 views
0

我嘗試清除所有$_POST對我的PHP文件 我使用功能與tirmstripslashesmysql_real_escape_string

function filter($data) { 
$data = trim(htmlentities(strip_tags($data))); 
if (get_magic_quotes_gpc()) 
$data = stripslashes($data); 
$data = mysql_real_escape_string($data); 
return $data; 
} 




    foreach ($_POST as $key => $value) { 
$test="['".$key."']"; 
$_POST.$test=array(filter($value));  
    } 

我在這裏嘗試讓所有來清除它第一線$_POST名稱和值 並重新設置新值

+0

什麼是你正在試圖做的? – Iwnnay

+0

我嘗試將所有$ _POST保護到所有腳本中 –

+0

這不是您如何訪問php中的關聯數組元素。你只要做'$ _POST [$ key] = ...'如果這不是你遇到的問題,你應該知道這一點。 – Terminus

回答

0

我的猜測是你看到了如何做類似的事情,並認爲它需要像字符串一樣運行。事實並非如此。我認爲,相反,這是你正在尋找的實現代碼:

<?php 

function filter($data) { 
    $data = trim(htmlentities(strip_tags($data))); 
    if (get_magic_quotes_gpc()) { 
     $data = mysql_real_escap_string(stripslashes($data)); 
    } 
    return $data; 
} 

foreach ($_POST as $key => $value) { 
    $_POST[$key] = filter($value);  
} 

有很多偉大的help on arrays at php.net。如果你正在尋找一些更先進的東西,我會建議看看array_walk。你的代碼會更高性能和看起來像這樣:

<?php 

function filter(&$data) { 
    $data = trim(htmlentities(strip_tags($data))); 
    if (get_magic_quotes_gpc()) { 
     $data = mysql_real_escap_string(stripslashes($data)); 
    } 
} 

array_walk ($_POST, 'filter'); 
+0

非常感謝iam這麼開心 –

0

這裏是給你的函數應用到您的文章陣列一個不錯的簡單的方法:

function filter(&$data) { 
    $data = trim(htmlentities(strip_tags($data))); 
    if (get_magic_quotes_gpc()) { 
     $data = mysql_real_escap_string(stripslashes($data)); 
    } 
    return $data; 
} 

array_walk($_POST, 'filter');