2012-10-30 4 views
-2

에서 데이터를 정리하는 데 도움이 필요합니다. 양식에 html을 입력하면 예를 들어 수평 규칙을 입력하면 $ 값이 strip_tags를 통해 전달 되더라도 반향 출력에 표시됩니다.

function sanitizeString($var){ 
    $var = strip_tags($var); 
    $var = htmlentities($var); 
    return stripslashes($var); 
} 

foreach($_POST as $key => $value){ 
    echo $key."<br>"; 
    sanitizeString($value); 
    echo $value."<br>"; 
} 

답변

2

실제로는 변경되지 않습니다. $value. 반환 값을 버리고 있습니다. $value = sanitizeString($value);으로 시도해보십시오.

+0

또는 속기'echo sanitizeString ($ value); –

+0

그랬습니다. 이 포럼에서 얼마나 빠른 응답이 올지 믿을 수 없습니다. 나는 당신의 대답을 받아 들일려고했으나 오렌지색 상자가 9 분을 기다려야한다는 말을했다. – jimeast

0

당신은

$_POST = array_map(function ($var) { 
    return stripslashes(htmlentities(strip_tags($var))); 
}, $_POST); 


foreach ($_POST as $key => $value) { 
    echo "$key = $value <br>"; 
} 

시도 할 수 있습니다 또는 더 나은 창턱 사용 filter_var

$_POST = array_map(function ($var) { 
    return filter_var($var, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH | FILTER_FLAG_STRIP_LOW); 
}, $_POST); 

차이

$var = "index.php?name=guest<script>alert('attacked')</script>"; 
var_dump(stripslashes(htmlentities(strip_tags($var)))); 
var_dump(filter_var($var, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH | FILTER_FLAG_STRIP_LOW)); 

출력

string 'index.php?name=guestalert('attacked')' (length=37) 
string 'index.php?name=guestalert(&#39;attacked&#39;)' (length=45)