2010-11-28 3 views
2

가능한 중복 :
“slash before every quote” problem

안녕, 나는 또 다른 PHP 문서에 텍스트 상자의 내용을 보내 $ _GET을 사용하려합니다. 그러나 한 번 (') 또는 두 번 (") 따옴표를 사용하려고 할 때마다 텍스트는 \'또는 \로 수신됩니다. str_replace를 사용하려고하면 PHP 오류가 발생합니다. 페이지를 북마크에 추가 할 수 있어야하므로 $ _POST 대신 $ _GET을 사용해야합니다. HTML 문서 :

<form action="result.php" method="get"> 
<input type="text" name="code" size="70" /> 
<input type="submit" /> 
</form> 

PHP 문서 : 서버에

<?php 
echo $_GET["code"]; 
?> 

답변

3

해제 매직 지수. 페이지 상단에 다음과 같이 코드를 작성할 수 있습니다.

<?php 
if (get_magic_quotes_gpc()) { 
    $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST); 
    while (list($key, $val) = each($process)) { 
     foreach ($val as $k => $v) { 
      unset($process[$key][$k]); 
      if (is_array($v)) { 
       $process[$key][stripslashes($k)] = $v; 
       $process[] = &$process[$key][stripslashes($k)]; 
      } else { 
       $process[$key][stripslashes($k)] = stripslashes($v); 
      } 
     } 
    } 
    unset($process); 
} 
?> 

더 좋은 옵션이 있습니다. 여기에 REad 여기 http://www.php.net/manual/en/security.magicquotes.disabling.php

+1

오히려 비활성화보다 되돌릴 수 있습니다. – Gumbo

+0

PHP 매뉴얼에서 알 수 있듯이, 그런 배열을 반복하는 사람은 누구입니까? '$ key => $ value'가있는 'foreach'가 훨씬 더 명확하지 않을까요? – alex

+0

@alex : * magic \ _quotes \ _gpc *는 값뿐만 아니라 쿼리 문자열의 내용에도 영향을줍니다. 그래서 그것은'parse_str (addslashes ($ _ SERVER [ 'QUERY_STRING']), $ _GET)'과 오히려 동일합니다. – Gumbo

1

Disable magic quotes 여기

는 코드입니다.

($_GET[]으로 반복하고 무언가를 addslashes()과 같이 사용하는 경우가 아니면). 실행으로 설정 마법 따옴표가 있다면 당신은 말할 수

...

var_dump(get_magic_quotes_gpc()); 
관련 문제