멀티갤러리 스킨에서 업로드된 파일이 삭제가 안되네요.. 정보
그누보드 멀티갤러리 스킨에서 업로드된 파일이 삭제가 안되네요..본문
관리자님의 멀리갤러리 스킨을 쓰고 있는데요
오늘 게시물을 삭제하면서 게시판별 data를 보았더니 첨부된 파일들은 그대로 서버에 남아 있네요
멀티 갤러리 하단 파일 #1 , 파일 #2 에 첨부한 파일들은 서버에서 삭제가 되는데
멀티 갤러리 폼에서 추가되는 파일들은 서버에서 전혀 삭제가 되질 않고 있습니다.
혹 해서 다른 멀티 갤러리 스킨을 사용해 보았는데도 자료가 그대로 남아있습니다.
저만 그런가요???
오늘 게시물을 삭제하면서 게시판별 data를 보았더니 첨부된 파일들은 그대로 서버에 남아 있네요
멀티 갤러리 하단 파일 #1 , 파일 #2 에 첨부한 파일들은 서버에서 삭제가 되는데
멀티 갤러리 폼에서 추가되는 파일들은 서버에서 전혀 삭제가 되질 않고 있습니다.
혹 해서 다른 멀티 갤러리 스킨을 사용해 보았는데도 자료가 그대로 남아있습니다.
저만 그런가요???
댓글 전체

