테스트 사이트 - 개발 중인 베타 버전입니다

외부 POST 값 가지고 오기 채택완료

wjh 3년 전 조회 2,255

API형식으로 외부에서 유저 데이터를 POST 값으로 받아오려고 합니다.

 

payload가 response={"mb_id":"test123","retry":1,"mb_name":"테스트".... }

 

이런식으로 HTTP & POST 로 parameter name = “response” 로 해서 전달 받는데

 

다음과 같은 방식으로 받았더니 Null 값이 됩니다. 

$arr = $_POST ? $_POST : $_GET;

foreach($arr as $key => $value) {

       foreach($value as $key1 => $value1) {

            $$key[$key1] = $value;

        }

        $$key = $value;

    }

 

Q, 위 데이터 양식을 처리하는 방식이 어떻게 되나요? 

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트

$data = json_decode(stripslashes($_POST['response']), true); // stripslashes 는 \ 제거 필요시  사용

print_r2($data);

 

echo $data['mb_id'];

로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

w
wjh
3년 전
감사합니다. 안그래도 하나씩 쪼개서 분석하니 \값이 앞뒤에 있어서 배열이 안되는 가 했습니다.
reponse를 분리하고 response 값에 \를 없애서 json_decode 디코드하니까 변수 값만 챙겨서 나오네요.
엑스엠엘
3년 전
json_decode( urldecode($_POST['response']), true);
이렇게도 테스트해 보세요.
w
wjh
3년 전
@엑스엠엘 님 감사합니다. 말씀주신 코드로도 테스트 해보겠습니다.

헌데 기본적으로 $_POST로 넘어오는 값에 자동으로 urldecode가 적용되서 넘어오지 않나요?
엑스엠엘
3년 전
\가 보인다고 해서 혹시나 해서 urldecode를 한번 더 해 봤으면 어떨까 한 겁니다.

댓글을 작성하려면 로그인이 필요합니다.

정보감사합니다 ~^^

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

핑크빈
3년 전

</p>

<p><?php</p>

<p>$_POST['mb_name'] = '어드민';</p>

<p>$_POST['mb_id'] = 'admin';</p>

<p> </p>

<p>$arr = $_POST ? $_POST : $_GET;</p>

<p> </p>

<p>foreach($arr as $key => $value) {</p>

<p>    ${$key} = $value;</p>

<p>}</p>

<p>echo $mb_name; // 어드민 출력됨</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

w
wjh
3년 전
foreach를 한단계 낮추라는 것이지요?
foreach($arr as $key => $value) {
${$key} = $value;
} 로 바꾸어도
$response 값에는 그대로 들어가는데, response 안에 있는 데이터 값을 불러오면
null이 됩니다.

던저지는 POST 값이
response={"mb_id":"test123","retry":1,"mb_name":"테스트".... } 형식이라 그런지

$mb_id = $_POST['mb_id'];
했을 시 null 값으로 들어갑니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인