2011-02-02 2 views
0

서버에 마법 인용 부호가 붙어 있으며 어떤 이유로 든 꺼질 수 없습니다 ..... 이제는 마술 따옴표로 추가 한 모든 슬래시가 제거되지만 사용자가 입력 필드 (우리는 슬래시를 허용하고 있습니다), stripslashes는 그것을 제거합니다. 어떤 도움을 주시면 감사하겠습니다마법 부호에 대한 해결 방법 PHP에서 Gpc

내가 { ","}이 앞에 경우에만 슬래시를 제거 할 정규식을 위해 노력하고

....

+0

나는 당신의 질문이 마술 따옴표를 끄는 방법이어야한다고 생각한다. –

+0

no .. 나는 그것을 끄고 싶지 않다. ..... 오히려 나는 cannot .. 마술 따옴표를 쓰고, 나는 원래의 입력을 원한다. ...................... 할 말을하려고하는 어떤 사람 –

+0

* "... stripslashes **는 ** 제거 할 것입니다."* ...? 당신은 추측하고 있습니까, 아니면 시도 했습니까? – deceze

답변

1

는이 코드에서를 사용 설정 파일 :..

내가 슬래시에 대해 걱정할 필요가 유일한 장소 다른 곳에서 나는 안전하게에는 "매직 따옴표"가 없다고 가정 할 수
// remove slashes, if they are being automatically added 
if (get_magic_quotes_gpc()) { 
    $_GET = array_map('stripslashes', $_GET); 
    $_POST = array_map('stripslashes', $_POST); 
    $_COOKIE = array_map('stripslashes', $_COOKIE); 
    $_REQUEST = array_map('stripslashes', $_REQUEST); // see ThiefMaster's comment 
} 

비록, stripslashes()은 배열에서 작동하지 않으므로 배열을 $ _GET, $ _POST 또는 $ _COOKIE의 값으로 가질 것으로 예상되는 경우 (공용 웹 페이지/시스템에서는 배열이 있어야 함)이 함수는 콜백으로 사용될 수 있습니다.

function stripslashes_recursive($value) { 
    if (is_array($value)) { 
     return array_map(__FUNCTION__, $value); 
    } 
    return stripslashes($value); 
} 

PHP 5.3 사용자는 콜백으로 폐쇄을 사용할 수 있습니다 :

$stripslashes = function($value) use(&$stripslashes) { 
    if (is_array($value)) { 
     return array_map($stripslashes, $value); 
    } 
    return stripslashes($value); 
}; 

이 추가 기능 (stripslashes_recursive())와 글로벌 범위를 오염되지 않습니다.

+0

**'$ _REQUEST' **를 잊었습니다. – ThiefMaster

+0

@ThiefMaster, 실제로는 $ _REQUEST 배열을 사용하지 않습니다. 그러나 다른 사람들이 그것을 사용한다면, 그것도 포함시켜야합니다. – binaryLV

+0

@binaryLV : "배열을 값으로 가질 것으로 예상하는 경우"구성 파일에있는 경우 예상치 못한 결과를 예상하고 매핑 기능을 실행하는 것이 가장 좋지 않겠습니까? –