회원 사진 기능 만들기 > 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건 11 페이지
Gnuboard 목록
번호 제목 글쓴이 조회 날짜
37 no
image
자료 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 18902 07-07
36 no
image
강좌 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 18948 10-24
35 no
image
정보 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 18965 04-01
34 자료 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 18969 12-16
33 no
image
정보 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 18985 10-04
32 강좌 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 18985 11-19
31 no
image
정보 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 19016 01-02
30 강좌 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 19064 07-09
열람중 강좌 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 19081 10-01
28 강좌 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 19179 11-19
27 no
image
자료 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 19209 03-24
26 자료 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 19224 02-14
25 no
image
자료 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 19280 01-02
24 강좌 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 19352 10-24
23 강좌 관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 19470 11-19

검색

회원로그인

회원가입

접속자집계

오늘
2,874
어제
3,464
최대
7,321
전체
1,377,015



internationale

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