회원가입 시 이미지 용량 체크

회원가입 시 이미지 용량 체크

QA

회원가입 시 이미지 용량 체크

본문

회원가입 시 사용자의 사진 첨부해

홈에서 프로필 사진을 띄우는

홈페이지를 만들었는데요.

 

회원가입 할 때 이미지를 첨부하고

어드민 페이지에서 설정해놓은 이미지 용량을 초과하면

처리 페이지 단계에서 경고창이 뜨면서

DB에 저장되지 않아야하는데

회원가입은 돼버리고 이미지는 안나오는 상황입니다.

 

경고창 출력 후 회원가입을 막을 수 있는 방법이 있을까요?

이 질문에 댓글 쓰기 :

답변 2

회원가입시 구조를 먼저 확인해보시면됩니다.

/bbs/register_form_update.php  <- 회원가입 저장관련된 페이지

 

회원가입작성이 완료되는 순간 

g5_member_table <- 이 테이블이 먼저  insert를 처리한 이후에 회원 이미지는 업로드 하는 방식입니다.

만일용량이 초과되어 가입하는것을 막는다면 순서를 반대로 하시면됩니다.


// 회원 프로필 이미지
if( $config['cf_member_img_size'] && $config['cf_member_img_width'] && $config['cf_member_img_height'] ){
    $mb_tmp_dir = G5_DATA_PATH.'/member_image/';
    $mb_dir = $mb_tmp_dir.substr($mb_id,0,2);
    if( !is_dir($mb_tmp_dir) ){
        ($mb_tmp_dir, G5_DIR_PERMISSION);
        @chmod($mb_tmp_dir, G5_DIR_PERMISSION);
    }
    // 아이콘 삭제
    if (isset($_POST['del_mb_img'])) {
        @unlink($mb_dir.'/'.$mb_icon_img);
    }
    // 회원 프로필 이미지 업로드
    $mb_img = '';
    if (isset($_FILES['mb_img']) && is_uploaded_file($_FILES['mb_img']['tmp_name'])) {
        $msg = $msg ? $msg."\\r\\n" : '';
        if (preg_match($image_regex, $_FILES['mb_img']['name'])) {
            // 아이콘 용량이 설정값보다 이하만 업로드 가능
            if ($_FILES['mb_img']['size'] <= $config['cf_member_img_size']) {
                ($mb_dir, G5_DIR_PERMISSION);
                @chmod($mb_dir, G5_DIR_PERMISSION);
                $dest_path = $mb_dir.'/'.$mb_icon_img;
                move_uploaded_file($_FILES['mb_img']['tmp_name'], $dest_path);
                chmod($dest_path, G5_FILE_PERMISSION);
                if (file_exists($dest_path)) {
                    $size = @getimagesize($dest_path);
                    if (!($size[2] === 1 || $size[2] === 2 || $size[2] === 3)) { // gif jpg png 파일이 아니면 올라간 이미지를 삭제한다.
                        @unlink($dest_path);
                    } else if ($size[0] > $config['cf_member_img_width'] || $size[1] > $config['cf_member_img_height']) {
                        $thumb = null;
                        if($size[2] === 2 || $size[2] === 3) {
                            //jpg 또는 png 파일 적용
                            $thumb = thumbnail($mb_icon_img, $mb_dir, $mb_dir, $config['cf_member_img_width'], $config['cf_member_img_height'], true, true);
                            if($thumb) {
                                @unlink($dest_path);
                                rename($mb_dir.'/'.$thumb, $dest_path);
                            }
                        }
                        if( !$thumb ){
                            // 아이콘의 폭 또는 높이가 설정값 보다 크다면 이미 업로드 된 아이콘 삭제
                            @unlink($dest_path);
                        }
                    }
                    //=================================================================\
                }
            } else {
                $msg .= '회원이미지을 '.number_format($config['cf_member_img_size']).'바이트 이하로 업로드 해주십시오.';
            }
        } else {
            $msg .= $_FILES['mb_img']['name'].'은(는) gif/jpg 파일이 아닙니다.';
        }
    }
}

 

요기를 보시면 회원 프로필 이미지가 올라가는 소스인데.....이게 먼저 실행되도록 하면 정의해놓은 용량이 초과되면....alert를 뿌리고 다시 back으로 가기떄문에 회원가입이 안됩니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 674
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT