질문 Q #20774
json이 작동을 안해요...
째리 2019-01-18 17:36:39

json형태가 아닌 text로받으면 정상적으로 처리되는데

왜 json으로만받으면 이상하게 조건문이 걸린 json만 리턴이됩니다.

조건문에 맞지않는데도 같은결과가나오네요;;

이것만 2일째 잡고있네요 참;;

$UID = $this->input->post('UID');
                $user = $this->user_model->getUserID(array('UID'=>$UID));
        
                if($user->UID == $UID){
                    $result = ['success' => 'false'];
                    $this->output->set_content_type('application/json');
                    echo json_encode($result,JSON_UNESCAPED_UNICODE);
                }if($user->UID != $UID){
                    $result = ['success' => 'true'];
                    $this->output->set_content_type('application/json');
                    echo json_encode($result,JSON_UNESCAPED_UNICODE);
                }

 

답변 4
#1 kaido 2019-01-18 18:16:03

구문적으로 문제가 안되는데 json이 이상하게 안넘어오는 거라면 파일 인코딩 하고도 관련있을수 있습니다.

이전에 utf8 boom 으로 파일이 저장되어 있어서 한참 헤멧적이 있긴합니다.

그외에 뭔가 보이지 않는 빈 값이 들어가 있는경우도 있으니, 파일을 지우고 깨끗하게 타이핑 해서 해결되는 경우도 있습니다.

#2 째리 2019-01-18 18:20:13

kadio // 제가 아예안넘어오면 이해라도할텐데

아래 예시처럼 if부분 값은 넘어오구요. else부분이 절때로안넘어옵니다.

db접근도 잘되고, 조건식이 틀릴리도없는데..

if (1==1){

$json = ['a'=>'b']

echo json_encode($json)

}else{

$json = ['a'=>'b']

echo json_encode($json)

}

 

#3 하마쿵쿵 2019-01-18 18:48:39

음 하나하나 확인해 보셔야 할듯 합니다.

파폭,크롬 개발자 모드에서  var_dump($_POST);  로 넘어오는 값을 찍어보세요.

1. UID, get_csrf_token_name, get_csrf_hash 정상적인지 확인,

2. 정상적으로 넘어오면,  비교문 값들에 빈문자열 포함될 수도 있어 tirm() 사용,

3. php5.4 이상이겠지만 설마하는 맘으로 [] 대신 array() 사용.

개발자 모드에서 echo $json;  echo  json_encode($json) 값이 어떻게 출력되는지

확인해 보시면 문제점을 찾을 수 있을꺼라 생각됩니다.

#4 엽토군 2019-01-18 19:00:17
혹시 $user->UID == $UID ←이 조건식이 항등식일 가능성은 없나요? 앞전 글에서 올려주신 DB조회 소스를 같이 생각해 보면 json 문제라기보다는 검증 단계에서 문제가 있는 거 아닌가 싶네요.