|
|
|
14년 전
|
조회 1,160
|
|
|
|
14년 전
|
조회 1,997
|
|
|
|
14년 전
|
조회 1,148
|
|
|
관리자
|
14년 전
|
조회 1,366
|
|
|
|
14년 전
|
조회 1,208
|
|
|
|
14년 전
|
조회 1,987
|
|
|
|
14년 전
|
조회 1,408
|
|
|
|
14년 전
|
조회 1,629
|
|
|
|
14년 전
|
조회 1,328
|
|
|
|
14년 전
|
조회 2,609
|
|
|
|
14년 전
|
조회 1,369
|
|
|
|
14년 전
|
조회 1,943
|
|
|
|
14년 전
|
조회 1,786
|
|
|
|
14년 전
|
조회 2,453
|
|
|
|
14년 전
|
조회 2,157
|
|
|
|
14년 전
|
조회 1,812
|
|
|
|
14년 전
|
조회 1.1만
|
|
|
|
14년 전
|
조회 2,393
|
|
|
|
14년 전
|
조회 1,934
|
|
|
|
14년 전
|
조회 1,784
|
|
|
꿈이아빠
|
14년 전
|
조회 1,840
|
|
|
|
14년 전
|
조회 2,384
|
|
|
관리자
|
14년 전
|
조회 2,624
|
|
|
|
14년 전
|
조회 1,834
|
|
|
|
14년 전
|
조회 1,156
|
|
|
|
14년 전
|
조회 1,701
|
|
|
관리자
|
14년 전
|
조회 2,664
|
|
|
아이스웨덴™
|
14년 전
|
조회 1,803
|
|
|
|
14년 전
|
조회 2,341
|
|
|
|
14년 전
|
조회 1,849
|
댓글 12개
예: localhost/gnuboard4/cheditor5/imageUpload/delete.php?img=/..\..\..\dbconfig.php
알려주셔서 감사합니다.
//$random_name = random_generator() . $ext;
$random_name = abs(ip2long($_SERVER['REMOTE_ADDR'])) . '_' . random_generator() . $ext;
cheditor5/imageUpload/delete.php 를
<?php
require_once("_config.php");
// ---------------------------------------------------------------------------
$delete = trim($_GET['img']);
// 파일의 경로에서 파일명만 얻어낸다. \ 나 / 는 제거된다.
preg_match('/[0-9a-z_]+\.(gif|png|jpe?g)$/i', $delete, $m);
$delete = $m[0];
// 파일의 아이피 부분만 잘라내서 자신의 아이피인지 비교한다.
list($ip2long, $filename) = explode('_', $delete);
if ($ip2long != abs(ip2long($_SERVER['REMOTE_ADDR']))) die(false);
$filepath = sprintf("%s/%s", SAVE_DIR, $delete);
$r = unlink($filepath);
echo $r ? true : false;
?>
이렇게 수정해 보았습니다.
확인이 가능하신지요?
require_once("_config.php");
$delete = basename(trim($_GET['img']));
if (preg_match('/^[0-9a-z_]+\.(gif|png|jpe?g|tiff?|bmp)$/i', $delete, $dump)) {
// 파일의 아이피 부분만 잘라내서 자신의 아이피인지 비교한다.
list($ip2long, $filename) = explode('_', $delete);
if ($ip2long != abs(ip2long($_SERVER['REMOTE_ADDR']))) die(false);
$filepath = sprintf("%s/%s", SAVE_DIR, $delete);
$r = unlink($filepath);
echo $r ? true : false;
}
else echo false;
그런데 이것의 문제는 사용자가 항상 아이피가 같을 가능성이 많지 않다는 겁니다.
아이피가 다를 이유가 없습니다.
tiff 는 모르겠는데 bmp 는 용량이 큰 관계로 빼는것이 좋을것 같습니다.
CHEDITOR 에서도 gif, png, jpe?g 만 가능합니다.
오늘중으로 패치해서 올리도록 하겠습니다.
감사합니다.
새글 작성시에 세션을 설정해서 delete.php에서 그 세션을 요구하게 하는 방법이있고 수정시에는 delete.php에 bo_table과 wr_id를 같이 넘겨서 작성자가 맞는 경우나 어드민인 경우를 확인한 후에 지우게 하는 방법이 있습니다.
1. bbs/write.php:
=================
다음을 찾은 후:
include_once("$g4[path]/head.sub.php");
그 앞에 다음을 추가: * 반드시 그 앞 줄에 넣으세요. 뒷줄이 아닙니다 *
$_SESSION['imageUploads'] = array(
'agent'=>md5($_SERVER['HTTP_USER_AGENT']),
'ip'=>md5($_SERVER['REMOTE_ADDR']),
'images'=>array()
);
// 혹은 set_session('imageUploads', array(...)); 식으로 해도 된다.
2. bbs/write_update.php:
========================
다음을 찾은 후:
@include_once("$board_skin_path/write_update.tail.skin.php");
그 다음 줄에 추가:
unset($_SESSION['imageUploads']);// 혹은 set_session('imageUloads', null);로 해도 된다.
3. cheditor5/imageUpload/upload.php:
====================================
다음을 찾은 후
echo $rdata;
그 앞에 다음을 추가: * 반드시 그 앞 줄에 넣으세요. 뒷줄이 아닙니다 *
$_SESSION['imageUploads'][images][] = $random_name;
4. cheditor5/imageUpload/delete.php:
<?php
require_once("_config.php");
// ---------------------------------------------------------------------------
$delete = basename(trim($_GET['img']));
if (!preg_match('/^[0-9a-z_]+\.(gif|png|jpe?g|tiff?)$/i', $delete, $dump)) die(false);
$filepath = sprintf("%s/%s", SAVE_DIR, $delete);
if (!$member['mb_id'] ||
!$_SESSION['imageUploads'] ||
$_SESSION['imageUploads']['agent'] != md5($_SERVER['HTTP_USER_AGENT']) ||
$_SESSION['imageUploads'['ip'] != md5($_SERVER['REMOTE_ADDR']) ||
!in_array($delete, $_SESSION['imageUploads']['images'])
) die(false);
$r = unlink($filepath);
echo $r ? true : false;
?>
이렇게 세션을 이용하면 write_update.php에서 $wr_content에 <img>태그 확인해서 $_SESSION['imageUploads']['images']에 등록된 이미지들 중 $wr_content에 없는 것들을 삭제하는 루틴을 만들 수도 있습니다...