회원 사진 기능 만들기 > Gnuboard

본문 바로가기
사이트 내 전체검색

Gnuboard

강좌 회원 사진 기능 만들기

페이지 정보

본문

  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=30550&sfl=mb_id%2C1&stx=happyjung&page=2

그누보드4에 적용한 해피정님의 팁을 그누보드5에 맞게 정리했습니다.




1. 여분 필드 설정을 합니다.

관리자 모드 → 환경설정 →  기본환경설정 → 여분필드
cf_1 : 58 (가로)
cf_2 : 58 (세로)
cf_3 : 50000 (파일용량)




2. 'data' 폴더 안에 'member_image' 폴더를 추가하고, 권한을 '707'로 변경합니다.

회원사진을 등록하면... 회원 아이디별로 자동으로 하위 폴더가 생성됩니다.


<tr>
            <th scope="row"><label for="reg_mb_1">회원사진</label></th>
            <td>
                <span class="frm_info">
                    이미지 크기는 가로 <?php echo $config[cf_1] ?>픽셀, 세로 <?php echo $config[cf_2] ?>픽셀 이하로 해주세요.<br>
                    gif만 가능하며 용량 <?php echo number_format($config[cf_3]) ?>바이트 이하만 등록됩니다.
		</span>
                <input type="file" name="mb_1" id="reg_mb_1" class="frm_input">

                <?php if ($w == 'u' && file_exists($mb_1_path)) {  ?>
                <img src="<?php echo $mb_1_url ?>" alt="회원사진">
                <input type="checkbox" name="del_mb_1" value="1" id="del_mb_1">
                <label for="del_mb_1">삭제</label>
                <?php }  ?>
            </td>
        </tr>

3. '/skin/member/basic/register_form.skin.php'에 위 소스를 추가합니다.
'회원 아이콘' 관련 소스 아랫쪽에 삽입합니다.


// 회원사진 경로
$mb_1_path = G5_DATA_PATH.'/member_image/'.substr($member['mb_id'],0,2).'/'.$member['mb_id'].'.gif';
$mb_1_url = G5_DATA_URL.'/member_image/'.substr($member['mb_id'],0,2).'/'.$member['mb_id'].'.gif';

4. '/bbs/register_form.php'에 위 소스를 추가합니다.
'회원 아이콘 경로' 아랫쪽에 삽입합니다.


$mb1_dir = G5_DATA_PATH.'/member_image/'.substr($mb_id,0,2);

// 회원사진 삭제
if (isset($_POST['del_mb_1'])) {
    @unlink($mb1_dir.'/'.$mb_id.'.gif');
}

// 회원사진 업로드
$mb_1 = "";
if (is_uploaded_file($_FILES['mb_1']['tmp_name'])) {
    if (preg_match("/(\.gif)$/i", $_FILES['mb_1']['name'])) {
        // 아이콘 용량이 설정값보다 이하만 업로드 가능
        if ($_FILES['mb_1']['size'] <= $config[cf_3]) {
            @mkdir($mb1_dir, G5_DIR_PERMISSION);
            @chmod($mb1_dir, G5_DIR_PERMISSION);
            $dest_path = $mb1_dir.'/'.$mb_id.'.gif';
            move_uploaded_file($_FILES['mb_1']['tmp_name'], $dest_path);
            chmod($dest_path, G5_FILE_PERMISSION);
            if (file_exists($dest_path)) {
                //=================================================================\
                // 090714
                // gif 파일에 악성코드를 심어 업로드 하는 경우를 방지
                // 에러메세지는 출력하지 않는다.
                //-----------------------------------------------------------------
                $size = getimagesize($dest_path);
                if ($size[2] != 1) // gif 파일이 아니면 올라간 이미지를 삭제한다.
                    @unlink($dest_path);
                else
                // 사진의 폭 또는 높이가 설정값 보다 크다면 이미 업로드 된 사진 삭제
                if ($size[0] > $config[cf_1] || $size[1] >  $config[cf_2])
                    @unlink($dest_path);
                //=================================================================\
            }
        } else {
            $msg .= '회원사진을 '.number_format($config[cf_3]).'바이트 이하로 업로드 해주십시오.';
        }
    } else {
        $msg .= $_FILES['mb_1']['name'].'은(는) gif 파일이 아닙니다.';
    }
}

5. '/bbs/register_form_update.php'에 위 소스를 추가합니다.
'회원 아이콘' 관련 소스 아랫쪽에 삽입합니다.




