CI 묻고 답하기

제목 cordova + ci + jquerymobile로 하이브리드 제작시 폼검증 및 csrf 문제
카테고리 CI 2, 3
글쓴이 강동원 작성시각 2017/01/28 23:27:21
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 20503   RSS
$(document).ready(function() {

    $('#btnSubmit').click(function() {

        if ( $('#member_id').val() == '' ) {

            alert('Enter Your ID');
            $('#member_id').focus();
            return false;

        } else if ( $('#member_pwd').val() == '' ) {

            alert('Enter Your Password');
            $('#member_pwd').focus();
            return false;

        } else {

            var member_id = $('#member_id').val();
            var member_pwd = $('#member_pwd').val();

            $.ajax({

                type: 'GET',
                dataType: 'jsonp',
                jsonpCallback: 'myCallBack',
                jsonp: 'callback',
                contentType: "application/json",
                data: {
                    'member_id': member_id,
                    'member_pwd': member_pwd
                },                
                url: 'http://abcd.com/index.php/appAuth/appLogin',

                beforeSend: function() {

                },

                success: function(callback) {

                    alert('success');
                    console.log(callback);
                },

                error: function(error) {

                    console.log(error);
                },

                complete: function() {

                }
            });
            /*
            function myCallBack(data) {

                console.log(data);
            }
            */
        }
    });
});    
	public function appLogin() {

		//$this->load->library('form_validation');

		//$this->form_validation->set_rules('member_id', 'Account', 'required|alpha_numeric');
		//$this->form_validation->set_rules('member_pwd', 'Password', 'required');

		//if ( $this->form_validation->run() == TRUE ) {

	 		$auth_data = array(
				'member_id' => $this->input->get('member_id', TRUE),
			  	'member_pwd' => $this->input->get('member_pwd', TRUE)
	  		);

	  		$result = $this->auth_m->login($auth_data);

			if ( $result ) {
   				//세션 생성
				$newdata = array(
                   'member_id'  => $result->member_id,
                   'member_name' => $result->member_name,
                   'member_email' => $result->member_email,
                   'member_group' => $result->member_group,
                   //'member_hp' => $result->$member_hp,
                   'logged_in' => TRUE
				);

				$this->session->set_userdata($newdata);

				$msg = array ( 'msg' => 'success', 'member_id' => $this->input->get('member_id') );
				echo "myCallBack(".json_encode($msg).")";
				return false;

   			} else {

   				$msg = array ( 'msg' => 'failed', 'member_id' => $this->input->get('member_id') );
   				echo "myCallBack(".json_encode($msg).")";
   				return false;
   			}

  		//} else {

  			echo validation_errors();

			$msg = array ( 'msg' => 'failed', 'member_id' => $this->input->get('member_id') );
			echo "myCallBack(".json_encode($msg).")";
			return false;
		//}
	}

 

안녕하세요  cordova + ci + jquerymobile로 하이브리드 앱을 제작 중에 있습니다.

제작중에 막히는 부분이 많네요 ㅠㅠ

 

위에 보이는 코드가 제성한 코드인데 보시다 싶이 CROSS DOMAIN 상태에서 JSONP 방식으로 데이터를 주고 받다보니 폼 검증이 전혀 안되고 있습니다 ㅠㅠ CROSS DOMAIN 상태에서는 JSONP로 데이터를 주고 받아야 하는데 GET 방식만 지원한다고 보았습니다.

고수님들은 이럴경우 어떤방식으로 폼을 검증하는지 여쭙고 싶습니다. 그리고 더욱문제는 이미지를 업로드 해야 하는데 GET방식으로는 파일업로드가 불가능할 것 같은데 어떻게 해야 할지요.

마지막으로 일반 PHP파일이라면 CI에서 제공하는  방식 

data: { '<?php echo $this->security->get_csrf_token_name(); ?>': $('#csrf').val() }, 으로 사용하면 되는데 로컬의 HTML 파일이라 CSRF체크도 어떤식으로 하면 되는지 여쭙고 싶습니다.

 

요약하자면

1.CROSS DOMAIN에서 AJAX JSONP방식으로 데이터를 주고 받을때 GET으로만 가능 한 것으로 알고있습니다. 혹여나 POST로도 가능한지? 불가능하다면 폼검증은 어떻게들 하시는지

2.GET으로 주고받을 경우 파일업로드는 어떻게 처리해야하는지

3.로컬에서 CSRF체크는 어떻게 해야하는지 입니다.

 

새해 복 많으받으시고 답변 좀 부탁드립니다 ㅠㅠ

 

 다음글 welcome page가 안뜨고 index.php의 내... (1)
 이전글 워드프레스와의 회원 및 로그인 연동 방법을 문의드립니다... (3)

댓글

변종원(웅파) / 2017/01/30 20:21:13 / 추천 0
파일전송은 post로 처리하셔야 합니다.