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개 / 댓글 5개
채택된 답변
+20 포인트
사노라가노라
2022-01-13 (목) 21:47:52
$data = json_decode(stripslashes($_POST['response']), true); // stripslashes 는 \ 제거 필요시 사용
print_r2($data);
echo $data['mb_id'];
답변에 대한 댓글 4개
2022-01-13 (목) 22:08:03
2022-01-13 (목) 22:31:13
json_decode( urldecode($_POST['response']), true);
이렇게도 테스트해 보세요.
이렇게도 테스트해 보세요.
2022-01-13 (목) 22:40:22
@엑스엠엘 님 감사합니다. 말씀주신 코드로도 테스트 해보겠습니다.
헌데 기본적으로 $_POST로 넘어오는 값에 자동으로 urldecode가 적용되서 넘어오지 않나요?
헌데 기본적으로 $_POST로 넘어오는 값에 자동으로 urldecode가 적용되서 넘어오지 않나요?
2022-01-14 (금) 12:58:44
\가 보인다고 해서 혹시나 해서 urldecode를 한번 더 해 봤으면 어떨까 한 겁니다.
스코어천국
2022-01-14 (금) 13:06:34
정보감사합니다 ~^^
2022-01-13 (목) 20:26:28
Copy
<?php
$_POST['mb_name'] = '어드민';
$_POST['mb_id'] = 'admin';
$arr = $_POST ? $_POST : $_GET;
foreach($arr as $key => $value) {
${$key} = $value;
}
echo $mb_name; // 어드민 출력됨
답변에 대한 댓글 1개
2022-01-13 (목) 21:24:13
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 값으로 들어갑니다.
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 값으로 들어갑니다.
답변을 작성하려면 로그인이 필요합니다.
reponse를 분리하고 response 값에 \를 없애서 json_decode 디코드하니까 변수 값만 챙겨서 나오네요.