멀티 업로더 질문입니다

멀티 업로더 질문입니다

QA

멀티 업로더 질문입니다

본문

https://sir.kr/g5_skin/36497 현재 이 테마를 사용 중인데여 

글을 적고 작성하기를 누르면 404.html 페이지가 뜨는데 뭐가 문제일까요..?ㅠㅠ

 

<?php
if (! defined('_GNUBOARD_'))
    exit(); // 개별 페이지 접근 불가

// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="' . $board_skin_url . '/style.css">', 0);

switch (true) {
    case (isset($_GET['upload'])):
        {

            include_once $board_skin_path . '/write.upload.php';

            break;
        }

    case (isset($_GET['mutipleUplad'])):
        {
            ?>
      <div class="bo_wrap">
        <section id="bo_w">
<h2 class="sound_only"><?php echo $g5['title'] ?></h2>
<form method='post' action='/bbs/write.php?bo_table=<?=$bo_table?>&upload'
    multipart="" enctype="multipart/form-data">
    <input type="hidden" name="uid" value="<?php echo get_uniqid(); ?>"> <input
        type="hidden" name="w" value="<?php echo $w ?>"> <input type="hidden"
        name="bo_table" value="<?php echo $bo_table ?>"> <input type="hidden"
        name="wr_id" value=""> <input type="hidden" name="sca"
        value="<?php echo $sca ?>"> <input type="hidden" name="sfl"
        value="<?php echo $sfl ?>"> <input type="hidden" name="stx"
        value="<?php echo $stx ?>"> <input type="hidden" name="spt"
        value="<?php echo $spt ?>"> <input type="hidden" name="sst"
        value="<?php echo $sst ?>"> <input type="hidden" name="sod"
        value="<?php echo $sod ?>"> <input type="hidden" name="page"
        value="<?php echo $page ?>"> <input type="hidden" name="wr_name"
        value="<?php echo $name ?>"> <input type="text" name="wr_subject"
        value="<?php echo $subject ?>" id="wr_subject" required
        class="frm_input full_input required" size="50" maxlength="255"
        placeholder="제목">

    <div class="write_div">
        <label for="wr_content" class="sound_only">내용<strong>필수</strong></label>
        <div
            class="wr_content <?php echo $is_dhtml_editor ? $config['cf_editor'] : ''; ?>">
            <?php if($write_min || $write_max) { ?>
            <!-- 최소/최대 글자 수 사용 시 -->
            <p id="char_count_desc">
                이 게시판은 최소 <strong><?php echo $write_min; ?></strong>글자 이상, 최대 <strong><?php echo $write_max; ?></strong>글자
                이하까지 글을 쓰실 수 있습니다.
            </p>
            <?php } ?>
            <?php echo $editor_html; // 에디터 사용시는 에디터로, 아니면 textarea 로 노출 ?>
            <?php if($write_min || $write_max) { ?>
            <!-- 최소/최대 글자 수 사용 시 -->
            <div id="char_count_wrap">
                <span id="char_count"></span>글자
            </div>
            <?php } ?>
        </div>

    </div>
    <input type="file" name='img[]' class='frm_input' multiple> 
    
        <div class="btn_confirm write_div">
        <a href="<?php echo get_pretty_url($bo_table); ?>" class="btn_cancel btn">취소</a>
        <button type="submit" id="btn_submit" accesskey="s" class="btn_submit btn">작성완료</button>
    </div>
</form>

</section>
</div>
<?php
            break;
        }
    case (true):
        {
?>

 

해당 코드이고 

 

2826135843_1602662886.3632.jpg

파일이 들어가 있는 디렉토리 입니다 원래는 board > multiupload.gallery 였는데

2826135843_1602662991.9269.jpg

제가 그냥

갤러리 디렉토리에 복사 붙여넣기로 덮었거든요 거기서 경로 문제가 일어났을까요?ㅠㅠ

 

이 질문에 댓글 쓰기 :

답변 3

잘못봤네요 스킨에서 업데이트를 하네요

write.upload.php에서 글 작성후 넘어가는 페이지 경로가 잘못된겁니다

write.upload.php 소스, 올려주시거나 저장후 넘어가는 페이지 내용을 수정하세욤

엥? 잘못봤네요 스킨에서 업데이트를 하네요

write.upload.php에서 글 작성후 넘어가는 페이지 경로가 잘못된겁니다

 

<?php 

function reArrayFiles($file)
{
    $file_ary = array();
    $file_count = count($file['name']);
    $file_key = array_keys($file);
    
    for($i=0;$i<$file_count;$i++)
    {
        foreach($file_key as $val)
        {
            $file_ary[$i][$val] = $file[$val][$i];
        }
    }
    return $file_ary;
}

$img = $_FILES["img"];

/* // 업르도파일을 저장하는 파일 패스를 지정
 $filename = $board_skin_path."/".$_FILES["img"]["name"];
 
 // 업로드 된 임시파일을 파일 저장 패스에 카피함
 $file = move_uploaded_file($tmpname, $filename);
 */
if(!empty($img))
{
    $img_desc = reArrayFiles($img);
    //print_r($img_desc);
    $count = count($img_desc);
    $i_count = 0;
    // 디렉토리가 없다면 생성합니다. (퍼미션도 변경하구요.)
     (G5_DATA_PATH.'/file/'.$bo_table, G5_DIR_PERMISSION);
     @chmod(G5_DATA_PATH.'/file/'.$bo_table, G5_DIR_PERMISSION);
    foreach($img_desc as $val)
    {
        $i_count++;
        //echo $filename = G5_DATA_PATH."/".$val["name"];
        //echo $newname = date('YmdHis',time()).mt_rand().'.jpg';
        
        //move_uploaded_file($val['tmp_name'],$filename);
        
        $tmp_file  = $val['tmp_name'];
        $filesize  = $val['size'];
        $filename  = $val['name'];
        $filename  = get_safe_filename($filename);
        $timg = @getimagesize($tmp_file);
        $val['img'] = $timg;
        
        // 관리자가 아니면서 설정한 업로드 사이즈보다 크다면 건너뜀
        if (!$is_admin && $filesize > $board['bo_upload_size']) {
            $file_upload_msg .= '\"'.$filename.'\" 파일의 용량('.number_format($filesize).' 바이트)이 게시판에 설정('.number_format($board['bo_upload_size']).' 바이트)된 값보다 크므로 업로드 하지 않습니다.\\n';
            continue;
        }
        
        //=================================================================\
        // 090714
        // 이미지나 플래시 파일에 악성코드를 심어 업로드 하는 경우를 방지
        // 에러메세지는 출력하지 않는다.
        //-----------------------------------------------------------------
        // image type
        if ( preg_match("/\.({$config['cf_image_extension']})$/i", $filename) ||
        preg_match("/\.({$config['cf_flash_extension']})$/i", $filename) ) {
            if ($timg['2'] < 1 || $timg['2'] > 16)
                continue;
        }
        //=================================================================
        // 프로그램 원래 파일명
        $val['source'] = $filename;
        $val['filesize'] = $filesize;
        
        // 아래의 문자열이 들어간 파일은 -x 를 붙여서 웹경로를 알더라도 실행을 하지 못하도록 함
        $filename = preg_replace("/\.(php|pht|phtm|htm|cgi|pl|exe|jsp|asp|inc)/i", "$0-x", $filename);
        
        shuffle($chars_array);
        $shuffle = implode('', $chars_array);
        
        // 첨부파일 첨부시 첨부파일명에 공백이 포함되어 있으면 일부 PC에서 보이지 않거나 다운로드 되지 않는 현상이 있습니다. (길상여의 님 090925)
        $val['file'] = abs(ip2long($_SERVER['REMOTE_ADDR'])).'_'.substr($shuffle,0,8).'_'.replace_filename($filename);
        
        $dest_file = G5_DATA_PATH.'/file/'.$bo_table.'/'.$val['file'];
        
        // 업로드가 안된다면 에러메세지 출력하고 죽어버립니다.
        $error_code = move_uploaded_file($tmp_file, $dest_file) or die($val['error']);
        
        // 올라간 파일의 퍼미션을 변경합니다.
        chmod($dest_file, G5_FILE_PERMISSION);
        
        $dest_file = run_replace('write_update_upload_file', $dest_file, $board, $wr_id, $w);
        $val = run_replace('write_update_upload_array', $val, $dest_file, $board, $wr_id, $w);
        
        
        if ($member['mb_id']) {
            $mb_id = $member['mb_id'];
            $wr_name = addslashes(clean_xss_tags($board['bo_use_name'] ? $member['mb_name'] : $member['mb_nick']));
            $wr_password = '';
            $wr_email = addslashes($member['mb_email']);
            $wr_homepage = addslashes(clean_xss_tags($member['mb_homepage']));
        } else {
            $mb_id = '';
            // 비회원의 경우 이름이 누락되는 경우가 있음
            $wr_name = clean_xss_tags(trim($_POST['wr_name']));
            if (!$wr_name)
                alert('이름은 필히 입력하셔야 합니다.');
                $wr_password = get_encrypt_string($wr_password);
                $wr_email = get_email_address(trim($_POST['wr_email']));
                $wr_homepage = clean_xss_tags($wr_homepage);
        }
        
        $wr_num = get_next_num($write_table);
        $sql = " insert into $write_table
                set wr_num = '$wr_num',
                     wr_reply = '$wr_reply',
                     wr_comment = 0,
                     ca_name = '$ca_name',
                     wr_option = '$html,$secret,$mail',
                     wr_subject = '$wr_subject',
                     wr_content = '$wr_content',
                     wr_seo_title = '$wr_seo_title',
                     wr_link1 = '$wr_link1',
                     wr_link2 = '$wr_link2',
                     wr_link1_hit = 0,
                     wr_link2_hit = 0,
                     wr_hit = 0,
                     wr_good = 0,
                     wr_nogood = 0,
                     mb_id = '{$member['mb_id']}',
                     wr_password = '$wr_password',
                     wr_name = '$wr_name',
                     wr_email = 'https://참소식.한국인터넷.한국',
                     wr_homepage = '$wr_homepage',
                     wr_datetime = '".G5_TIME_YMDHIS."',
                     wr_last = '".G5_TIME_YMDHIS."',
                     wr_ip = '{$_SERVER['REMOTE_ADDR']}',
                     wr_1 = '$wr_1',
                     wr_2 = '$wr_2',
                     wr_3 = '$wr_3',
                     wr_4 = '$wr_4',
                     wr_5 = '$wr_5',
                     wr_6 = '$wr_6',
                     wr_7 = '$wr_7',
                     wr_8 = '$wr_8',
                     wr_9 = '$wr_9',
                     wr_10 = '$wr_10' ";
        sql_query($sql);
        
        $wr_id = sql_insert_id();
        
        // 부모 아이디에 UPDATE
        sql_query(" update $write_table set wr_parent = '$wr_id' where wr_id = '$wr_id' ");
        
        // 새글 INSERT
        sql_query(" insert into {$g5['board_new_table']} ( bo_table, wr_id, wr_parent, bn_datetime, mb_id ) values ( '{$bo_table}', '{$wr_id}', '{$wr_id}', '".G5_TIME_YMDHIS."', '{$member['mb_id']}' ) ");
        
        // 게시글 1 증가
        sql_query("update {$g5['board_table']} set bo_count_write = bo_count_write + 1 where bo_table = '{$bo_table}'");
        
        
        
        $sql = " insert into {$g5['board_file_table']}
                    set bo_table = '{$bo_table}',
                         wr_id = '{$wr_id}',
                         bf_no = '0',
                         bf_source = '{$val['source']}',
                         bf_file = '{$val['file']}',
                         bf_content = '',
                         bf_fileurl = '',
                         bf_thumburl = '',
                         bf_storage = '',
                         bf_download = 0,
                         bf_filesize = '{$val['filesize']}',
                         bf_width = '{$val['img']['0']}',
                         bf_height = '{$val['img']['1']}',
                         bf_type = '{$val['img']['2']}',
                         bf_datetime = '".G5_TIME_YMDHIS."' ";
        sql_query($sql);
        
        run_event('write_update_file_insert', $bo_table, $wr_id, $val, $w);
        
        delete_cache_latest($bo_table);
        
        $redirect_url = run_replace('write_update_move_url', short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id.$qstr), $board, $wr_id, $w, $qstr, $file_upload_msg);
        
        run_event('write_update_after', $board, $wr_id, $w, $qstr, $redirect_url);
        
        // 파일의 개수를 게시물에 업데이트 한다.
        $row = sql_fetch(" select count(*) as cnt from {$g5['board_file_table']} where bo_table = '{$bo_table}' and wr_id = '{$wr_id}' ");
        sql_query(" update {$write_table} set wr_file = '{$row['cnt']}' where wr_id = '{$wr_id}' ");
        
        // 자동저장된 레코드를 삭제한다.
        sql_query(" delete from {$g5['autosave_table']} where as_uid = '{$uid}' ");
        //------------------------------------------------------------------------------
    }
}

 

안의 내용입니다 ㅠㅠ

        if($count==$i_count) {
            echo '파일 업로드 성공 !';
            ?>
        
        <script>
            window.location.href='<?=G5_BBS_URL.'/board.php?bo_table='.$_GET['bo_table']?>';
        </script>
        
        <?php 
    }
    
?>

달리 이상있어 보이지 않습니다만.
글을 올리면 글을 저장후 이동하는 페이지가 404라면
아래부분으로 마지막 부분 바꿔보세요


        <script>
            location.href='/bbs/board.php?bo_table=<?=$_GET['bo_table'];?>';
        </script>

답변을 작성하시기 전에 로그인 해주세요.
전체 123,146 | RSS
QA 내용 검색

회원로그인

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