>  기사  >  백엔드 개발  >  내 $_POST 변수가 프로덕션 서버에서는 이스케이프되지만 로컬 서버에서는 이스케이프되지 않는 이유는 무엇입니까?

내 $_POST 변수가 프로덕션 서버에서는 이스케이프되지만 로컬 서버에서는 이스케이프되지 않는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-27 10:01:03470검색

Why are My $_POST Variables Escaped on My Production Server But Not My Local Server?

PHP에서 $_POST 변수에 이스케이프가 발생하는 이유

질문:

왜 $ AJAX POST 요청에서 데이터를 수신할 때 PHP 스크립트에서 _POST 변수가 이스케이프됩니까? 이 문제는 Linux에서 PHP 5.2.12를 실행하는 프로덕션 서버에서 발생하지만 Windows에서 PHP 5.3.1을 실행하는 로컬 서버에서는 발생하지 않습니다.

답변:

마법의 인용문 , 특히 magic_quotes_gpc는 Linux 서버에서 활성화되었을 가능성이 높습니다.

설명:

마법 따옴표는 자동으로 특정 문자(작은 따옴표 및 큰 따옴표, POST 요청을 포함하여 외부 소스에서 수신된 데이터에는 백슬래시 및 null 바이트)가 포함됩니다. 이러한 따옴표가 켜져 있으면 POST 변수가 참조되는 방식에 영향을 미치므로 비활성화해야 합니다.

가능한 해결 방법:

  • 마법 따옴표 비활성화 php.ini에서: 가능하다면 php.ini 구성 파일에서 매직 따옴표를 비활성화하세요.
  • stripslashes() 사용: get_magic_quotes_gpc()를 사용하여 매직 따옴표가 활성화되어 있는지 확인하세요. 그렇다면 POST 변수에서 가져온 모든 데이터에 스트립슬래시()를 사용하세요.
<code class="php">if (get_magic_quotes_gpc()) {
    $my_post_var = stripslashes($_POST["my_post_var"]);
}</code>

참고: 이 솔루션은 모든 POST 데이터에서 슬래시를 제거하므로 슬래시를 기반으로 선택적으로 사용합니다. 귀하의 요구 사항에 맞게.

위 내용은 내 $_POST 변수가 프로덕션 서버에서는 이스케이프되지만 로컬 서버에서는 이스케이프되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.