완성해서 적용해본 모습입니다.
(사진은 우리집 이쁜 큰공쥬...)

가입폼에는 적용되지않고... 가입 후 '정보수정'에서만 사용할 수 있습니다.



관리자 모드에서도 사용할 수 있게 다음 절차를 진행합니다.


<tr>
        <th scope="row"><label for="mb_1">회원사진</label></th>
        <td colspan="3">
            <?php echo help('이미지 크기는 <strong>넓이 '.$config['cf_1'].'픽셀 높이 '.$config['cf_2'].'픽셀</strong>로 해주세요.') ?>
            <input type="file" name="mb_1">
            <?php
            $mb1_dir = substr($mb['mb_id'],0,2);
            $mb_1 = G5_DATA_PATH.'/member_image/'.$mb1_dir.'/'.$mb['mb_id'].'.gif';
            if (file_exists($mb_1)) {
                $mb_1 = G5_DATA_URL.'/member_image/'.$mb1_dir.'/'.$mb['mb_id'].'.gif';
                echo '<img src="'.$mb_1.'" alt="">';
                echo '<input type="checkbox" name="del_mb_1" value="1">삭제';
            }
            ?>
        </td>
    </tr>

6. '/adm/member_form.php'에 위 소스를 추가합니다.
'회원 아이콘' 관련 소스 아랫쪽에 삽입합니다.


// 회원사진 삭제
    if ($del_mb_1)
        @unlink(G5_DATA_PATH.'/member_image/'.$mb_dir.'/'.$mb_id.'.gif');

    // 회원사진 업로드
    $mb_1 = "";
    if (is_uploaded_file($_FILES['mb_1']['tmp_name'])) {
        if (!preg_match("/(\.gif)$/i", $_FILES['mb_1']['name'])) {
            alert($_FILES['mb_1']['name'] . '은(는) gif 파일이 아닙니다.');
        }

        if (preg_match("/(\.gif)$/i", $_FILES['mb_1']['name'])) {
            @mkdir(G5_DATA_PATH.'/member_image/'.$mb_dir, G5_DIR_PERMISSION);
            @chmod(G5_DATA_PATH.'/member_image/'.$mb_dir, G5_DIR_PERMISSION);

            $dest_path = G5_DATA_PATH.'/member_image/'.$mb_dir.'/'.$mb_id.'.gif';

            move_uploaded_file($_FILES['mb_1']['tmp_name'], $dest_path);
            chmod($dest_path, G5_FILE_PERMISSION);

            if (file_exists($dest_path)) {
                $size = getimagesize($dest_path);
                // 사진의 폭 또는 높이가 설정값 보다 크다면 이미 업로드 된 사진 삭제
                if ($size[0] > $config['cf_1'] || $size[1] > $config['cf_2']) {
                    @unlink($dest_path);
                }
            }
        }
    }

7. '/adm/member_form_update.php'에 위 소스를 추가합니다.
'회원 아이콘' 관련 소스 아랫쪽에 삽입합니다.




완성해서 적용해본 모습입니다.


올려드리는 파일은... 삽입 위치 참조용으로만 사용하십시오.
혹시, 제가 임의로 수정한 부분이 있을지도 모르니...

왕초보입니다. 많은 지도편달 부탁드립니다~^^

자주 가는 곳 : SIR

추천0 비추천0

첨부파일

댓글목록

등록된 댓글이 없습니다.

Total 187건 9 페이지
Gnuboard 목록
번호 제목 글쓴이 조회 날짜
67 정보 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 17480 11-07
66 정보 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 18267 11-06
65 정보 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 17058 07-15
64 정보 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 31298 10-09
63 강좌 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 17858 10-09
62 기타 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 16720 10-07
61 기타 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 16687 10-02
열람중 강좌 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 18885 10-01
59 강좌 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 16502 09-19
58 정보 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 16775 09-17
57 정보 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 16925 09-16
56 기타 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 16636 09-06
55 강좌 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 16713 09-04
54 no
image
자료 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 15647 08-29
53 기타 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 16432 08-25

검색

회원로그인

회원가입

접속자집계

오늘
2,097
어제
2,146
최대
7,321
전체
1,261,080



internationale

No Copyright, Just Copyleft! 2011-2024 internationale.kr. All wrongs reserved.    Site Map    모바일 버전으로 보기