테스트 사이트 - 개발 중인 베타 버전입니다

회원가입 시 이미지 용량 체크 채택완료

잔잔바리 3년 전 조회 1,491

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

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

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

 

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

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

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

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

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

 

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

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
복스리
3년 전

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

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

 

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

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

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

</p>

<p>// 회원 프로필 이미지

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) ){

        @mkdir($mb_tmp_dir, G5_DIR_PERMISSION);

        @chmod($mb_tmp_dir, G5_DIR_PERMISSION);

    }</p>

<p>    // 아이콘 삭제

    if (isset($_POST['del_mb_img'])) {

        @unlink($mb_dir.'/'.$mb_icon_img);

    }</p>

<p>    // 회원 프로필 이미지 업로드

    $mb_img = '';

    if (isset($_FILES['mb_img']) && is_uploaded_file($_FILES['mb_img']['tmp_name'])) {</p>

<p>        $msg = $msg ? $msg."\\r\\n" : '';</p>

<p>        if (preg_match($image_regex, $_FILES['mb_img']['name'])) {

            // 아이콘 용량이 설정값보다 이하만 업로드 가능

            if ($_FILES['mb_img']['size'] <= $config['cf_member_img_size']) {

                @mkdir($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']).'바이트 이하로 업로드 해주십시오.';

            }</p>

<p>        } else {

            $msg .= $_FILES['mb_img']['name'].'은(는) gif/jpg 파일이 아닙니다.';

        }

    }

}</p>

<p>

 

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

잔잔바리
3년 전
순서를 반대로 하는 방법은 생각도 못했네요 한방에 해결했습니다!! 감사합니다~~~

댓글을 작성하려면 로그인이 필요합니다.

하틴
3년 전

애초에 처음부터 가입하는 화면에서 이미지 등록할때 이미지 용량 체크를 해서 초과하면 다시 등록하라고 해주면 될 것 같습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인