PHP에서 POST 요청 보내기

Subodh Poudel 2023년1월30일
  1. stream_context_create()file_get_contents()함수를 사용하여 CURL-less 메서드를 사용하여 PHP에서 POST 요청 보내기
  2. CURL을 사용하여 PHP에서 POST 요청 보내기
  3. CURL을 사용하여 PHP에서 POST 요청을 보내는 사용자 정의 함수 만들기
PHP에서 POST 요청 보내기

http_build_query(),stream_context_create()file_get_contents()함수를 사용하여 CURL-less 메소드를 사용하여 PHP에서 POST 요청을 보내는 메소드를 소개합니다.

CURL을 사용하여 PHP에서 POST 요청을 보내는 방법을 보여 드리겠습니다. CURL은 HTTP 요청을 웹 서버로 보내는 데 사용됩니다. CURL 모듈은 일반적으로 PHP와 함께 사전 설치됩니다. 설치되어 있지 않은 경우 수동으로 설치하여 PHP를 사용하여 서버의 요청을 보내야합니다.

함수를 생성하여 CURL을 사용하여 PHP에서 POST 요청을 보내는 예제를 보여 드리겠습니다. 이 방법은 두 번째 방법과 매우 유사합니다. 사용자 정의 함수를 사용하여 요청을 보냅니다. 다른 포스트 데이터와 URL을 제공하는 코드를 재사용 할 수 있습니다.

stream_context_create()file_get_contents()함수를 사용하여 CURL-less 메서드를 사용하여 PHP에서 POST 요청 보내기

CURL을 사용하지 않고http_build_query(),stream_context_create()file_get_contents()와 같은 함수를 사용하여 PHP에서 POST 요청을 보낼 수 있습니다. http_build_query()함수를 사용하여 POST 요청에서 보낼 쿼리 매개 변수를 만들 수 있습니다. http 헤더, 메서드 및 내용을 지정하는 배열을 만들 수 있습니다. 스트리밍 된 데이터를 처리하기 위해stream_context_create()함수를 사용합니다. file_get_contents()함수는 URL의 내용을 문자열로 읽습니다. $_POST전역 변수를 사용하여 데이터를 읽습니다.

예를 들어http_build_query()함수를 만들고 함수 내부에 배열을 만듭니다. 배열에 각각nameid와 값Robert1을 생성합니다. 변수$postdata를 사용하여 함수를 지정하십시오. HTTP 메서드, 헤더 및 콘텐츠를 지정하는 배열을 만듭니다. method,headercontent키의 값을POST,Content-type: application/x-www-form-urlencoded및 변수$postdata로 설정합니다. 이 배열을 다른 배열http안에 래핑합니다. 배열을$opts변수에 할당합니다. $optsstream_context_create()함수에 대한 매개 변수로 사용하여$context변수에 할당합니다. file_get_contents()함수를 사용하고 URL http://localhost/request.php를 첫 번째 매개 변수로 적용하십시오. 부울 값false및 변수$context를 두 번째 및 세 번째 매개 변수로 사용하십시오. 변수$result에 함수를 할당하고 인쇄합니다. PHP 파일request.php를 만들고$_POST변수를 사용하여nameid키를 에코합니다.

아래 예에서nameid는 POST 메소드를 사용하여 게시 할 데이터입니다. request.php파일은$_POST변수를 사용하여 쿼리 매개 변수를 읽습니다.

예제 코드 :

# php 7.*
<?php
$postdata = http_build_query(
    array(
        'name' => 'Robert',
        'id' => '1'
    )
);
$opts = array('http' =>
    array(
        'method' => 'POST',
        'header' => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postdata
    )
);
$context = stream_context_create($opts);
$result = file_get_contents('http://localhost/request.php', false, $context);
echo $result;
?>
# php 7.*
<?php
echo "Name: ". $_POST['name']. "<br>";
echo "ID: ". $_POST['id'];
?>

출력:

Name: Robert
ID: 1

