diff --git a/adm/popular_list.php b/adm/popular_list.php
index cc16fae58..725039337 100644
--- a/adm/popular_list.php
+++ b/adm/popular_list.php
@@ -57,7 +57,7 @@ $sql = " select *
limit {$from_record}, {$rows} ";
$result = sql_query($sql);
-$listall = '전체목록';
+$listall = '전체목록';
$g5['title'] = '인기검색어관리';
include_once('./admin.head.php');
diff --git a/bbs/qadelete.php b/bbs/qadelete.php
index efa1b050e..07373f40d 100644
--- a/bbs/qadelete.php
+++ b/bbs/qadelete.php
@@ -17,7 +17,7 @@ if(!$count)
for($i=0; $i<$count; $i++) {
$qa_id = $tmp_array[$i];
- $sql = " select qa_id, qa_type, qa_status, qa_parent, qa_content, qa_file1, qa_file2
+ $sql = " select qa_id, mb_id, qa_type, qa_status, qa_parent, qa_content, qa_file1, qa_file2
from {$g5['qa_content_table']}
where qa_id = '$qa_id' ";
$row = sql_fetch($sql);
@@ -25,6 +25,10 @@ for($i=0; $i<$count; $i++) {
if(!$row['qa_id'])
continue;
+ // 자신의 글이 아니면 건너뜀
+ if($is_admin != 'super' && $row['mb_id'] != $member['mb_id'])
+ continue;
+
// 첨부파일 삭제
for($k=1; $k<=2; $k++) {
@unlink(G5_DATA_PATH.'/qa/'.$row['qa_file'.$k]);
diff --git a/bbs/qawrite_update.php b/bbs/qawrite_update.php
index 232678ab4..1235969f2 100644
--- a/bbs/qawrite_update.php
+++ b/bbs/qawrite_update.php
@@ -10,8 +10,6 @@ $w == u : 수정
if($is_guest)
alert('회원이시라면 로그인 후 이용해 보십시오.', './login.php?url='.urlencode(G5_BBS_URL.'/qalist.php'));
-$qaconfig = get_qa_config();
-
$msg = array();
// e-mail 체크
diff --git a/bbs/write.php b/bbs/write.php
index 4a8e9672f..da62a1917 100644
--- a/bbs/write.php
+++ b/bbs/write.php
@@ -3,9 +3,6 @@ include_once('./_common.php');
include_once(G5_EDITOR_LIB);
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
-set_session('ss_bo_table', $_REQUEST['bo_table']);
-set_session('ss_wr_id', $_REQUEST['wr_id']);
-
if (!$board['bo_table']) {
alert('존재하지 않는 게시판입니다.', G5_URL);
}
@@ -294,10 +291,10 @@ $homepage = "";
if ($w == "" || $w == "r") {
if ($is_member) {
if (isset($write['wr_name'])) {
- $name = get_text(cut_str($write['wr_name'],20));
+ $name = get_text(cut_str(stripslashes($write['wr_name']),20));
}
- $email = $member['mb_email'];
- $homepage = get_text($member['mb_homepage']);
+ $email = get_email_address($member['mb_email']);
+ $homepage = get_text(stripslashes($member['mb_homepage']));
}
}
@@ -318,9 +315,9 @@ if ($w == '') {
}
}
- $name = get_text(cut_str($write['wr_name'],20));
+ $name = get_text(cut_str(stripslashes($write['wr_name']),20));
$email = get_email_address($write['wr_email']);
- $homepage = get_text($write['wr_homepage']);
+ $homepage = get_text(stripslashes($write['wr_homepage']));
for ($i=1; $i<=G5_LINK_COUNT; $i++) {
$write['wr_link'.$i] = get_text($write['wr_link'.$i]);
@@ -353,6 +350,9 @@ if ($w == '') {
}
}
+set_session('ss_bo_table', $_REQUEST['bo_table']);
+set_session('ss_wr_id', $_REQUEST['wr_id']);
+
$subject = "";
if (isset($write['wr_subject'])) {
$subject = str_replace("\"", """, get_text(cut_str($write['wr_subject'], 255), 0));
diff --git a/bbs/write_update.php b/bbs/write_update.php
index 857889f90..7adaed4fe 100644
--- a/bbs/write_update.php
+++ b/bbs/write_update.php
@@ -53,8 +53,8 @@ if (empty($_POST)) {
}
$w = $_POST['w'];
-$wr_link1 = trim(strip_tags($_POST['wr_link1']));
-$wr_link2 = trim(strip_tags($_POST['wr_link2']));
+$wr_link1 = trim(strip_tags($wr_link1));
+$wr_link2 = trim(strip_tags($wr_link2));
$notice_array = explode(",", $board['bo_notice']);
@@ -177,112 +177,6 @@ if ($w == '' || $w == 'r') {
if (!isset($_POST['wr_subject']) || !trim($_POST['wr_subject']))
alert('제목을 입력하여 주십시오.');
-// 디렉토리가 없다면 생성합니다. (퍼미션도 변경하구요.)
-@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 $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).'_'.str_replace('%', '', urlencode(str_replace(' ', '_', $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);
- }
-}
-
if ($w == '' || $w == 'r') {
if ($member['mb_id']) {
@@ -412,14 +306,24 @@ if ($w == '' || $w == 'r') {
$wr_homepage = addslashes(clean_xss_tags($member['mb_homepage']));
} else {
$mb_id = $wr['mb_id'];
- $wr_name = $wr['wr_name'];
- $wr_email = $wr['wr_email'];
- $wr_homepage = $wr['wr_homepage'];
+ if(isset($_POST['wr_name']) && $_POST['wr_name'])
+ $wr_name = clean_xss_tags(trim($_POST['wr_name']));
+ else
+ $wr_name = addslashes(clean_xss_tags($wr['wr_name']));
+ if(isset($_POST['wr_email']) && $_POST['wr_email'])
+ $wr_email = get_email_address(trim($_POST['wr_email']));
+ else
+ $wr_email = addslashes($wr['wr_email']);
+ if(isset($_POST['wr_homepage']) && $_POST['wr_homepage'])
+ $wr_homepage = addslashes(clean_xss_tags($_POST['wr_homepage']));
+ else
+ $wr_homepage = addslashes(clean_xss_tags($wr['wr_homepage']));
}
} else {
$mb_id = "";
// 비회원의 경우 이름이 누락되는 경우가 있음
- //if (!trim($wr_name)) alert("이름은 필히 입력하셔야 합니다.");
+ if (!trim($wr_name)) alert("이름은 필히 입력하셔야 합니다.");
+ $wr_name = clean_xss_tags(trim($_POST['wr_name']));
$wr_email = get_email_address(trim($_POST['wr_email']));
}
@@ -487,8 +391,112 @@ if (!$group['gr_use_access'] && $board['bo_read_level'] < 2 && !$secret) {
naver_syndi_ping($bo_table, $wr_id);
}
-//------------------------------------------------------------------------------
+// 디렉토리가 없다면 생성합니다. (퍼미션도 변경하구요.)
+@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 $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).'_'.str_replace('%', '', urlencode(str_replace(' ', '_', $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);
+ }
+}
+
// 나중에 테이블에 저장하는 이유는 $wr_id 값을 저장해야 하기 때문입니다.
for ($i=0; $i