미스터리 풀기: "method="post" enctype="text/plain" 비호환성의 수수께끼 이해
웹 개발에서는 enctype 속성이 다음과 같이 설정된 경우 POST 메서드를 통해 전송된 양식 데이터가 의도한 대상에 도달하지 못할 수 있는 경우가 종종 있습니다. "text/plain." 우리는 이 문제의 복잡성을 조사하여 복잡성을 풀고 이러한 비호환성의 근본 원인을 찾으려고 합니다.
심층 조사: PHP가 $_POST를 채우지 못하는 이유
문제의 핵심은 PHP가 "text/plain"을 처리할 수 없다는 것입니다. $HTTP_RAW_POST_DATA 변수에 값을 할당했음에도 불구하고 PHP는 $_POST 배열을 양식 데이터로 채우지 못합니다. 이는 단순한 실수가 아니라 의도적인 설계 결정입니다.
GET과 POST 구별 : 인코딩 이야기
GET 방식과 POST 방식을 구별하는 것이 중요합니다. GET 변수는 URL 내의 쿼리 문자열을 구성하므로 URL 인코딩이 필요합니다. enctype 속성에 관계없이 브라우저는 자동으로 GET 변수를 URL 인코딩하여 "text/plain"을 렌더링하지 않습니다.
반대로, POST를 사용하면 변수가 URL의 일부가 아니라 HTTP 요청의 최종 헤더로 전송됩니다. 여기에서는 "text/plain" 및 "application/x-www-form-urlencoded" 인코딩 옵션을 사용할 수 있지만 후자만이 모호하지 않은 솔루션을 제공합니다.
"text/ plain": 주의 사항
"text/plain"은 간단한 인코딩처럼 보이지만 숨겨진 함정을 품고 있습니다. 여러 값 사이를 구분하는 메커니즘이 부족하여 잠재적으로 입력 데이터에 대한 모호한 해석이 발생할 수 있습니다. 예를 들어 다음 형식을 고려해보세요.
<form method="post" enctype="text/plain" action="proc.php"> <textarea name="input1">abc input2=def</textarea> <input name="input2" value="ghi" /> <input type="submit"> </form>
이 형식이 "input1" 및 "input2" 값을 예상하는 PHP 스크립트에 데이터를 제출하면 모호성이 발생합니다.
print($HTTP_RAW_POST_DATA);
에 따라 해석에 따라 출력은 다음과 같습니다. be:
"에는 이러한 모호함이 없습니다. application/x-www-form-urlencoded" 인코딩으로 안정적인 데이터 보장 검색합니다.
위 내용은 'method=\'post\' enctype=\'text/plain\''이 PHP의 $_POST 배열과 호환되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!