AJAX를 통해 양식 필드의 내용을 PHP 스크립트에 게시하고 JavaScript를 사용하여 이스케이프합니다(field_contents). 문제는 더하기 기호가 제거되고 공백으로 대체된다는 것입니다. 더하기 기호를 안전하게 "인코딩"한 다음 PHP에서 적절하게 "디코딩"하려면 어떻게 해야 합니까?
P粉6749994202023-07-22 00:39:11
JS와 PHP에서 encodeuriccomComponent()를 사용하면 올바른 값을 받게 됩니다.
참고: PHP에서 $_GET, $_POST 또는 $_REQUEST에 액세스하면 이미 디코딩된 값을 검색하게 됩니다.
예:
JS에서:
으아악서버에서
으아악원본 HTTP 요청에만 URL 인코딩 데이터가 포함되어 있습니다.
GET 요청의 경우 URI에서 검색할 수 있습니다. $_SERVER['REQUEST_URI'] 또는 $_SERVER['QUERY_STRING']. Urlencoded POST의 경우 file_get_contents('php://stdin')
참고:
Decode()는 단일 바이트 인코딩 문자에만 적용됩니다. 전체 UTF-8 범위에서는 작동하지 않습니다.
예:
으아악참고: "%C4%80"
is equivalent to: escape('xc4x80')
UTF-8(xc4x80)에서 Ā를 나타내는 바이트 시퀀스입니다. 따라서 encodeuriccomComponent()를 사용하는 경우 서버 측은 UTF-8을 수신하고 있음을 알아야 합니다. 그렇지 않으면 PHP가 인코딩을 망칠 것입니다.