CI 묻고 답하기

제목 CI4 form Validation check 속도 관련 문의드립니다.
카테고리 CI 4 관련
글쓴이 개발하는수달 작성시각 2022/01/27 18:05:06
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 6575   RSS

안녕하세요.

CI4로 서버를 구성하여, 공부중인 신입 개발자입니다.

 

기존 소스를 구성할때는 form sumbit시 해당 변수에 값이 있는지 없는지를 체크하여

알럿을 띄우는 형태로 작업하였습니다.

 

Ci4에서 Validation.php의 rule을 정의하여 사용하는것이 있어 해당 방법으로 구성을 하고 있습니다.

질문의 요지는 다음과 같습니다.

 

- 일반 Text로 된 데이터를 Validation check 할때는 response이 바로 오지만, 파일 업로드를 한 후 체크를 하면 1~2초 정도 뒤에 반응이 옵니다.

   파일 업로드를 했을때도 반응이 빨리 오는 소스를 구성하고 싶습니다.

 

// Controllers

public function check(){
    $data = $this->request->getPost("data");
    $thumb = $this->request->getFile('thumb_file');

    // validation check
    if (! $this->validate('archiving')) {
        $errors = $this->validator->getErrors();
        foreach ($errors as $error){
            jsonmsg("ERROR", $error);
        }
    }
}

 

// Validation

public $archiving = ([
    'data.title' => [
        'label'  => 'data.title',
        'rules'  => 'required',
        'errors' => [
            'required' => '제목을 입력해주세요.',
        ],
    ],
    'data.email' => [
        'label'  => 'data.email',
        'rules'  => 'required|valid_email',
        'errors' => [
            'required' => '이메일을 입력해주세요.',
            'valid_email' => '정확한 주소를 입력해주세요.',
        ],
    ],
    'thumb_file' => [
        'label' => 'thumb_file',
        'rules'  => 'uploaded[thumb_file]|ext_in[thumb_file,png,jpg,jpeg]',
        'errors' => [
            'uploaded' => '비정상 등록입니다.',
            'ext_in' => '등록할 수 없는 이미지 확장자입니다.',
        ],
    ]
]);

 

javascript

let add_ok = () => {

    let frm     = $("#frm")[0],
        frmData = new FormData(frm);

    frmData.append("thumb_file", $("#uploadImg_Thumb")[0].files[0]);

    $.ajax({
        type: "POST",
        headers: {'X-Requested-With': 'XMLHttpRequest'},
        url: "/core/archiving/check",
        processData: false,
        contentType: false,
        data: frmData,
        dataType: "json",
        success:function(data) {

            if( data.result != "OK" ) {
                alert(data.message);
                return;
            }

            location.reload();

        },
        error:function(r) {
            //alert(r.status);
        }
    });
}

 

감사합니다.

 다음글 CI4 공부 방향 (2)
 이전글 ci4 지역화 교체는 어떻게 하나요? (1)

댓글

테러보이 / 2022/01/28 09:38:57 / 추천 1
저는 파일을 기본 벨리데이션에서 안하고 따로 하고는 있지만 느리다라는 느낌은 못받는중입니다.
개발하는수달 / 2022/01/28 10:37:40 / 추천 0

@테러보이

감사합니다. 고화질의 이미지 파일에서만 나타나는 현상인거 같습니다. 혹시 이런경우에는 어떻게 처리를 하고 계신지 여쭤봐도 될까요?

(테스트 이미지 파일의 용량은 8.4MB)

 

제가 생각한 방안은

통신 중인경우 loading 화면을 만들어 다른 행동을 할 수 없게 막는것 말고는 잘 모르겠습니다ㅠ

한대승(불의회상) / 2022/01/28 13:18:38 / 추천 1

서버 기반 validation은 업로드가 모두 완료된후 진행되기 때문에 업로드되는 파일 사이즈에 따라 응답속도가 느려질 수 있습니다.

javascript로 validation을 미리 진행하세요.

개발하는수달 / 2022/01/28 14:39:13 / 추천 0

@한대승(불의회상)

답변 감사드립니다.

javascript로 validation 체크 후 유저에게 경고 노출 및 ajax 통신전 return을 시키고,

정상 기입한 내용에 대해서는 보안 관련(XSS) 처리 작업을 하겠습니다.

(서버단에서 validation을 다시 할 필요는 없는 걸까요 ?)

한대승(불의회상) / 2022/02/03 09:23:44 / 추천 0
javascript를 우회하는 경우가 종종 있으니 서버도 validation을 하는게 좋습니다.