구찬아...~ 파일 첩부
링크
http://eagleowm1226.cafe24.com/shop/item.php?it_id=1514555625 (664) http://eagleowm1226.cafe24.com/bbs/board.php?bo_table=shop_gallery&wr_id=1&page=1 (512)님의 께 답변 하기위해 만든 소스
shop/item.php
<?php
include_once('./_common.php');
//2018-02-13
// cart id 설정
set_cart_id($sw_direct);
$s_cart_id = get_session('ss_cart_id');
//2018-02-13
if (G5_IS_MOBILE) {
include_once(G5_MSHOP_PATH.'/item.php');
return;
}
================================================================
<?php
// 상품 구입폼
include_once($skin_dir.'/item.form.skin.php');
?>
<? // 상품 첩부파일?>
<form method="post" action="shop_bf_file.php" enctype="multipart/form-data">
<input type="hidden" name="bo_table" value="shop_gallery">
<input type="text" name="wr_subject" value="<?=$s_cart_id?>"><!-- 회원장바구니 키값 -->
<input type="text" name="wr_content" value="<?=$it_id?>">
<input type="text" name="wr_1" value="<?=$it_id?>"><!-- 상품정보 -->
<?php for ($i=0; $i<1; $i++) { ?>
<input type="file" name="bf_file[]" title="파일첨부 <?php echo $i+1 ?> : 용량 <?php echo $upload_max_filesize ?> 이하만 업로드 가능" class="frm_file frm_input">
<?}?>
<input type="submit">
</form>
shop/cart.php
//2018-02-13
// cart id 설정
//set_cart_id($sw_direct);
$s_cart_id = get_session('ss_cart_id');
//echo $s_cart_id;
//exit;
//2018-02-13
shop/shop_bf_file.php
<?
include_once('./_common.php');
$wr_num = get_next_num('g5_write_shop_gallery');
// 파일개수 체크
$file_count = 0;
$upload_count = count($_FILES['bf_file']['name']);
for ($i=0; $i<$upload_count; $i++) {
if($_FILES['bf_file']['name'][$i] && is_uploaded_file($_FILES['bf_file']['tmp_name'][$i]))
$file_count++;
}
$sql = " insert into g5_write_shop_gallery
set wr_num = '$wr_num',
wr_reply = '$wr_reply',
wr_comment = 0,
wr_subject = '$wr_subject',
wr_content = '$wr_content',
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();
// 게시글 1 증가
sql_query("update {$g5['board_table']} set bo_count_write = bo_count_write + 1 where bo_table = '{$bo_table}'");
// 디렉토리가 없다면 생성합니다. (퍼미션도 변경하구요.)
@mkdir(G5_DATA_PATH.'/file/'.$bo_table, G5_DIR_PERMISSION);
@chmod(G5_DATA_PATH.'/file/'.$bo_table, G5_DIR_PERMISSION);
$chars_array = array_merge(range(0,9), range('a','z'), range('A','Z'));
// 가변 파일 업로드
$file_upload_msg = '';
$upload = array();
for ($i=0; $i<count($_FILES['bf_file']['name']); $i++) {
$upload[$i]['file'] = '';
$upload[$i]['source'] = '';
$upload[$i]['filesize'] = 0;
$upload[$i]['image'] = array();
$upload[$i]['image'][0] = '';
$upload[$i]['image'][1] = '';
$upload[$i]['image'][2] = '';
// 삭제에 체크가 되어있다면 파일을 삭제합니다.
if (isset($_POST['bf_file_del'][$i]) && $_POST['bf_file_del'][$i]) {
$upload[$i]['del_check'] = true;
$row = sql_fetch(" select bf_file from {$g5['board_file_table']} where bo_table = '{$bo_table}' and wr_id = '{$wr_id}' and bf_no = '{$i}' ");
@unlink(G5_DATA_PATH.'/file/'.$bo_table.'/'.$row['bf_file']);
// 썸네일삭제
if(preg_match("/\.({$config['cf_image_extension']})$/i", $row['bf_file'])) {
delete_board_thumbnail($bo_table, $row['bf_file']);
}
}
else
$upload[$i]['del_check'] = false;
$tmp_file = $_FILES['bf_file']['tmp_name'][$i];
$filesize = $_FILES['bf_file']['size'][$i];
$filename = $_FILES['bf_file']['name'][$i];
$filename = get_safe_filename($filename);
// 서버에 설정된 값보다 큰파일을 업로드 한다면
if ($filename) {
if ($_FILES['bf_file']['error'][$i] == 1) {
$file_upload_msg .= '\"'.$filename.'\" 파일의 용량이 서버에 설정('.$upload_max_filesize.')된 값보다 크므로 업로드 할 수 없습니다.\\n';
continue;
}
else if ($_FILES['bf_file']['error'][$i] != 0) {
$file_upload_msg .= '\"'.$filename.'\" 파일이 정상적으로 업로드 되지 않았습니다.\\n';
continue;
}
}
if (is_uploaded_file($tmp_file)) {
// 관리자가 아니면서 설정한 업로드 사이즈보다 크다면 건너뜀
if (!$is_admin && $filesize > $board['bo_upload_size']) {
$file_upload_msg .= '\"'.$filename.'\" 파일의 용량('.number_format($filesize).' 바이트)이 게시판에 설정('.number_format($board['bo_upload_size']).' 바이트)된 값보다 크므로 업로드 하지 않습니다.\\n';
continue;
}
//=================================================================\
// 090714
// 이미지나 플래시 파일에 악성코드를 심어 업로드 하는 경우를 방지
// 에러메세지는 출력하지 않는다.
//-----------------------------------------------------------------
$timg = @getimagesize($tmp_file);
// 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;
}
//=================================================================
$upload[$i]['image'] = $timg;
// 4.00.11 - 글답변에서 파일 업로드시 원글의 파일이 삭제되는 오류를 수정
if ($w == 'u') {
// 존재하는 파일이 있다면 삭제합니다.
$row = sql_fetch(" select bf_file from {$g5['board_file_table']} where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$i' ");
@unlink(G5_DATA_PATH.'/file/'.$bo_table.'/'.$row['bf_file']);
// 이미지파일이면 썸네일삭제
if(preg_match("/\.({$config['cf_image_extension']})$/i", $row['bf_file'])) {
delete_board_thumbnail($bo_table, $row['bf_file']);
}
}
// 프로그램 원래 파일명
$upload[$i]['source'] = $filename;
$upload[$i]['filesize'] = $filesize;
// 아래의 문자열이 들어간 파일은 -x 를 붙여서 웹경로를 알더라도 실행을 하지 못하도록 함
$filename = preg_replace("/\.(php|phtm|htm|cgi|pl|exe|jsp|asp|inc)/i", "$0-x", $filename);
shuffle($chars_array);
$shuffle = implode('', $chars_array);
// 첨부파일 첨부시 첨부파일명에 공백이 포함되어 있으면 일부 PC에서 보이지 않거나 다운로드 되지 않는 현상이 있습니다. (길상여의 님 090925)
$upload[$i]['file'] = abs(ip2long($_SERVER['REMOTE_ADDR'])).'_'.substr($shuffle,0,8).'_'.replace_filename($filename);
$dest_file = G5_DATA_PATH.'/file/'.$bo_table.'/'.$upload[$i]['file'];
// 업로드가 안된다면 에러메세지 출력하고 죽어버립니다.
$error_code = move_uploaded_file($tmp_file, $dest_file) or die($_FILES['bf_file']['error'][$i]);
// 올라간 파일의 퍼미션을 변경합니다.
chmod($dest_file, G5_FILE_PERMISSION);
}
}
for ($i=0; $i<count($upload); $i++)
{
$sql = " insert into {$g5['board_file_table']}
set bo_table = '{$bo_table}',
wr_id = '{$wr_id}',
bf_no = '{$i}',
bf_source = '{$upload[$i]['source']}',
bf_file = '{$upload[$i]['file']}',
bf_content = '{$bf_content[$i]}',
bf_download = 0,
bf_filesize = '{$upload[$i]['filesize']}',
bf_width = '{$upload[$i]['image']['0']}',
bf_height = '{$upload[$i]['image']['1']}',
bf_type = '{$upload[$i]['image']['2']}',
bf_datetime = '".G5_TIME_YMDHIS."' ";
sql_query($sql);
}
// 업로드된 파일 내용에서 가장 큰 번호를 얻어 거꾸로 확인해 가면서
// 파일 정보가 없다면 테이블의 내용을 삭제합니다.
$row = sql_fetch(" select max(bf_no) as max_bf_no from {$g5['board_file_table']} where bo_table = '{$bo_table}' and wr_id = '{$wr_id}' ");
for ($i=(int)$row['max_bf_no']; $i>=0; $i--)
{
$row2 = sql_fetch(" select bf_file from {$g5['board_file_table']} where bo_table = '{$bo_table}' and wr_id = '{$wr_id}' and bf_no = '{$i}' ");
// 정보가 있다면 빠집니다.
if ($row2['bf_file']) break;
// 그렇지 않다면 정보를 삭제합니다.
sql_query(" delete from {$g5['board_file_table']} where bo_table = '{$bo_table}' and wr_id = '{$wr_id}' and bf_no = '{$i}' ");
}
// 파일의 개수를 게시물에 업데이트 한다.
$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}' ");
?>
첨부파일
영카트5 스킨
좋은 댓글과 좋아요는 제작자에게 큰힘이 됩니다.
모바일용 쇼핑몰 상세페이지에만 적용해서 올려드립니다. 스킨이라기 보단 팁에 가깝지만, 설명이 귀찮은 귀차니즘이라 스킨에 적용되는 파일만 올려드립니다. 별건 아니지만, 공유합니다~...
기존에 올린 팝업창을 영카트 5.3.1.2 정식버전에 맞게 정리한것입니다. 영카트 정식버전 팝업창은 그누보드5>스킨에 따로 올렸습니다. 과거 팝업창을 보고싶으시면 영카트5>스킨 (...
----------------------------------------------------------------- 특정회원에게 발급한 쿠폰은 표시않되게 수정. 4월18일 오전9...
이 스킨은 삭제되었습니다 옵션 및 추가옵션에서 표시되는 선택옵션이 추가금액이 없는 경우 + 가 표시되지 않도록 수정합니다. 현재는 추가금액이 없는 옵션인경우에도 +0 으로 표시됩니...
https://sir.kr/qa/229895?vpage=1#c_229900 님의 께 답변 하기위해 만든 소스 shop/item.php...
별건 아니고, 팝업창을 관리자모드 메인에서도 나오게 하는 스킨(?)입니다 팝업창을 등록할때 "관리자" 로 지정해서 관리자모드 메인에서만 팝업이 뜹니다. 이 관리자 팝업을 이용하면 ...
이 스킨은 일정기간만 오픈한것으로 지금은 삭제되었습니다 -------------------------------------- http://icecreamplay.cafe24.com...
쇼핑몰 팝업창 세련되게(?) + 팝업창이동하기 + 마우스오버시 화살표표시 스킨을 올렸었는데 영카트 5.3 베타버전이 나옴에 따라 영카트 5.3 베타버전 기본 테마에 적용한것을 올려...
영카트 5.2.9.6 버전의 orderlist.php 파일 원본에 적용되었습니다. [파일의위치] adm > shop_admin > orderlist.php 관리자모드의 주문관리 페...
기존에 올린 스킨에 팝업창이동하기 추가에 마우스오버시 화살표로 이동가능 표시 추가 팝업창 하단에 보면 " 00시간 동안 다시 열지 않습니다 " 와 " 닫기 " 버튼이 있는데 팝업창...
댓글 7개