run_replace 에서 $board, $w 가 들어가는 이유가 있을까요..? 채택완료
집에가고싶어
4년 전
조회 1,845
엑셀 + 파일첨부로 갤러리 게시판에 대량의 게시글을 등록하려고 하고 있습니다.
엑셀에서 데이터 들고와서 게시글 등록하는 부분은 문제가 없는데 업로드한 파일 순서대로 파일업로드도 동시에 진행중인데 run_replace 함수에 $board 와 $w 가 들어갑니다.
따로 파일을 만들어서 작동중인데 호출하면 $board, $w 가 빈값이라 에러가 있을까 해서 확인해보고자 합니다.
</p>
<p><?php</p>
<p> </p>
<p>error_reporting(E_ALL);</p>
<p>ini_set('display_errors', '1');</p>
<p> </p>
<p>include_once('../common.php');</p>
<p> </p>
<p>set_time_limit ( 0 );</p>
<p>ini_set('memory_limit', '50M');</p>
<p> </p>
<p>$is_upload_file = (isset($_FILES['excelfile']['tmp_name']) && $_FILES['excelfile']['tmp_name']) ? 1 : 0;</p>
<p> </p>
<p>if ( !$is_upload_file ) {</p>
<p> alert("엑셀 파일을 업로드해 주세요.");</p>
<p>}</p>
<p> </p>
<p>$is_file_excel = ($_FILES['excelfile']['type'] === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') ? 1 : 0;</p>
<p> </p>
<p>if ( !$is_file_excel ) {</p>
<p> alert("xlsx 파일을 업로드해 주세요.");</p>
<p>}</p>
<p> </p>
<p>$is_upload_images = (isset($_FILES['images']['tmp_name']) && $_FILES['images']['tmp_name']) ? 1 : 0;</p>
<p> </p>
<p>if ( $is_upload_file && $is_file_excel ) {</p>
<p> $write_table = $g5['write_prefix'] . 'digital_archive';</p>
<p> $file = $_FILES['excelfile']['tmp_name'];</p>
<p> </p>
<p> require_once "./Classes/PHPExcel/IOFactory.php"; // IOFactory.php을 불러옴.</p>
<p> </p>
<p> $objPHPExcel = PHPExcel_IOFactory::load($file);</p>
<p> $sheet = $objPHPExcel->getSheet(0);</p>
<p> </p>
<p> $num_rows = $sheet->getHighestRow();</p>
<p> $highestColumn = $sheet->getHighestColumn();</p>
<p> </p>
<p> $total_count = 0;</p>
<p> $fail_count = 0;</p>
<p> $succ_count = 0;</p>
<p> $file_count = 0;</p>
<p> $file_fail_count = 0;</p>
<p> </p>
<p> for ($i = 2; $i <= $num_rows; $i++) {</p>
<p> $total_count++;</p>
<p> $rowData = $sheet->rangeToArray('A' . $i . ':' . $highestColumn . $i,</p>
<p> NULL,</p>
<p> TRUE,</p>
<p> FALSE);</p>
<p> </p>
<p> $wr_num = get_next_num($write_table);</p>
<p> $wr_reply = '';</p>
<p> $wr_comment = 0;</p>
<p> $ca_name = addslashes($rowData[0][0]);</p>
<p> $wr_option = (addslashes($rowData[0][5]) == 'Y') ? 'secret' : '';</p>
<p> $wr_subject = '파일명으로?!';</p>
<p> $wr_content = '내용은 ?!';</p>
<p> $wr_seo_title = '서브타이틀?!';</p>
<p> $wr_link1 = '';</p>
<p> $wr_link2 = '';</p>
<p> $wr_link1_hit = 0;</p>
<p> $wr_link2_hit = 0;</p>
<p> $wr_hit = 0;</p>
<p> $wr_good = 0;</p>
<p> $wr_nogood = 0;</p>
<p> $mb_id = 'admin';</p>
<p> $wr_password = '';</p>
<p> $wr_name = '양평원';</p>
<p> $wr_email = 'admin@domain.com';</p>
<p> $wr_homepage = '';</p>
<p> $wr_datetime = G5_TIME_YMDHIS;</p>
<p> $wr_last = G5_TIME_YMDHIS;</p>
<p> $wr_ip = $_SERVER['REMOTE_ADDR'];</p>
<p> $wr_1 = addslashes($rowData[0][1]);</p>
<p> $wr_2 = addslashes($rowData[0][2]);</p>
<p> $wr_3 = addslashes($rowData[0][3]);</p>
<p> $wr_4 = addslashes($rowData[0][4]);</p>
<p> $wr_5 = '';</p>
<p> $wr_6 = '';</p>
<p> $wr_7 = '';</p>
<p> $wr_8 = '';</p>
<p> $wr_9 = '';</p>
<p> $wr_10 = '';</p>
<p> $wr_tags1 = addslashes($rowData[0][6]);</p>
<p> $wr_tags2 = addslashes($rowData[0][7]);</p>
<p> </p>
<p> if(!$wr_num || !$ca_name || !$wr_1 || !$wr_2 || !$wr_3 || !$wr_4) {</p>
<p> $fail_count++;</p>
<p> continue;</p>
<p> }</p>
<p> </p>
<p> $sql = " insert into $write_table</p>
<p> set wr_num = '$wr_num',</p>
<p> wr_reply = '$wr_reply',</p>
<p> wr_comment = '$wr_comment',</p>
<p> ca_name = '$ca_name',</p>
<p> wr_option = '$wr_option',</p>
<p> wr_subject = '$wr_subject',</p>
<p> wr_content = '$wr_content',</p>
<p> wr_seo_title = '$wr_seo_title',</p>
<p> wr_link1 = '$wr_link1',</p>
<p> wr_link2 = '$wr_link2',</p>
<p> wr_link1_hit = '$wr_link1_hit',</p>
<p> wr_link2_hit = '$wr_link2_hit',</p>
<p> wr_hit = '$wr_hit',</p>
<p> wr_good = '$wr_good',</p>
<p> wr_nogood = '$wr_nogood',</p>
<p> mb_id = '$mb_id',</p>
<p> wr_password = '$wr_password',</p>
<p> wr_name = '$wr_name',</p>
<p> wr_email = '$wr_email',</p>
<p> wr_homepage = '$wr_homepage',</p>
<p> wr_datetime = '$wr_datetime',</p>
<p> wr_last = '$wr_last',</p>
<p> wr_ip = '$wr_ip',</p>
<p> wr_1 = '$wr_1',</p>
<p> wr_2 = '$wr_2',</p>
<p> wr_3 = '$wr_3',</p>
<p> wr_4 = '$wr_4',</p>
<p> wr_5 = '$wr_5',</p>
<p> wr_6 = '$wr_6',</p>
<p> wr_7 = '$wr_7',</p>
<p> wr_8 = '$wr_8',</p>
<p> wr_9 = '$wr_9',</p>
<p> wr_10 = '$wr_10',</p>
<p> wr_tags1 = '$wr_tags1',</p>
<p> wr_tags2 = '$wr_tags2' ";</p>
<p> </p>
<p> /* sql_query($sql);</p>
<p> $wr_id = sql_insert_id();</p>
<p> </p>
<p> // 부모 아이디에 UPDATE</p>
<p> sql_query(" update $write_table set wr_parent = '$wr_id' where wr_id = '$wr_id' ");</p>
<p> </p>
<p> // 새글 INSERT</p>
<p> sql_query(" insert into {$g5['board_new_table']} ( bo_table, wr_id, wr_parent, bn_datetime, mb_id ) values ( 'digital_archive', '{$wr_id}', '{$wr_id}', '${wr_datetime}', '{$mb_id}' ) ");</p>
<p> </p>
<p> // 게시글 1 증가</p>
<p> sql_query("update {$g5['board_table']} set bo_count_write = bo_count_write + 1 where bo_table = 'digital_archive'"); */</p>
<p> </p>
<p> if ( $is_upload_images ) {</p>
<p> if ( $_FILES['images']['tmp_name'][$succ_count] && is_uploaded_file($_FILES['images']['tmp_name'][$succ_count])) {</p>
<p> $chars_array = array_merge(range(0,9), range('a','z'), range('A','Z'));</p>
<p> $file_upload_msg = '';</p>
<p> $upload = array();</p>
<p> </p>
<p> $upload[0]['file'] = '';</p>
<p> $upload[0]['source'] = '';</p>
<p> $upload[0]['filesize'] = 0;</p>
<p> $upload[0]['image'] = array();</p>
<p> $upload[0]['image'][0] = 0;</p>
<p> $upload[0]['image'][1] = 0;</p>
<p> $upload[0]['image'][2] = 0;</p>
<p> $upload[0]['fileurl'] = '';</p>
<p> $upload[0]['thumburl'] = '';</p>
<p> $upload[0]['storage'] = '';</p>
<p> </p>
<p> $tmp_file = $_FILES['images']['tmp_name'][$succ_count];</p>
<p> $filesize = $_FILES['images']['size'][$succ_count];</p>
<p> $filename = $_FILES['images']['name'][$succ_count];</p>
<p> $filename = get_safe_filename($filename);</p>
<p> </p>
<p> if (is_uploaded_file($tmp_file)) {</p>
<p> //=================================================================\</p>
<p> // 090714</p>
<p> // 이미지나 플래시 파일에 악성코드를 심어 업로드 하는 경우를 방지</p>
<p> // 에러메세지는 출력하지 않는다.</p>
<p> //-----------------------------------------------------------------</p>
<p> $timg = @getimagesize($tmp_file);</p>
<p> // image type</p>
<p> if ( preg_match("/\.({$config['cf_image_extension']})$/i", $filename) ||</p>
<p> preg_match("/\.({$config['cf_flash_extension']})$/i", $filename) ) {</p>
<p> if ($timg['2'] < 1 || $timg['2'] > 18)</p>
<p> continue;</p>
<p> }</p>
<p> //=================================================================</p>
<p> </p>
<p> $upload[0]['image'] = $timg;</p>
<p> </p>
<p> // 프로그램 원래 파일명</p>
<p> $upload[0]['source'] = $filename;</p>
<p> $upload[0]['filesize'] = $filesize;</p>
<p> </p>
<p> // 아래의 문자열이 들어간 파일은 -x 를 붙여서 웹경로를 알더라도 실행을 하지 못하도록 함</p>
<p> $filename = preg_replace("/\.(php|pht|phtm|htm|cgi|pl|exe|jsp|asp|inc|phar)/i", "$0-x", $filename);</p>
<p> </p>
<p> shuffle($chars_array);</p>
<p> $shuffle = implode('', $chars_array);</p>
<p> </p>
<p> $upload[0]['file'] = abs(ip2long($_SERVER['REMOTE_ADDR'])).'_'.substr($shuffle,0,8).'_'.replace_filename($filename);</p>
<p> </p>
<p> $dest_file = G5_DATA_PATH.'/file/digital_archive/test/'.$upload[0]['file'];</p>
<p> </p>
<p> // 업로드가 안된다면 에러메세지 출력하고 죽어버립니다.</p>
<p> $error_code = move_uploaded_file($tmp_file, $dest_file) or die($_FILES['images']['error'][$succ_count]);</p>
<p> </p>
<p> // 올라간 파일의 퍼미션을 변경합니다.</p>
<p> chmod($dest_file, G5_FILE_PERMISSION);</p>
<p> </p>
<p> $dest_file = run_replace('write_update_upload_file', $dest_file, $board, $wr_id, $w);</p>
<p> $upload[0] = run_replace('write_update_upload_array', $upload[0], $dest_file, $board, $wr_id, $w);</p>
<p> </p>
<p> echo $dest_file.'
';</p>
<p> </p>
<p> /* $upload[0]['source'] = sql_real_escape_string($upload[0]['source']);</p>
<p> $bf_width = isset($upload[0]['image'][0]) ? (int) $upload[0]['image'][0] : 0;</p>
<p> $bf_height = isset($upload[0]['image'][1]) ? (int) $upload[0]['image'][1] : 0;</p>
<p> $bf_type = isset($upload[0]['image'][2]) ? (int) $upload[0]['image'][2] : 0;</p>
<p> </p>
<p> $row = sql_fetch(" select count(*) as cnt from {$g5['board_file_table']} where bo_table = '{$bo_table}' and wr_id = '{$wr_id}' and bf_no = '{$i}' "); */</p>
<p> }</p>
<p> }</p>
<p> }</p>
<p> </p>
<p> $succ_count++; </p>
<p> }</p>
<p>}</p>
<p>?></p>
<p>
지금은 해당 상태이며 한 게시글에 한개의 이미지만 첨부가능해서 게시글 등록 후 이미지 1개 업로드 후 wr_id 일치시키고 테이블 일치시키고 있습니다.
감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
답변을 작성하려면 로그인이 필요합니다.
로그인
게시판 목록에서는 이미지를 보여주고 있으나 view 페이지나 최신글 썸네일 부분에서 이미지가 없다고 나옵니다..
등록은 잘 처리되었는데 썸네일 부분에서 에러가 있네요.
감사합니다.