회원 사진 기능 만들기 > 그누보드5 팁자료실

그누보드5 팁자료실

회원 사진 기능 만들기 정보

회원 사진 기능 만들기

첨부파일

member_photo_2017.08.02.7z (13.1K) 167회 다운로드 2017-08-02 09:56:15

본문

http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=30550&sfl=mb_id%2C1&stx=happyjung&page=2

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


html로 작성했더니... 보이지않는 소스가 더러 있어서... 텍스트로 바꾸어 작성했습니다.
이미지는 귀찮더라도 클릭해서 보시기를...


[http://internationale.kr/data/file/info_gnuboard/1889776576_ThOokcpr_2014.10.02_01.png]

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

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


[http://internationale.kr/data/file/info_gnuboard/1889776576_A4wbUjyi_2014.10.02_02.png]

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'에 위 소스를 추가합니다.
'회원 아이콘' 관련 소스 아랫쪽에 삽입합니다.


[http://internationale.kr/data/file/info_gnuboard/1889776576_w6dAVYo5_2014.10.02_03.png]

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

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



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


<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'에 위 소스를 추가합니다.
'회원 아이콘' 관련 소스 아랫쪽에 삽입합니다.


[http://internationale.kr/data/file/info_gnuboard/1889776576_GuWRTorM_2014.10.02_04.png]

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


올려드리는 파일은... 삽입 위치 참조용으로만 사용하십시오.
그누보드 업데이트나 사용자가 수정한 부분이 있을 수도 있기 때문입니다.
추천
6

댓글 11개

자세히 설명하여 주셔서 회원사진 추가하였습니다.
(사진은 꼭 gif 이어야만 되어있는데 jpg나 png는 안되나요?)
감사합니다.
그런데 첨부파일 속에 '/adm/member_form.php'과 '/adm/member_form_update.php'이 아닌 memo_form.php 와 memo_form_update.php 가 들어가 있습니다.
그대로 따라했는데 적용한 모습처럼은 나오지만 댓글에는 적용이 안되네요 버전이 gnuboard5.0.38.tar 에서는 안되는건가요? 아니면 다른 옵션 같은걸 체크해야 하는건가요? 아니면 DB도 손을 봐야 하는건가요?
오래 전에 올려주신 글이지만 찾고 있던 기능이라 적용해 보았는데
정상적으로 작동이 되지 않아 문의드립니다.
고수님들 도와주십시요~^^

영카트 5.2.9.1 버전 입니다.

사용자화면 --> 회원정보수정에서 회원사진을 첨부하면 정상적으로 업로드가 되지 않습니다.ㅠㅠ
소스는 똑같이 삽입했습니다.

어느 부분을 확인해 보아야 할까요?

(참고로 관리자화면 --> 회원관리>수정에서는 회원사진을 첨부하면 정상적으로 업로드가 됩니다.)
전체 2,432 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

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