저는 아래의 두 파일을 소스와 같이 사용하는데 아무 문제 없습니다.
참고하세요. ^^*
gbdelete.skin.php
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
if (!defined("_CONFIG_SKIN_"))
include "$board_skin/config.skin.php";
$file_table = "$cfg[write_table_prefix]{$bo_table}_file";
// 업로드된 파일을 삭제함
for ($k=0; $k<$file_max; $k++) {
$file_name = get_thumb_filename($wr_id, $k);
@unlink("./data/file/$bo_table/${file_name}.jpg");
@unlink("./data/file/$bo_table/${file_name}_s.jpg");
@unlink("./data/file/$bo_table/${file_name}_s.jpgThumb");
}
// 행 삭제
$sql = " delete from $file_table where wr_id = '$wr_id' ";
sql_query($sql);
?>
gbupdate.skin.php
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
include "$board_skin/config.skin.php";
$msg = "";
for ($i=count($_POST["wf_cont"])-1; $i>=0; $i--)
{
if ($_POST[wf_id_del][$i])
{
$file_name = get_thumb_filename($wr_id, $i);
@unlink("./data/file/$bo_table/${file_name}.jpg");
@unlink("./data/file/$bo_table/${file_name}_s.jpg");
@unlink("./data/file/$bo_table/${file_name}_s.jpgThumb");
$sql = " delete from $file_table where wr_id = '$wr_id' and wf_id = '$i' ";
sql_query($sql);
continue;
}
$file_name = get_thumb_filename($wr_id, $i);
if ($_FILES["wf_file"][error][$i] == 0 && $_FILES["wf_file"][size][$i] <= ($file_size * 1024))
{
$src_file = $_FILES["wf_file"][tmp_name][$i];
$dst_file = $image = "./data/file/$bo_table/$file_name.jpg";
move_uploaded_file($src_file, $dst_file);
$size = getimagesize($image);
$src = imagecreatefromjpeg($image);
// 이미지 높이 비율
$rate = $size[1] / $size[0];
// 작은이미지의 높이
$simg_height = (int)($simg_width * $rate);
// 이미지가 jpg 라면
if ($src)
{
// 이미지(소) 생성
$dst = imagecreatetruecolor($simg_width, $simg_height);
// 1.00.05 gd 버전에 따라
if (function_exists("imagecopyresampled")) {
imagecopyresampled($dst, $src, 0, 0, 0, 0, $simg_width, $simg_height, $size[0], $size[1]);
} else {
// 1.00.02 imagecopyresized -> imagecopyresampled 로 교체
imagecopyresized($dst, $src, 0, 0, 0, 0, $simg_width, $simg_height, $size[0], $size[1]);
}
imagejpeg($dst, "./data/file/$bo_table/{$file_name}_s.jpg", $image_quality);
}
}
else if ($_FILES["wf_file"][size][$i] > ($file_size * 1024))
{
$msg = "용량이 {$file_size}KB 이상되는 이미지 파일은 업로드 되지 않습니다.\\n\\n만약, 이미지가 업로드 되지 않았다면 용량이 초과한 경우일 겁니다.";
}
$file = "./data/file/$bo_table/{$file_name}_s.jpg";
if ($_FILES["wf_file"][error][$i] == 0 || $_POST[wf_cont][$i] || file_exists($file))
{
$sql = " insert $file_table
set wr_id = '$wr_id',
wf_id = '$i',
wf_cont = '{$_POST[wf_cont][$i]}' ";
$result = @mysql_query($sql);
if (!$result)
{
$sql = " update $file_table
set wf_cont = '{$_POST[wf_cont][$i]}'
where wr_id = '$wr_id'
and wf_id = '$i' ";
@mysql_query($sql);
}
}
else
{
$sql = " delete from $file_table where wr_id = '$wr_id' and wf_id = '$i' ";
@mysql_query($sql);
}
}
if ($msg)
echo "<script> alert('$msg'); </script>";
//print_r2($_FILES); exit;
?>
참고하세요. ^^*
gbdelete.skin.php
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
if (!defined("_CONFIG_SKIN_"))
include "$board_skin/config.skin.php";
$file_table = "$cfg[write_table_prefix]{$bo_table}_file";
// 업로드된 파일을 삭제함
for ($k=0; $k<$file_max; $k++) {
$file_name = get_thumb_filename($wr_id, $k);
@unlink("./data/file/$bo_table/${file_name}.jpg");
@unlink("./data/file/$bo_table/${file_name}_s.jpg");
@unlink("./data/file/$bo_table/${file_name}_s.jpgThumb");
}
// 행 삭제
$sql = " delete from $file_table where wr_id = '$wr_id' ";
sql_query($sql);
?>
gbupdate.skin.php
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
include "$board_skin/config.skin.php";
$msg = "";
for ($i=count($_POST["wf_cont"])-1; $i>=0; $i--)
{
if ($_POST[wf_id_del][$i])
{
$file_name = get_thumb_filename($wr_id, $i);
@unlink("./data/file/$bo_table/${file_name}.jpg");
@unlink("./data/file/$bo_table/${file_name}_s.jpg");
@unlink("./data/file/$bo_table/${file_name}_s.jpgThumb");
$sql = " delete from $file_table where wr_id = '$wr_id' and wf_id = '$i' ";
sql_query($sql);
continue;
}
$file_name = get_thumb_filename($wr_id, $i);
if ($_FILES["wf_file"][error][$i] == 0 && $_FILES["wf_file"][size][$i] <= ($file_size * 1024))
{
$src_file = $_FILES["wf_file"][tmp_name][$i];
$dst_file = $image = "./data/file/$bo_table/$file_name.jpg";
move_uploaded_file($src_file, $dst_file);
$size = getimagesize($image);
$src = imagecreatefromjpeg($image);
// 이미지 높이 비율
$rate = $size[1] / $size[0];
// 작은이미지의 높이
$simg_height = (int)($simg_width * $rate);
// 이미지가 jpg 라면
if ($src)
{
// 이미지(소) 생성
$dst = imagecreatetruecolor($simg_width, $simg_height);
// 1.00.05 gd 버전에 따라
if (function_exists("imagecopyresampled")) {
imagecopyresampled($dst, $src, 0, 0, 0, 0, $simg_width, $simg_height, $size[0], $size[1]);
} else {
// 1.00.02 imagecopyresized -> imagecopyresampled 로 교체
imagecopyresized($dst, $src, 0, 0, 0, 0, $simg_width, $simg_height, $size[0], $size[1]);
}
imagejpeg($dst, "./data/file/$bo_table/{$file_name}_s.jpg", $image_quality);
}
}
else if ($_FILES["wf_file"][size][$i] > ($file_size * 1024))
{
$msg = "용량이 {$file_size}KB 이상되는 이미지 파일은 업로드 되지 않습니다.\\n\\n만약, 이미지가 업로드 되지 않았다면 용량이 초과한 경우일 겁니다.";
}
$file = "./data/file/$bo_table/{$file_name}_s.jpg";
if ($_FILES["wf_file"][error][$i] == 0 || $_POST[wf_cont][$i] || file_exists($file))
{
$sql = " insert $file_table
set wr_id = '$wr_id',
wf_id = '$i',
wf_cont = '{$_POST[wf_cont][$i]}' ";
$result = @mysql_query($sql);
if (!$result)
{
$sql = " update $file_table
set wf_cont = '{$_POST[wf_cont][$i]}'
where wr_id = '$wr_id'
and wf_id = '$i' ";
@mysql_query($sql);
}
}
else
{
$sql = " delete from $file_table where wr_id = '$wr_id' and wf_id = '$i' ";
@mysql_query($sql);
}
}
if ($msg)
echo "<script> alert('$msg'); </script>";
//print_r2($_FILES); exit;
?>
gnu3/bbs/gbdelete.php 파일중 105 라인을 보시면 아래와 같은 코드가있습니다.
파일 #1,#2는 아래의 코드로 삭제되지만,
폼에서 추가되었던 파일에 대한 처리를 해주지 않았다면 삭제 되지 않을꺼 같네요..
제가 멀티갤러리 스킨을써보지 않아서 ㅠㅠ;
만일 밑의 형태의 변수로써 5개의 파일까지 사용하게 수정하였다면 아래의 코드를 수정하시기 바랍니다.
===================================== 수정 전 =============================================
// 파일삭제
@unlink("./data/file/$bo_table/$write[wr_file1]");
@unlink("./data/file/$bo_table/$write[wr_file2]");
===================================== 수정 후 =============================================
// 파일삭제
for ($i=1; $i<=$cfg[file_count]; $i++) { // 추가된 파일 갯수 5개라면
if (file_exists("./data/file/$bo_table/$write[wr_file{$i}]")) {
@unlink("./data/file/$bo_table/$write[wr_file{$i}]");
}
}
==========================================================================================
이코드는 향후 개발자님에 의해서 수정되어야 할부분 같네요..
파일 #1,#2는 아래의 코드로 삭제되지만,
폼에서 추가되었던 파일에 대한 처리를 해주지 않았다면 삭제 되지 않을꺼 같네요..
제가 멀티갤러리 스킨을써보지 않아서 ㅠㅠ;
만일 밑의 형태의 변수로써 5개의 파일까지 사용하게 수정하였다면 아래의 코드를 수정하시기 바랍니다.
===================================== 수정 전 =============================================
// 파일삭제
@unlink("./data/file/$bo_table/$write[wr_file1]");
@unlink("./data/file/$bo_table/$write[wr_file2]");
===================================== 수정 후 =============================================
// 파일삭제
for ($i=1; $i<=$cfg[file_count]; $i++) { // 추가된 파일 갯수 5개라면
if (file_exists("./data/file/$bo_table/$write[wr_file{$i}]")) {
@unlink("./data/file/$bo_table/$write[wr_file{$i}]");
}
}
==========================================================================================
이코드는 향후 개발자님에 의해서 수정되어야 할부분 같네요..