HTTP POST 양식 데이터가 문자열 값으로 서버 측에 전송되고 부울 또는 정수 등으로 캐스팅해야한다는 것을 알고 있습니다.
하지만 내 질문은 : 값의 유형을 유지하면서 cURL을 사용하여 데이터를 게시 할 수 있습니까?
예 :
다음 비트의 PHP 코드는 데이터의 PHP 배열을 준비합니다. 여기서 'age'는 int이고 'optin'은 부울 값인 다음 POST 메서드를 통해 cURL을 사용하여 테스트 스크립트로이 데이터를 보냅니다.
$url = 'http://www.sometestserver.com/test/receive.php';
$data = array (
'name' => "Firstname SecondName",
'age' => 25,
'optin' => true
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/xml'));
$response = curl_exec($ch);
그리고 위 코드가 데이터를 게시하는 테스트 스크립트에 다음 코드가 있습니다. 스크립트는 단순히 들어오는 내용을 읽고 var_dump는 모든 것을 텍스트 파일에 저장합니다.
ob_start();
var_dump($_POST);
$data = ob_get_clean();
file_put_contents(time() . ".txt", $data);
그 결과는 다음과 같습니다.
array(22) {
["name"]=>
string(21) "Firstname SecondName"
["age"]=>
string(2) "25"
["optin"]=>
string(1) "1"
}
보시다시피 모든 값은 문자열 유형으로 변환되었고 부울 true는 문자열 "1"로 변환되었습니다.
다른 테스트에서 부울 false는 빈 문자열 ''로 전송됩니다.
데이터 유형을 보존하는 방법이 있습니까? 특정 컬 옵션을 설정하여? 아니면 전혀 가능하지 않습니까?
cUrl이 항상 부울 값을 문자열로 변환하는 경우 다른 쪽 끝에서 어떤 값을 기대할 수 있는지에 대한 엄격하고 빠른 규칙이 있습니까? 즉, bool true 항상 문자열 "1"이되고 false가 항상 빈 문자열이됩니까?
당신의 도움을 주셔서 감사합니다.
이에 대한 대답은 PHP가 기본 유형을 문자열로 캐스팅하는 방식에 있습니다. HTTP 및 cURL을 통해 데이터를 문자열로 보낼 수있는 유일한 방법이므로 php는 PHP의 유형 저글링 시스템을 사용하여 문자열이 아닌 값을 문자열로 변환합니다.
PHP가 유형 저글링 시스템을 사용하여 문자열이 아닌 값을 캐스팅하는 방법에 대해서는 PHP 문서를 참조하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다