CURL을 사용하여 PHP에서 POST 요청 보내기

CURL은 클라이언트 URL을 나타냅니다. CURL을 사용하여 PHP 스크립트를 통해 POST 요청을 보낼 수 있습니다. PHP 버전은 다른 curl 기능을 실행하기 위해 curl 모듈이 필요합니다. 이 방법에서는 위의 방법 에서처럼http_build_query()함수를 사용하여 쿼리 매개 변수를 만듭니다. curl_init()함수를 사용하여 스크립트에서 CURL 연결을 초기화 할 수 있습니다. curl_setopt()함수를CURLOPT_URL,CURLOPT_POSTCURLOPT_POSTFIELDS와 같은 일부 옵션과 함께 사용합니다. 이러한 옵션은 각각 URL을 설정하고 HTTP POST 요청을 요청하며 데이터를 POST합니다. curl_setopt()함수를 사용하여 URL의 내용을 반환하고curl_exec()함수를 사용하여 POST 요청을 실행할 수 있습니다.

예를 들어,$fields배열에nameid키와Wayne2값을 생성합니다. http_build_query()함수의 매개 변수로 배열을 사용하고$postdata변수로 함수를 할당합니다. curl_init()함수를 사용하여 CURL 연결을 열고$ch변수에 할당합니다. 세 개의curl_setopt()함수를 작성하고$ch변수를 세 함수 모두에서 첫 번째 매개 변수로 사용하십시오. 함수의 두 번째 매개 변수로 첫 번째, 두 번째 및 세 번째 함수에 각각CURLOPT_URL,CURLOPT_POSTCURLOPT_POSTFIELDS옵션을 작성합니다. 세 함수에서 세 번째 매개 변수를 각각http://localhost/request.php,true$postdata로 설정합니다. curl_setopt()함수를 호출하고$ch변수를 첫 번째 매개 변수로,CURLOPT_RETURNTRANSFER옵션을 두 번째 매개 변수로, 부울 값true를 세 번째 매개 변수로 사용합니다. $result변수에서curl_exec($ch)함수를 호출하고$result를 인쇄합니다. 첫 번째 방법과 동일한request.php파일을 사용합니다.

예제 코드 :

#php 7.x
<?php
$fields = [
    'name' => 'Wayne',
    'id' => 2,
];
$postdata = http_build_query($fields);
$ch = curl_init()
curl_setopt($ch,CURLOPT_URL, 'http://localhost/request.php');
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
echo $result;
?>

출력:

Name: Wayne 
ID: 2

CURL을 사용하여 PHP에서 POST 요청을 보내는 사용자 정의 함수 만들기

URL 입력과 POST 데이터를 가져와 POST 요청을 보내는 메서드를 만들 수 있습니다. 이 방법은 또한 두 번째 방법으로 CURL을 사용합니다. 이전과 마찬가지로 모든 컬 기능을 사용합니다. 이 방법은 여러 URL 및 데이터에 대해 코드를 재사용하는 것을 목표로합니다.

예를 들어httpPost()함수를 만들고$url$data변수를 인수로 사용합니다. curl_init()함수를 사용하여 curl 연결을 열고$url변수를 매개 변수로 사용하십시오. 두 번째 방법에서와 같이 세 개의curl_setopt()함수를 사용합니다. curl_exec()메서드를 사용하여 POST 데이터를 실행합니다. $data배열을 만들고nameid키와Scott3값을 만듭니다. http://localhost/request.php를 URL로,$data배열을 데이터로 사용하여httpPost()메소드를 호출합니다. 이 방법은 또한 위의 두 가지 방법으로request.php파일을 사용합니다.

코드 예 :

#php 7.x
<?php
function httpPost($url, $data){
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($curl);
    echo $response;
}
$data = [
    'name' => 'Scott',
    'id' => 3
];
httpPost('http://localhost/request.php', $data);
?>

출력:

Name: Scott 
ID: 3
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn