2010-06-08 4 views
1

나는 개발중인 웹 응용 프로그램의 양식에서 http 요청을 전달하는 데 cURL을 사용하려고합니다. 본질적으로 다른 서버에서 동일한 양식을 두 번 제출해야합니다. 두 번째 서버의 경우 게시 데이터에 보안 조치를 추가하고 있습니다.

두 번째 양식의 $ _POST 정보를 완벽하게 수신 할 수 있지만 $ _FILES에 큰 문제가 있습니다. 두 가지를 분리하여 시도 했으므로 게시물 및 파일 데이터에 대한 별도 요청이 있지만 여전히 운이 없습니다. .

이것이 가능합니까?

+0

이미지 데이터를 base64로 인코딩하여 게시 요청을 보낼 수는 있지만 꼭 필요한 방식으로 작동하는지 확신 할 수 없습니다. – Sam152

답변

2
<?php 
$filename = '/foo/bar'; 
$postargs = array(
    'foo' =>'bar', //normal postfield 
    'fileentry' => '@'.$filename //be sure to give it as an absolute path!, $_FILES['fileentry']['tmp_name'] usually has this 
); 

$ch = curl_init(); 
//other stuff with curl 
curl_setopt($ch,CURL_POSTFIELDS, $postargs);//give as array for proper encoding. 
curl_exec(); 
?> 
+0

아니, 그렇지 않으면 질문에 대한 매우 이상한 대답이 될 것입니다. 그렇지 않습니까? 설명서는 친구입니다. http://www.php.net/curl_setopt – Wrikken

+0

죄송합니다. 설명서를 확인하고 답변을 삭제하기 전에 주석을 삭제했습니다. 나는 그렇지 않다는 것을 알았다. 여전히 이상한 구문입니다. 필드 값이'@ '로 시작하기를 원한다면 ... – Artefacto

+0

항상 자신을 궁금해했습니다. 필자는 PHP 컬 구현이 다소 오래되었다고 생각한다. magic_quotes가 좋은 아이디어라고 생각한 시간 등이다. :). 그리고 곧 코드가 깨어지지 않고 그것을 가져갈 수 없습니다. – Wrikken

0

당신은 할 수 있습니다 파일을 처리하지

  • 힘 PHP는 (자세한 내용은 this question 참조)
  • curl을 사용하여 file_get_contents('php://input')을 원시 우편 데이터로 제출하십시오 (자세한 내용은 this question 참조). 또한 CURLOPT_HTTPHEADER과 함께 일부 HTTP 헤더 (예 : Content-LengthContent-type)를 전달해야합니다.

이렇게하면 파일 시스템이 손상되지 않습니다.

+0

php : // 입력은 알고있는 한 enctype multipart/form-data 요청에 채워지지 않았으며 파일 업로드에는 필수 사항이므로 파일을 그렇게 보낼 수는 없습니다. 참고 : http://nl2.php.net/manual/en/wrappers.php.php – Wrikken

+0

@Wrikken : 따라서 첫 번째 부분은 "파일을 처리하지 못하도록 PHP를 실행하십시오" – Artefacto

+0

@Wrikken PHP는 요청을 받고있는 것으로 보지 않습니다. 링크 된 질문에서 답을 따르는 경우'multipart/form-data'를 사용하십시오. – Artefacto

관련 문제