외부 POST 값 가지고 오기 채택완료
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개
$data = json_decode(stripslashes($_POST['response']), true); // stripslashes 는 \ 제거 필요시 사용
print_r2($data);
echo $data['mb_id'];
답변에 대한 댓글 4개
이렇게도 테스트해 보세요.
헌데 기본적으로 $_POST로 넘어오는 값에 자동으로 urldecode가 적용되서 넘어오지 않나요?
댓글을 작성하려면 로그인이 필요합니다.
</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개
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 디코드하니까 변수 값만 챙겨서 나오네요.