문제:
PHP에서 $_POST 변수는 AJAX POST 요청은 프로덕션 서버에서 이스케이프되지만 로컬 서버에서는 그대로 유지됩니다. 로컬 서버는 Windows에서 PHP 5.3.1을 실행하고, 프로덕션 서버는 Linux에서 PHP 5.2.12를 실행합니다.
이유:
두 서버 간의 불일치는 다음과 같습니다. 프로덕션 서버에서 마법 따옴표를 사용했기 때문일 수 있습니다.
마법 따옴표:
마법 따옴표는 $_GET의 특정 문자를 자동으로 이스케이프하는 PHP의 더 이상 사용되지 않는 기능입니다. , $_POST 및 $_COOKIE 변수를 사용하여 SQL 주입 및 기타 공격으로부터 보호합니다. 이스케이프 문자에는 다음이 포함됩니다.
해결책:
문제를 해결하고 두 서버 모두에서 일관된 동작을 보장하려면 프로덕션 서버에서 매직 따옴표를 비활성화할 수 있습니다. 전역적으로 php.ini에서 또는 set_magic_quotes_runtime()을 사용하여 스크립트별로 실행합니다.
마법 따옴표를 비활성화할 수 없는 경우 가져오는 POST 데이터에서 Stripslashes() 함수를 사용하여 슬래시를 수동으로 제거할 수 있습니다.
<code class="php">if (get_magic_quotes_gpc()) { $my_post_var = stripslashes($_POST["my_post_var"]); }</code>
매직 따옴표를 적절하게 비활성화하거나 처리하면 $_POST 변수가 프로덕션 서버에서 이스케이프되지 않도록 하여 AJAX POST 요청이 올바르게 작동하도록 할 수 있습니다.
위 내용은 내 AJAX POST 변수가 프로덕션 서버에서는 이스케이프되지만 로컬 서버에서는 이스케이프되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!