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

회원가입시 파일첨부 채택완료

웹프리죤 9년 전 조회 4,300

회원가입시 회원아이콘이 현재는 gif 만 가능하게 되어 있는데요

이미지파일은 다 되게 할려면 어떻게 수정되어야 할까요..

 

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

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

답변 4개

채택된 답변
+20 포인트
9년 전

preg_match("/(\.gif)$/i", $_FILES['mb_icon']['name']) => preg_match('/\.(gif|jpg|png|jpeg)$/', $_FILES['mb_icon']['name']) 



</p><pre>// 회원 아이콘
$mb_dir = G5_DATA_PATH.'/member/'.substr($mb_id,0,2);
 
// 아이콘 삭제
if (isset($_POST['del_mb_icon'])) {
    @unlink($mb_dir.'/'.$mb_id.'.gif');
}
 
$msg = "";
 
// 아이콘 업로드
$mb_icon = '';
if (isset($_FILES['mb_icon']) && is_uploaded_file($_FILES['mb_icon']['tmp_name'])) {
    if (preg_match('/\.(gif|jpg|png|jpeg)$/', $_FILES['mb_icon']['name'])) {
        // 아이콘 용량이 설정값보다 이하만 업로드 가능
        if ($_FILES['mb_icon']['size'] <= $config['cf_member_icon_size']) {
            @mkdir($mb_dir, G5_DIR_PERMISSION);
            @chmod($mb_dir, G5_DIR_PERMISSION);
            $dest_path = $mb_dir.'/'.$_FILES['mb_icon']['name'];
            move_uploaded_file($_FILES['mb_icon']['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_member_icon_width'] || $size[1] > $config['cf_member_icon_height'])
                    @unlink($dest_path);
                //=================================================================\
            }
        } else {
            $msg .= '사업자등록증을 '.number_format($config['cf_member_icon_size']).'바이트 이하로 업로드 해주십시오.';
        }
 
    } else {
        $msg .= $_FILES['mb_icon']['name'].'은(는) gif 파일이 아닙니다.';
    }
}</pre><p>

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

답변에 대한 댓글 2개

깜봉
9년 전
이미지 파일 업로드시 체크 되는 부분만 말씀하셔서 그부분만 알려드린 것이 었습니다.

[code]
// 회원아이콘 경로
$mb_icon_path = G5_DATA_PATH.'/member/'.substr($member['mb_id'],0,2).'/'.$member['mb_id'].'.gif';
$mb_icon_url = G5_DATA_URL.'/member/'.substr($member['mb_id'],0,2).'/'.$member['mb_id'].'.gif';
[/code]

부분은 아래 처럼 수정하시면 됩니다.
파일 삭제 부분도 동일한 방식으로 적용하시면 되겠습니다.

[code]
$mb_icon_path = G5_DATA_PATH.'/member/'.substr($member['mb_id'],0,2).'/'.$member['mb_id'].'.jpg';
if(!file_exists($mb_icon_path))$mb_icon_path = G5_DATA_PATH.'/member/'.substr($member['mb_id'],0,2).'/'.$member['mb_id'].'.png';//jpg 가 없을때 png로 대체
if(!file_exists($mb_icon_path))$mb_icon_path = G5_DATA_PATH.'/member/'.substr($member['mb_id'],0,2).'/'.$member['mb_id'].'.gif';//png 가 없을때 gif로 대체

$mb_icon_url = G5_DATA_URL.'/member/'.substr($member['mb_id'],0,2).'/'.$member['mb_id'].'.jpg';
if(!file_exists($mb_icon_url))$mb_icon_url = G5_DATA_URL.'/member/'.substr($member['mb_id'],0,2).'/'.$member['mb_id'].'.png';//jpg 가 없을때 png로 대체
if(!file_exists($mb_icon_url))$mb_icon_url = G5_DATA_URL.'/member/'.substr($member['mb_id'],0,2).'/'.$member['mb_id'].'.gif';//png 가 없을때 gif로 대체
[/code]
웹프리죤
9년 전
아무튼 해결했습니다.~ 도움 주셔서 감사합니다^^

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

</p><p>// 아이콘 삭제</p><p>if (isset($_POST['del_mb_icon'])) {</p><p>    @unlink($mb_dir.'/'.$mb_id.'.gif');</p><p>}</p><p>

 

이부분에..

 

</p><p>G5_DATA_URL.'/member/'.substr($member['mb_id'],0,2).'/'.$member['mb_id'].'.jpg';</p><p>if(!file_exists($mb_icon_url))$mb_icon_url  = G5_DATA_URL.'/member/'.substr($member['mb_id'],0,2).'/'.$member['mb_id'].'.png';//jpg 가 없을때 png로 대체</p><p>if(!file_exists($mb_icon_url))$mb_icon_url  = G5_DATA_URL.'/member/'.substr($member['mb_id'],0,2).'/'.$member['mb_id'].'.gif';//png 가 없을때 gif로 대체</p><p>

 

를 어떻게 적용을 하나요..

 

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

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

파일 업로드할 때

preg_match('/\.(gif|jpg|png|jpeg)$/', $_FILES['mb_icon']['name']) 이런 형식으로 하시고

회원아이콘 경로를 아래와 같이 해보세요.

 

</p><p>//회원 디렉토리</p><p>$mb_dir_name = substr($member['mb_id'],0,2);</p><p> </p><p>//회원아이콘 검색</p><p>$mb_path = G5_DATA_PATH.'/member/'.$mb_dir_name;
$mb_arr = glob($mb_path.'/'.$member['mb_id'].'.*');
$mb_icon_file = pathinfo($mb_arr[0], PATHINFO_BASENAME);</p><p> </p><p><font face="GulimChe">// 회원아이콘 경로</font></p><p>$mb_icon_path = G5_DATA_PATH.'/member/'.$mb_dir_name.'/'.$mb_icon_file;
$mb_icon_url  = G5_DATA_URL.'/member/'.$mb_dir_name.'/'.$mb_icon_file;</p><p>
 

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

답변에 대한 댓글 2개

깜봉
9년 전
간단하게는 요렇게 ?

@ <== 오류 무시 즉. 파일이 있으면 삭제 없으면 무시

[code]
// 아이콘 삭제
if (isset($_POST['del_mb_icon'])) {
@unlink($mb_dir.'/'.$mb_id.'.jpg');
@unlink($mb_dir.'/'.$mb_id.'.png');
@unlink($mb_dir.'/'.$mb_id.'.gif');
}
[/code]
웹프리죤
9년 전
아무튼 해결했습니다.~ 도움 주셔서 감사합니다^^

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

그렇게 올리면..회원정보수정창에서 엑박이 뜨는데요

 

</p><p>// 회원아이콘 경로</p><p>$mb_icon_path = G5_DATA_PATH.'/member/'.substr($member['mb_id'],0,2).'/'.$member['mb_id'].'.gif';</p><p>$mb_icon_url  = G5_DATA_URL.'/member/'.substr($member['mb_id'],0,2).'/'.$member['mb_id'].'.gif';</p><p>

 

어떤 이미지가 업로드될지 모르는데

이 함수 때문에 원본은 jpg 인데.. 저렇게 이름이 고정이 되어버려서 엑박이 뜨네요.. 

삭제가 안되네요^^;;;;

 

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

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

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

로그인