post사용법 관련 질문입니다

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
post사용법 관련 질문입니다

QA

post사용법 관련 질문입니다

본문

sql문을 post로 다른 파일에 전송하려는데 안되길래

간단한 테스트 코드를 짜서 테스트 해봤는데 역시나 안되네요..

 

a.php

<?php
include_once('../common.php');
 
$sql = "test-test-test";
 
$url = G5_PATH."/2test/b.php";
 
$curl = curl_init();
 
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => $url,
    CURLOPT_POST => 1,
    CURLOPT_POSTFIELDS => array(
        'sql' => $sql
    )
));
 
$response = curl_exec($curl);
 
curl_close($curl);
 
echo $response;
 
?>

 

 

b.php

<?php
 
include_once('../common.php');
 
$sql = $_POST['sql'];
 
echo '$sql';
 
?>

 

일단 저 url은 아마 문제 없을거에요... 대체 뭐가 문제일까요? ?

이 질문에 댓글 쓰기 :

답변 6

질문의 의도가 정확히 어떤건지는 잘 모르겠지만.

올려주신 코드로만 보고 답변을 드리자면 다음과 같이 해 볼 수 있을 것 같습니다.

 

먼저, CURLOPT_POSTFIELDS에 전송할 데이터를 배열 형태로 설정. 현재는 'sql' => $sql로 설정되어 있으며

또한, CURLOPT_RETURNTRANSFER을 1 대신 true로 설정.

마지막으로, echo '$sql';에서 작은따옴표로 둘러싸인 $sql을 출력하고 있으며, 변수를 출력하기 위해서는 작은따옴표나 큰따옴표를 사용하지 않아야 함.

 

a.php


<?php
include_once('../common.php');
$sql = "test-test-test";
$url = G5_PATH."/2test/b.php";
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_URL => $url,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => array(
        'sql' => $sql
    )
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
 
?>

 

b.php


<?php
include_once('../common.php');
$sql = $_POST['sql'];
echo $sql;
?>

 

a.php 파일에서 curl_setopt_array 함수의 CURLOPT_POSTFIELDS 부분을 배열 형태로 수정하였고, CURLOPT_RETURNTRANSFER 값을 true로 변경.

또한, b.php 파일에서 $sql 변수 출력 부분에서 작은따옴표를 제거하였으며,

SQL 문이 b.php로 POST 방식으로 전송되어 출력될 것으로 생각합니다.

 

제공해주신 코드를 살펴보면 몇 가지 문제가 있습니다. 아래에 각 문제와 그에 대한 해결 방법을 설명하겠습니다.

  1. include_once('../common.php'); 구문이 두 파일(a.php와 b.php) 모두에 포함되어 있습니다. include_once를 사용하면 같은 파일이 이미 포함되어 있다면 다시 포함하지 않습니다. 그러므로 b.php에서는 include_once('../common.php');를 제거해야 합니다.

  2. cURL 요청 설정 중 CURLOPT_POST => 1,을 사용하여 POST 요청을 보내고 있지만, b.php에서 전달받은 데이터를 실제로 사용하지 않고 $sql 변수를 그대로 출력하고 있습니다. 따라서 b.php에서 전달받은 POST 데이터를 사용하려면 echo '$sql';echo $sql;로 수정해야 합니다.

다음은 수정된 코드입니다:

a.php:


<?php
include_once('../common.php');
$sql = "test-test-test";
$url = G5_PATH."/2test/b.php";
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => $url,
    CURLOPT_POST => 1,
    CURLOPT_POSTFIELDS => array(
        'sql' => $sql
    )
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>

b.php:


<?php
include_once('../common.php');
$sql = $_POST['sql'];
echo $sql;
?>


이제 수정된 코드를 사용하면 a.php에서 b.php로 파일 전송이 정상적으로 동작할 것입니다. 그러나 코드에서 사용된 G5_PATH와 같은 상수들이 정의되어 있는지 확인해야 합니다. 필요에 따라 ../common.php 파일에서 해당 상수들을 확인하거나 정의해야 할 수 있습니다.
또다른 답변

 

제시해주신 소스 코드에서 문제가 발생하는 이유는 다음과 같습니다:

  1. 파일 경로 문제: a.phpb.php가 동일한 디렉토리에 위치해야 합니다. a.php$url 변수에 설정된 경로에서 b.php 파일을 찾을 수 있어야 합니다.

  2. common.php 파일 포함: include_once('../common.php');를 통해 common.php 파일을 포함하려고 합니다. 이 경우, common.php 파일이 올바른 경로에 위치하고 있어야 합니다. 경로가 올바른지 확인하고 필요한 경우 경로를 수정해야 합니다.

  3. CURL 설정: CURLOPT_POSTFIELDS 옵션을 사용하여 POST 데이터를 전송하려는데, 현재는 단순한 문자열인 $sql을 전달하고 있습니다. CURLOPT_POSTFIELDS는 배열 형태로 전달되어야 합니다. 따라서 아래와 같이 수정해야 합니다:


CURLOPT_POSTFIELDS => array(
    'sql' => $sql
)

echo '$sql'; 구문: b.php에서 echo '$sql';이라는 코드가 있습니다. 이 경우, 변수 $sql을 출력하지 않고 문자열 '$sql'을 그대로 출력합니다. 변수 $sql의 값을 출력하려면 아래와 같이 수정해야 합니다:


echo $sql;

위의 수정 사항을 반영하여 코드를 수정하고 실행하면 문제가 해결될 것입니다. 또한, PHP 에러 메시지를 확인하여 추가적인 문제를 파악할 수도 있습니다.

 

챗GPT 답변입니다.

참고하세요..

제가 아는게 정답은 아니겠지만  Curl 의 구조를 모르시는것 같은데..

a에서 b로 전송하는건 리턴이 존재 해야 합니다.

즉 b에서 확인을 하는것이 아닌 a에서 보내서 제대로 왔는지 확인하는거죠..

쉽게 a에서 전송한 data값이 test-test-test라고 할때

b에서 변수로 받으셨고 그럼 그냥 조건을 만들던지 아님 return "Y"; 를 던져주던지 리턴값을 주고...

a에서 $response 자체를 echo 를 찍어서 통신에 성공을 했는지 여부를 보는것일텐데요...

한번 저러게 바꿔서 확인해보세요.

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT