sql injection 을 피하기 위해 single quote 를 escape 시켜주는 코드를 작성해야할 필요가 있었는데, 매번 하나하나에 대해 mysql_real_escape_string 을 호출해주는 건 너무나도 번거로웠다. 뭔가 간단하게 처리할 방법이 없을까 하고 찾아봤더니 왠걸! array_map 이라는 마법의 함수를 발견할 수 있었다.
function stripslashes_deep($var){
$var = is_array($var)?
array_map('stripslashes_deep', $var) :
stripslashes($var);
return $var;
}
function mysql_real_escape_string_deep($var){
$var = is_array($var)?
array_map('mysql_real_escape_string_deep', $var) :
mysql_real_escape_string($var);
return $var;
}
if( get_magic_quotes_gpc() ){
if( is_array($_POST) )
$_POST = array_map( 'stripslashes_deep', $_POST );
if( is_array($_GET) )
$_GET = array_map( 'stripslashes_deep', $_GET );
}
if( is_array($_POST) )
$_POST = array_map( 'mysql_real_escape_string_deep', $_POST );
if( is_array($_GET) )
$_GET = array_map( 'mysql_real_escape_string_deep', $_GET);
common function 들을 정의해놓은 파일 맨 아래 저 코드를 삽입해버리니 sql injection 따위 이제 두려워할 필요가 없어졌다. 움하하핫!!
p.s) 그냥 array_map 에 stripslashes 나 mysql_real_escape_string 을 사용하게 되면 array 가 넘어온 경우 문제가 생길 수 있어서 약간 수정을 했습니다.