first commit 2
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
include_once('../common.php');
|
||||
|
||||
// 커뮤니티 사용여부
|
||||
if(defined('G5_COMMUNITY_USE') && G5_COMMUNITY_USE === false) {
|
||||
if (!defined('G5_USE_SHOP') || !G5_USE_SHOP)
|
||||
die('<p>쇼핑몰 설치 후 이용해 주십시오.</p>');
|
||||
|
||||
define('_SHOP_', true);
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
include_once(G5_PATH.'/_head.php');
|
||||
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
include_once(G5_PATH.'/_tail.php');
|
||||
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
if (!$is_member) die('0');
|
||||
|
||||
$uid = isset($_REQUEST['uid']) ? preg_replace('/[^0-9]/', '', $_REQUEST['uid']) : 0;
|
||||
$subject = isset($_REQUEST['subject']) ? preg_replace("#[\\\]+$#", "", substr(trim($_POST['subject']),0,255)) : '';
|
||||
$content = isset($_REQUEST['content']) ? preg_replace("#[\\\]+$#", "", substr(trim($_POST['content']),0,65536)) : '';
|
||||
|
||||
if ($subject && $content) {
|
||||
$sql = " select count(*) as cnt from {$g5['autosave_table']} where mb_id = '{$member['mb_id']}' and as_subject = '$subject' and as_content = '$content' ";
|
||||
$row = sql_fetch($sql);
|
||||
if (!$row['cnt']) {
|
||||
$sql = " insert into {$g5['autosave_table']} set mb_id = '{$member['mb_id']}', as_uid = '{$uid}', as_subject = '$subject', as_content = '$content', as_datetime = '".G5_TIME_YMDHIS."' on duplicate key update as_subject = '$subject', as_content = '$content', as_datetime = '".G5_TIME_YMDHIS."' ";
|
||||
$result = sql_query($sql, false);
|
||||
|
||||
echo autosave_count($member['mb_id']);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
include_once("./_common.php");
|
||||
|
||||
if (!$is_member) die("0");
|
||||
|
||||
$as_id = isset($_REQUEST['as_id']) ? (int)$_REQUEST['as_id'] : 0;
|
||||
|
||||
$sql = " delete from {$g5['autosave_table']} where mb_id = '{$member['mb_id']}' and as_id = {$as_id} ";
|
||||
$result = sql_query($sql);
|
||||
if (!$result) {
|
||||
echo "-1";
|
||||
}
|
||||
|
||||
echo autosave_count($member['mb_id']);
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
if (!$is_member) die('');
|
||||
|
||||
$sql = " select as_id, as_uid, as_subject, as_datetime from {$g5['autosave_table']} where mb_id = '{$member['mb_id']}' order by as_id desc ";
|
||||
$result = sql_query($sql);
|
||||
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
|
||||
echo "<list>\n";
|
||||
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
$subject = htmlspecialchars(utf8_strcut($row['as_subject'], 25), ENT_QUOTES);
|
||||
$datetime = substr($row['as_datetime'],2,14);
|
||||
echo "<item>\n";
|
||||
echo "<id>{$row['as_id']}</id>\n";
|
||||
echo "<uid>{$row['as_uid']}</uid>\n";
|
||||
echo "<subject><![CDATA[{$subject}]]></subject>\n";
|
||||
echo "<datetime>{$datetime}</datetime>\n";
|
||||
echo "</item>\n";
|
||||
}
|
||||
echo "</list>";
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
if (!$is_member) die('');
|
||||
|
||||
$as_id = isset($_REQUEST['as_id']) ? (int) $_REQUEST['as_id'] : 0;
|
||||
|
||||
$sql = " select as_subject, as_content from {$g5['autosave_table']} where mb_id = '{$member['mb_id']}' and as_id = {$as_id} ";
|
||||
$row = sql_fetch($sql);
|
||||
$subject = $row['as_subject'];
|
||||
$content = $row['as_content'];
|
||||
|
||||
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
|
||||
echo "<item>\n";
|
||||
echo "<subject><![CDATA[{$subject}]]></subject>\n";
|
||||
echo "<content><![CDATA[{$content}]]></content>\n";
|
||||
echo "</item>\n";
|
||||
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$ss_name = 'ss_comment_token';
|
||||
|
||||
set_session($ss_name, '');
|
||||
|
||||
$token = _token();
|
||||
|
||||
set_session($ss_name, $token);
|
||||
|
||||
die(json_encode(array('token'=>$token)));
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$subject = isset($_POST['subject']) ? strip_tags($_POST['subject']) : '';
|
||||
$content = isset($_POST['content']) ? strip_tags($_POST['content']) : '';
|
||||
|
||||
//$filter = explode(",", strtolower(trim($config['cf_filter'])));
|
||||
// strtolower 에 의한 한글 변형으로 아래 코드로 대체 (곱슬최씨님이 알려 주셨습니다.)
|
||||
$filter = explode(",", trim($config['cf_filter']));
|
||||
for ($i=0; $i<count($filter); $i++) {
|
||||
$str = $filter[$i];
|
||||
|
||||
// 제목 필터링 (찾으면 중지)
|
||||
$subj = $cont = "";
|
||||
$pos = stripos($subject, $str);
|
||||
if ($pos !== false) {
|
||||
$subj = $str;
|
||||
break;
|
||||
}
|
||||
|
||||
// 내용 필터링 (찾으면 중지)
|
||||
$pos = stripos($content, $str);
|
||||
if ($pos !== false) {
|
||||
$cont = $str;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
die("{\"subject\":\"{$subj}\",\"content\":\"{$cont}\"}");
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_LIB_PATH.'/register.lib.php');
|
||||
|
||||
$mb_email = isset($_POST['reg_mb_email']) ? trim($_POST['reg_mb_email']) : '';
|
||||
$mb_id = isset($_POST['reg_mb_id']) ? trim($_POST['reg_mb_id']) : '';
|
||||
|
||||
set_session('ss_check_mb_email', '');
|
||||
|
||||
if ($msg = empty_mb_email($mb_email)) die($msg);
|
||||
if ($msg = valid_mb_email($mb_email)) die($msg);
|
||||
if ($msg = prohibit_mb_email($mb_email)) die($msg);
|
||||
if ($msg = exist_mb_email($mb_email, $mb_id)) die($msg);
|
||||
|
||||
set_session('ss_check_mb_email', $mb_email);
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_LIB_PATH.'/register.lib.php');
|
||||
|
||||
$mb_hp = isset($_POST['reg_mb_hp']) ? trim($_POST['reg_mb_hp']) : '';
|
||||
$mb_id = isset($_POST['reg_mb_id']) ? trim($_POST['reg_mb_id']) : '';
|
||||
|
||||
if ($msg = valid_mb_hp($mb_hp)) die($msg);
|
||||
//if ($msg = exist_mb_hp($mb_hp, $mb_id)) die($msg);
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_LIB_PATH.'/register.lib.php');
|
||||
|
||||
$mb_id = isset($_POST['reg_mb_id']) ? trim($_POST['reg_mb_id']) : '';
|
||||
|
||||
set_session('ss_check_mb_id', '');
|
||||
|
||||
if ($msg = empty_mb_id($mb_id)) die($msg);
|
||||
if ($msg = valid_mb_id($mb_id)) die($msg);
|
||||
if ($msg = count_mb_id($mb_id)) die($msg);
|
||||
if ($msg = exist_mb_id($mb_id)) die($msg);
|
||||
if ($msg = reserve_mb_id($mb_id)) die($msg);
|
||||
|
||||
set_session('ss_check_mb_id', $mb_id);
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_LIB_PATH.'/register.lib.php');
|
||||
|
||||
$mb_nick = isset($_POST['reg_mb_nick']) ? trim($_POST['reg_mb_nick']) : '';
|
||||
$mb_id = isset($_POST['reg_mb_id']) ? trim($_POST['reg_mb_id']) : '';
|
||||
|
||||
set_session('ss_check_mb_nick', '');
|
||||
|
||||
if ($msg = empty_mb_nick($mb_nick)) die($msg);
|
||||
if ($msg = valid_mb_nick($mb_nick)) die($msg);
|
||||
if ($msg = count_mb_nick($mb_nick)) die($msg);
|
||||
if ($msg = exist_mb_nick($mb_nick, $mb_id)) die($msg);
|
||||
if ($msg = reserve_mb_nick($mb_nick)) die($msg);
|
||||
|
||||
set_session('ss_check_mb_nick', $mb_nick);
|
||||
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
include_once("./_common.php");
|
||||
include_once(G5_LIB_PATH."/register.lib.php");
|
||||
|
||||
$mb_recommend = isset($_POST["reg_mb_recommend"]) ? trim($_POST["reg_mb_recommend"]) : '';
|
||||
|
||||
if ($msg = valid_mb_id($mb_recommend)) {
|
||||
die("추천인의 아이디는 영문자, 숫자, _ 만 입력하세요.");
|
||||
}
|
||||
if (!($msg = exist_mb_id($mb_recommend))) {
|
||||
die("입력하신 추천인은 존재하지 않는 아이디 입니다.");
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$token_case = isset($_POST['token_case']) ? preg_replace('/[^0-9a-z_]/i', '', $_POST['token_case']) : '';
|
||||
|
||||
if( $token_case ){
|
||||
$token = _token();
|
||||
set_session('ss_'.$token_case.'_token', $token);
|
||||
die(json_encode(array('error'=>'', 'token'=>$token, 'url'=>'')));
|
||||
}
|
||||
+116
@@ -0,0 +1,116 @@
|
||||
<?php
|
||||
global $lo_location;
|
||||
global $lo_url;
|
||||
|
||||
include_once('./_common.php');
|
||||
|
||||
if($error) {
|
||||
$g5['title'] = "오류안내 페이지";
|
||||
} else {
|
||||
$g5['title'] = "결과안내 페이지";
|
||||
}
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
// 필수 입력입니다.
|
||||
// 양쪽 공백 없애기
|
||||
// 필수 (선택 혹은 입력)입니다.
|
||||
// 전화번호 형식이 올바르지 않습니다. 하이픈(-)을 포함하여 입력하세요.
|
||||
// 이메일주소 형식이 아닙니다.
|
||||
// 한글이 아닙니다. (자음, 모음만 있는 한글은 처리하지 않습니다.)
|
||||
// 한글이 아닙니다.
|
||||
// 한글, 영문, 숫자가 아닙니다.
|
||||
// 한글, 영문이 아닙니다.
|
||||
// 숫자가 아닙니다.
|
||||
// 영문이 아닙니다.
|
||||
// 영문 또는 숫자가 아닙니다.
|
||||
// 영문, 숫자, _ 가 아닙니다.
|
||||
// 최소 글자 이상 입력하세요.
|
||||
// 이미지 파일이 아닙니다..gif .jpg .png 파일만 가능합니다.
|
||||
// 파일만 가능합니다.
|
||||
// 공백이 없어야 합니다.
|
||||
|
||||
$msg = isset($msg) ? strip_tags($msg) : '';
|
||||
$msg2 = str_replace("\\n", "<br>", $msg);
|
||||
|
||||
$url = isset($url) ? clean_xss_tags($url, 1) : '';
|
||||
if (!$url) $url = isset($_SERVER['HTTP_REFERER']) ? clean_xss_tags($_SERVER['HTTP_REFERER'], 1) : '';
|
||||
|
||||
$url = preg_replace("/[\<\>\'\"\\\'\\\"\(\)]/", "", $url);
|
||||
$url = preg_replace('/\r\n|\r|\n|[^\x20-\x7e]/','', $url);
|
||||
|
||||
// url 체크
|
||||
check_url_host($url, $msg);
|
||||
|
||||
if($error) {
|
||||
$header2 = "다음 항목에 오류가 있습니다.";
|
||||
} else {
|
||||
$header2 = "다음 내용을 확인해 주세요.";
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
alert("<?php echo $msg; ?>");
|
||||
<?php if ($url) { ?>
|
||||
document.location.replace("<?php echo str_replace('&', '&', $url); ?>");
|
||||
<?php } else { ?>
|
||||
history.back();
|
||||
<?php } ?>
|
||||
</script>
|
||||
|
||||
<noscript>
|
||||
<div id="validation_check">
|
||||
<h1><?php echo $header2 ?></h1>
|
||||
<p class="cbg">
|
||||
<?php echo $msg2 ?>
|
||||
</p>
|
||||
<?php if($post) { ?>
|
||||
<form method="post" action="<?php echo $url ?>">
|
||||
<?php
|
||||
foreach($_POST as $key => $value) {
|
||||
|
||||
$key = clean_xss_tags($key);
|
||||
$value = clean_xss_tags($value);
|
||||
|
||||
if(strlen($value) < 1)
|
||||
continue;
|
||||
|
||||
if(preg_match("/pass|pwd|capt|url/", $key))
|
||||
continue;
|
||||
?>
|
||||
<input type="hidden" name="<?php echo htmlspecialchars($key); ?>" value="<?php echo htmlspecialchars($value); ?>">
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<input type="submit" value="돌아가기">
|
||||
</form>
|
||||
<?php } else { ?>
|
||||
<div class="btn_confirm">
|
||||
<a href="<?php echo $url ?>">돌아가기</a>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<?php /*
|
||||
<article id="validation_check">
|
||||
<header>
|
||||
<hgroup>
|
||||
<!-- <h1>회원가입 정보 입력 확인</h1> --> <!-- 수행 중이던 작업 내용 -->
|
||||
<h1><?php echo $header ?></h1> <!-- 수행 중이던 작업 내용 -->
|
||||
<h2><?php echo $header2 ?></h2>
|
||||
</hgroup>
|
||||
</header>
|
||||
<p>
|
||||
<!-- <strong>항목</strong> 오류내역 -->
|
||||
<!--
|
||||
<strong>이름</strong> 필수 입력입니다. 한글만 입력할 수 있습니다.<br>
|
||||
<strong>이메일</strong> 올바르게 입력하지 않았습니다.<br>
|
||||
-->
|
||||
<?php echo $msg2 ?>
|
||||
</p>
|
||||
|
||||
<a href="<?php echo $url ?>">돌아가기</a>
|
||||
</article>
|
||||
*/ ?>
|
||||
</div>
|
||||
</noscript>
|
||||
|
||||
<?php
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
$msg = isset($msg) ? strip_tags($msg) : '';
|
||||
|
||||
$msg2 = str_replace("\\n", "<br>", $msg);
|
||||
|
||||
if($error) {
|
||||
$header2 = "다음 항목에 오류가 있습니다.";
|
||||
$msg3 = "새창을 닫으시고 이전 작업을 다시 시도해 주세요.";
|
||||
} else {
|
||||
$header2 = "다음 내용을 확인해 주세요.";
|
||||
$msg3 = "새창을 닫으신 후 서비스를 이용해 주세요.";
|
||||
}
|
||||
?>
|
||||
|
||||
<script>
|
||||
alert("<?php echo $msg; ?>");
|
||||
try {
|
||||
window.close();
|
||||
} catch(error) {
|
||||
history.back();
|
||||
}
|
||||
|
||||
setTimeout(function() {
|
||||
if (window.history.length) {
|
||||
window.history.back();
|
||||
}
|
||||
}, 500);
|
||||
</script>
|
||||
|
||||
<noscript>
|
||||
<div id="validation_check">
|
||||
<h1><?php echo $header2 ?></h1>
|
||||
<p class="cbg">
|
||||
<?php echo $msg2 ?>
|
||||
</p>
|
||||
<p class="cbg">
|
||||
<?php echo $msg3 ?>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<?php /*
|
||||
<article id="validation_check">
|
||||
<header>
|
||||
<hgroup>
|
||||
<!-- <h1>회원가입 정보 입력 확인</h1> --> <!-- 수행 중이던 작업 내용 -->
|
||||
<h1><?php echo $header ?></h1> <!-- 수행 중이던 작업 내용 -->
|
||||
<h2><?php echo $header2 ?></h2>
|
||||
</hgroup>
|
||||
</header>
|
||||
<p>
|
||||
<!-- <strong>항목</strong> 오류내역 -->
|
||||
<!--
|
||||
<strong>이름</strong> 필수 입력입니다. 한글만 입력할 수 있습니다.<br>
|
||||
<strong>이메일</strong> 올바르게 입력하지 않았습니다.<br>
|
||||
-->
|
||||
<?php echo $msg2 ?>
|
||||
</p>
|
||||
<p>
|
||||
<?php echo $msg3 ?>
|
||||
</p>
|
||||
|
||||
</article>
|
||||
*/ ?>
|
||||
|
||||
</noscript>
|
||||
|
||||
<?php
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
+237
@@ -0,0 +1,237 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
if (!$board['bo_table']) {
|
||||
alert('존재하지 않는 게시판입니다.', G5_URL);
|
||||
}
|
||||
|
||||
check_device($board['bo_device']);
|
||||
|
||||
if (isset($write['wr_is_comment']) && $write['wr_is_comment']) {
|
||||
goto_url(get_pretty_url($bo_table, $write['wr_parent'], '#c_'.$wr_id));
|
||||
}
|
||||
|
||||
if (!$bo_table) {
|
||||
$msg = "bo_table 값이 넘어오지 않았습니다.\\n\\nboard.php?bo_table=code 와 같은 방식으로 넘겨 주세요.";
|
||||
alert($msg);
|
||||
}
|
||||
|
||||
$g5['board_title'] = ((G5_IS_MOBILE && $board['bo_mobile_subject']) ? $board['bo_mobile_subject'] : $board['bo_subject']);
|
||||
|
||||
// wr_id 값이 있으면 글읽기
|
||||
if ((isset($wr_id) && $wr_id) || (isset($wr_seo_title) && $wr_seo_title)) {
|
||||
// 글이 없을 경우 해당 게시판 목록으로 이동
|
||||
if (!isset($write['wr_id'])) {
|
||||
$msg = '글이 존재하지 않습니다.\\n\\n글이 삭제되었거나 이동된 경우입니다.';
|
||||
alert($msg, get_pretty_url($bo_table));
|
||||
}
|
||||
|
||||
// 그룹접근 사용
|
||||
if (isset($group['gr_use_access']) && $group['gr_use_access']) {
|
||||
if ($is_guest) {
|
||||
$msg = "비회원은 이 게시판에 접근할 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.";
|
||||
alert($msg, G5_BBS_URL.'/login.php?wr_id='.$wr_id.$qstr.'&url='.urlencode(get_pretty_url($bo_table, $wr_id, $qstr)));
|
||||
}
|
||||
|
||||
// 그룹관리자 이상이라면 통과
|
||||
if ($is_admin == "super" || $is_admin == "group") {
|
||||
;
|
||||
} else {
|
||||
// 그룹접근
|
||||
$sql = " select count(*) as cnt from {$g5['group_member_table']} where gr_id = '{$board['gr_id']}' and mb_id = '{$member['mb_id']}' ";
|
||||
$row = sql_fetch($sql);
|
||||
if (!$row['cnt']) {
|
||||
alert("접근 권한이 없으므로 글읽기가 불가합니다.\\n\\n궁금하신 사항은 관리자에게 문의 바랍니다.", G5_URL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 로그인된 회원의 권한이 설정된 읽기 권한보다 작다면
|
||||
if ($member['mb_level'] < $board['bo_read_level']) {
|
||||
if ($is_member)
|
||||
alert('글을 읽을 권한이 없습니다.', G5_URL);
|
||||
else
|
||||
alert('글을 읽을 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.', G5_BBS_URL.'/login.php?wr_id='.$wr_id.$qstr.'&url='.urlencode(get_pretty_url($bo_table, $wr_id, $qstr)));
|
||||
}
|
||||
|
||||
// 본인확인을 사용한다면
|
||||
if ($board['bo_use_cert'] != '' && $config['cf_cert_use'] && !$is_admin) {
|
||||
// 인증된 회원만 가능
|
||||
if ($is_guest) {
|
||||
alert('이 게시판은 본인확인 하신 회원님만 글읽기가 가능합니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.', G5_BBS_URL.'/login.php?wr_id='.$wr_id.$qstr.'&url='.urlencode(get_pretty_url($bo_table, $wr_id, $qstr)));
|
||||
}
|
||||
|
||||
if (strlen($member['mb_dupinfo']) == 64 && $member['mb_certify']) { // 본인 인증 된 계정 중에서 di로 저장 되었을 경우에만
|
||||
goto_url(G5_BBS_URL."/member_cert_refresh.php?url=".urlencode(get_pretty_url($bo_table, $wr_id, $qstr)));
|
||||
}
|
||||
|
||||
if ($board['bo_use_cert'] == 'cert' && !$member['mb_certify']) {
|
||||
alert('이 게시판은 본인확인 하신 회원님만 글읽기가 가능합니다.\\n\\n회원정보 수정에서 본인확인을 해주시기 바랍니다.', G5_URL);
|
||||
}
|
||||
|
||||
if ($board['bo_use_cert'] == 'adult' && !$member['mb_adult']) {
|
||||
alert('이 게시판은 본인확인으로 성인인증 된 회원님만 글읽기가 가능합니다.\\n\\n현재 성인인데 글읽기가 안된다면 회원정보 수정에서 본인확인을 다시 해주시기 바랍니다.', G5_URL);
|
||||
}
|
||||
}
|
||||
|
||||
// 자신의 글이거나 관리자라면 통과
|
||||
if (($write['mb_id'] && $write['mb_id'] === $member['mb_id']) || $is_admin) {
|
||||
;
|
||||
} else {
|
||||
// 비밀글이라면
|
||||
if (strstr($write['wr_option'], "secret"))
|
||||
{
|
||||
// 회원이 비밀글을 올리고 관리자가 답변글을 올렸을 경우
|
||||
// 회원이 관리자가 올린 답변글을 바로 볼 수 없던 오류를 수정
|
||||
$is_owner = false;
|
||||
if ($write['wr_reply'] && $member['mb_id'])
|
||||
{
|
||||
$sql = " select mb_id from {$write_table}
|
||||
where wr_num = '{$write['wr_num']}'
|
||||
and wr_reply = ''
|
||||
and wr_is_comment = 0 ";
|
||||
$row = sql_fetch($sql);
|
||||
if ($row['mb_id'] === $member['mb_id'])
|
||||
$is_owner = true;
|
||||
}
|
||||
|
||||
$ss_name = 'ss_secret_'.$bo_table.'_'.$write['wr_num'];
|
||||
|
||||
if (!$is_owner)
|
||||
{
|
||||
//$ss_name = "ss_secret_{$bo_table}_{$wr_id}";
|
||||
// 한번 읽은 게시물의 번호는 세션에 저장되어 있고 같은 게시물을 읽을 경우는 다시 비밀번호를 묻지 않습니다.
|
||||
// 이 게시물이 저장된 게시물이 아니면서 관리자가 아니라면
|
||||
//if ("$bo_table|$write['wr_num']" != get_session("ss_secret"))
|
||||
if (!get_session($ss_name))
|
||||
goto_url(G5_BBS_URL.'/password.php?w=s&bo_table='.$bo_table.'&wr_id='.$wr_id.$qstr);
|
||||
}
|
||||
|
||||
set_session($ss_name, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
// 한번 읽은글은 브라우저를 닫기전까지는 카운트를 증가시키지 않음
|
||||
$ss_name = 'ss_view_'.$bo_table.'_'.$wr_id;
|
||||
if (!get_session($ss_name))
|
||||
{
|
||||
sql_query(" update {$write_table} set wr_hit = wr_hit + 1 where wr_id = '{$wr_id}' ");
|
||||
|
||||
// 자신의 글이면 통과
|
||||
if ($write['mb_id'] && $write['mb_id'] === $member['mb_id']) {
|
||||
;
|
||||
} else if ($is_guest && $board['bo_read_level'] == 1 && $write['wr_ip'] == $_SERVER['REMOTE_ADDR']) {
|
||||
// 비회원이면서 읽기레벨이 1이고 등록된 아이피가 같다면 자신의 글이므로 통과
|
||||
;
|
||||
} else {
|
||||
// 글읽기 포인트가 설정되어 있다면
|
||||
if ($config['cf_use_point'] && $board['bo_read_point'] && $member['mb_point'] + $board['bo_read_point'] < 0)
|
||||
alert('보유하신 포인트('.number_format($member['mb_point']).')가 없거나 모자라서 글읽기('.number_format($board['bo_read_point']).')가 불가합니다.\\n\\n포인트를 모으신 후 다시 글읽기 해 주십시오.');
|
||||
|
||||
insert_point($member['mb_id'], $board['bo_read_point'], ((G5_IS_MOBILE && $board['bo_mobile_subject']) ? $board['bo_mobile_subject'] : $board['bo_subject']).' '.$wr_id.' 글읽기', $bo_table, $wr_id, '읽기');
|
||||
}
|
||||
|
||||
set_session($ss_name, TRUE);
|
||||
}
|
||||
|
||||
$g5['title'] = strip_tags(conv_subject($write['wr_subject'], 255))." > ".$g5['board_title'];
|
||||
} else {
|
||||
if ($member['mb_level'] < $board['bo_list_level']) {
|
||||
if ($member['mb_id'])
|
||||
alert('목록을 볼 권한이 없습니다.', G5_URL);
|
||||
else
|
||||
alert('목록을 볼 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.', G5_BBS_URL.'/login.php?'.$qstr.'&url='.urlencode(G5_BBS_URL.'/board.php?bo_table='.$bo_table.($qstr?'&':'')));
|
||||
}
|
||||
|
||||
// 본인확인을 사용한다면
|
||||
if ($board['bo_use_cert'] != '' && $config['cf_cert_use'] && !$is_admin) {
|
||||
// 인증된 회원만 가능
|
||||
if ($is_guest) {
|
||||
alert('이 게시판은 본인확인 하신 회원님만 글읽기가 가능합니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.', G5_BBS_URL.'/login.php?wr_id='.$wr_id.$qstr.'&url='.urlencode(get_pretty_url($bo_table, $wr_id, $qstr)));
|
||||
}
|
||||
|
||||
if (strlen($member['mb_dupinfo']) == 64 && $member['mb_certify']) { // 본인 인증 된 계정 중에서 di로 저장 되었을 경우에만
|
||||
goto_url(G5_BBS_URL."/member_cert_refresh.php?url=".urlencode(get_pretty_url($bo_table, $wr_id, $qstr)));
|
||||
}
|
||||
|
||||
if ($board['bo_use_cert'] == 'cert' && !$member['mb_certify']) {
|
||||
alert('이 게시판은 본인확인 하신 회원님만 글읽기가 가능합니다.\\n\\n회원정보 수정에서 본인확인을 해주시기 바랍니다.', G5_URL);
|
||||
}
|
||||
|
||||
if ($board['bo_use_cert'] == 'adult' && !$member['mb_adult']) {
|
||||
alert('이 게시판은 본인확인으로 성인인증 된 회원님만 글읽기가 가능합니다.\\n\\n현재 성인인데 글읽기가 안된다면 회원정보 수정에서 본인확인을 다시 해주시기 바랍니다.', G5_URL);
|
||||
}
|
||||
}
|
||||
|
||||
if (!isset($page) || (isset($page) && $page == 0)) $page = 1;
|
||||
|
||||
$g5['title'] = $g5['board_title'].' '.$page.' 페이지';
|
||||
}
|
||||
|
||||
$is_auth = $is_admin ? true : false;
|
||||
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
$width = $board['bo_table_width'];
|
||||
if ($width <= 100)
|
||||
$width .= '%';
|
||||
else
|
||||
$width .='px';
|
||||
|
||||
// IP보이기 사용 여부
|
||||
$ip = "";
|
||||
$is_ip_view = $board['bo_use_ip_view'];
|
||||
if ($is_admin) {
|
||||
$is_ip_view = true;
|
||||
if ($write && array_key_exists('wr_ip', $write)) {
|
||||
$ip = $write['wr_ip'];
|
||||
}
|
||||
} else {
|
||||
// 관리자가 아니라면 IP 주소를 감춘후 보여줍니다.
|
||||
if (isset($write['wr_ip'])) {
|
||||
$ip = preg_replace("/([0-9]+).([0-9]+).([0-9]+).([0-9]+)/", G5_IP_DISPLAY, $write['wr_ip']);
|
||||
}
|
||||
}
|
||||
|
||||
// 분류 사용
|
||||
$is_category = false;
|
||||
$category_name = '';
|
||||
if ($board['bo_use_category']) {
|
||||
$is_category = true;
|
||||
if (array_key_exists('ca_name', $write)) {
|
||||
$category_name = $write['ca_name']; // 분류명
|
||||
}
|
||||
}
|
||||
|
||||
// 추천 사용
|
||||
$is_good = false;
|
||||
if ($board['bo_use_good'])
|
||||
$is_good = true;
|
||||
|
||||
// 비추천 사용
|
||||
$is_nogood = false;
|
||||
if ($board['bo_use_nogood'])
|
||||
$is_nogood = true;
|
||||
|
||||
$admin_href = "";
|
||||
// 최고관리자 또는 그룹관리자라면
|
||||
if ($member['mb_id'] && ($is_admin === 'super' || $group['gr_admin'] === $member['mb_id']))
|
||||
$admin_href = G5_ADMIN_URL.'/board_form.php?w=u&bo_table='.$bo_table;
|
||||
|
||||
include_once(G5_BBS_PATH.'/board_head.php');
|
||||
|
||||
// 게시물 아이디가 있다면 게시물 보기를 INCLUDE
|
||||
if (isset($wr_id) && $wr_id) {
|
||||
include_once(G5_BBS_PATH.'/view.php');
|
||||
}
|
||||
|
||||
// 전체목록보이기 사용이 "예" 또는 wr_id 값이 없다면 목록을 보임
|
||||
//if ($board['bo_use_list_view'] || empty($wr_id))
|
||||
if ($member['mb_level'] >= $board['bo_list_level'] && $board['bo_use_list_view'] || empty($wr_id))
|
||||
include_once (G5_BBS_PATH.'/list.php');
|
||||
|
||||
include_once(G5_BBS_PATH.'/board_tail.php');
|
||||
|
||||
echo "\n<!-- 사용스킨 : ".(G5_IS_MOBILE ? $board['bo_mobile_skin'] : $board['bo_skin'])." -->\n";
|
||||
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
// 게시판 관리의 상단 내용
|
||||
if (G5_IS_MOBILE) {
|
||||
// 모바일의 경우 설정을 따르지 않는다.
|
||||
include_once(G5_BBS_PATH.'/_head.php');
|
||||
echo run_replace('board_mobile_content_head', html_purifier(stripslashes($board['bo_mobile_content_head'])), $board);
|
||||
} else {
|
||||
// 상단 파일 경로를 입력하지 않았다면 기본 상단 파일도 include 하지 않음
|
||||
if (trim($board['bo_include_head'])) {
|
||||
if (is_include_path_check($board['bo_include_head'])) { //파일경로 체크
|
||||
@include ($board['bo_include_head']);
|
||||
} else { //파일경로가 올바르지 않으면 기본파일을 가져옴
|
||||
include_once(G5_BBS_PATH.'/_head.php');
|
||||
}
|
||||
}
|
||||
echo run_replace('board_content_head', html_purifier(stripslashes($board['bo_content_head'])), $board);
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$count = (isset($_POST['chk_wr_id']) && is_array($_POST['chk_wr_id'])) ? count($_POST['chk_wr_id']) : 0;
|
||||
$post_btn_submit = isset($_POST['btn_submit']) ? clean_xss_tags($_POST['btn_submit'], 1, 1) : '';
|
||||
|
||||
if(!$count) {
|
||||
alert(addcslashes($post_btn_submit, '"\\/').' 하실 항목을 하나 이상 선택하세요.');
|
||||
}
|
||||
|
||||
if($post_btn_submit === '선택삭제') {
|
||||
include './delete_all.php';
|
||||
} else if($post_btn_submit === '선택복사') {
|
||||
$sw = 'copy';
|
||||
include './move.php';
|
||||
} else if($post_btn_submit === '선택이동') {
|
||||
$sw = 'move';
|
||||
include './move.php';
|
||||
} else {
|
||||
alert('올바른 방법으로 이용해 주세요.');
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
// 게시판 관리의 하단 파일 경로
|
||||
if (G5_IS_MOBILE) {
|
||||
echo run_replace('board_mobile_content_tail', html_purifier(stripslashes($board['bo_mobile_content_tail'])), $board);
|
||||
// 모바일의 경우 설정을 따르지 않는다.
|
||||
include_once(G5_BBS_PATH.'/_tail.php');
|
||||
} else {
|
||||
echo run_replace('board_content_tail', html_purifier(stripslashes($board['bo_content_tail'])), $board);
|
||||
// 하단 파일 경로를 입력하지 않았다면 기본 하단 파일도 include 하지 않음
|
||||
if (trim($board['bo_include_tail'])) {
|
||||
if (is_include_path_check($board['bo_include_tail'])) { //파일경로 체크
|
||||
@include ($board['bo_include_tail']);
|
||||
} else { //파일경로가 올바르지 않으면 기본파일을 가져옴
|
||||
include_once(G5_BBS_PATH.'/_tail.php');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
$pattern1 = "/[\<\>\'\"\\\'\\\"\(\)]/";
|
||||
$pattern2 = "/\r\n|\r|\n|[^\x20-\x7e]/";
|
||||
|
||||
$url1 = isset($url1) ? preg_replace($pattern1, "", clean_xss_tags($url1, 1)) : '';
|
||||
$url1 = preg_replace($pattern2, "", $url1);
|
||||
$url2 = isset($url2) ? preg_replace($pattern1, "", clean_xss_tags($url2, 1)) : '';
|
||||
$url2 = preg_replace($pattern2, "", $url2);
|
||||
$url3 = isset($url3) ? preg_replace($pattern1, "", clean_xss_tags($url3, 1)) : '';
|
||||
$url3 = preg_replace($pattern2, "", $url3);
|
||||
|
||||
$msg = isset($msg) ? $msg : '';
|
||||
$header = isset($header) ? $msg : '';
|
||||
|
||||
// url 체크
|
||||
check_url_host($url1);
|
||||
check_url_host($url2);
|
||||
check_url_host($url3);
|
||||
?>
|
||||
|
||||
<script>
|
||||
var conf = "<?php echo strip_tags($msg); ?>";
|
||||
if (confirm(conf)) {
|
||||
document.location.replace("<?php echo $url1; ?>");
|
||||
} else {
|
||||
document.location.replace("<?php echo $url2; ?>");
|
||||
}
|
||||
</script>
|
||||
|
||||
<noscript>
|
||||
<article id="confirm_check">
|
||||
<header>
|
||||
<hgroup>
|
||||
<h1><?php echo get_text(strip_tags($header)); ?></h1> <!-- 수행 중이던 작업 내용 -->
|
||||
<h2>아래 내용을 확인해 주세요.</h2>
|
||||
</hgroup>
|
||||
</header>
|
||||
<p>
|
||||
<?php echo get_text(strip_tags($msg)); ?>
|
||||
</p>
|
||||
|
||||
<a href="<?php echo $url1; ?>">확인</a>
|
||||
<a href="<?php echo $url2; ?>">취소</a><br><br>
|
||||
<a href="<?php echo $url3; ?>">돌아가기</a>
|
||||
</article>
|
||||
</noscript>
|
||||
|
||||
<?php
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
+145
@@ -0,0 +1,145 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$co_id = isset($_GET['co_id']) ? preg_replace('/[^a-z0-9_]/i', '', $_GET['co_id']) : 0;
|
||||
|
||||
// 💡 [핵심 수정] 커스텀 페이지 스킨 로드 로직
|
||||
$custom_page_path = G5_THEME_PATH . '/skin/page/' . $co_id . '/index.php';
|
||||
if (is_file($custom_page_path)) {
|
||||
// 페이지 제목 등을 설정할 수 있도록 변수 선언
|
||||
$g5['title'] = get_text($co_id); // 폴더명을 기본 제목으로 사용
|
||||
|
||||
// 헤더 파일을 포함합니다.
|
||||
include_once(G5_PATH . '/_head.php');
|
||||
|
||||
// 커스텀 페이지 파일을 포함합니다.
|
||||
include_once($custom_page_path);
|
||||
|
||||
// 푸터 파일을 포함하고 실행을 종료합니다.
|
||||
include_once(G5_PATH . '/_tail.php');
|
||||
return;
|
||||
}
|
||||
// 커스텀 페이지가 없으면 아래의 기존 내용관리 로직을 실행합니다.
|
||||
|
||||
|
||||
$co_seo_title = isset($_GET['co_seo_title']) ? clean_xss_tags($_GET['co_seo_title'], 1, 1) : '';
|
||||
|
||||
|
||||
//dbconfig파일에 $g5['content_table'] 배열변수가 있는지 체크
|
||||
if( !isset($g5['content_table']) ){
|
||||
die('<meta charset="utf-8">관리자 모드에서 게시판관리->내용 관리를 먼저 확인해 주세요.');
|
||||
}
|
||||
|
||||
// 내용
|
||||
if($co_seo_title){
|
||||
$co = get_content_by_field($g5['content_table'], 'content', 'co_seo_title', generate_seo_title($co_seo_title));
|
||||
$co_id = isset($co['co_id']) ? $co['co_id'] : 0;
|
||||
} else {
|
||||
$co = get_content_db($co_id);
|
||||
}
|
||||
|
||||
|
||||
// 레벨확인
|
||||
if(!$is_admin) {
|
||||
|
||||
if(isset($co['co_level']) && $co['co_level'] > 0) {
|
||||
|
||||
if(isset($co['co_level_opt']) && $co['co_level_opt'] == 2) {
|
||||
if (isset($co['co_level']) && $co['co_level'] != $member['mb_level']) {
|
||||
alert('권한이 없습니다.', G5_URL);
|
||||
}
|
||||
} else {
|
||||
if (isset($co['co_level']) && $co['co_level'] > $member['mb_level']) {
|
||||
alert('권한이 없습니다.', G5_URL);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if( ! (isset($co['co_seo_title']) && $co['co_seo_title']) && isset($co['co_id']) && $co['co_id'] ){
|
||||
seo_title_update($g5['content_table'], $co['co_id'], 'content');
|
||||
}
|
||||
|
||||
if (G5_IS_MOBILE) {
|
||||
include_once(G5_MOBILE_PATH.'/content.php');
|
||||
return;
|
||||
}
|
||||
|
||||
if (! (isset($co['co_id']) && $co['co_id']))
|
||||
alert('등록된 내용이 없습니다.');
|
||||
|
||||
$g5['title'] = $co['co_subject'];
|
||||
|
||||
if ($co['co_include_head'] && is_include_path_check($co['co_include_head']))
|
||||
@include_once($co['co_include_head']);
|
||||
else
|
||||
include_once('./_head.php');
|
||||
|
||||
// KVE-2019-0828 취약점 내용
|
||||
$co['co_tag_filter_use'] = 1;
|
||||
$str = conv_content($co['co_content'], $co['co_html'], $co['co_tag_filter_use']);
|
||||
|
||||
// $src 를 $dst 로 변환
|
||||
$src = $dst = array();
|
||||
$src[] = "/{{쇼핑몰명}}|{{홈페이지제목}}/";
|
||||
$dst[] = $config['cf_title'];
|
||||
if(isset($default) && isset($default['de_admin_company_name'])){
|
||||
$src[] = "/{{회사명}}|{{상호}}/";
|
||||
$dst[] = isset($default['de_admin_company_name']) ? $default['de_admin_company_name'] : '';
|
||||
$src[] = "/{{대표자명}}/";
|
||||
$dst[] = isset($default['de_admin_company_owner']) ? $default['de_admin_company_owner'] : '';
|
||||
$src[] = "/{{사업자등록번호}}/";
|
||||
$dst[] = isset($default['de_admin_company_saupja_no']) ? $default['de_admin_company_saupja_no'] : '';
|
||||
$src[] = "/{{대표전화번호}}/";
|
||||
$dst[] = isset($default['de_admin_company_tel']) ? $default['de_admin_company_tel'] : '';
|
||||
$src[] = "/{{팩스번호}}/";
|
||||
$dst[] = isset($default['de_admin_company_fax']) ? $default['de_admin_company_fax'] : '';
|
||||
$src[] = "/{{통신판매업신고번호}}/";
|
||||
$dst[] = isset($default['de_admin_company_tongsin_no']) ? $default['de_admin_company_tongsin_no'] : '';
|
||||
$src[] = "/{{사업장우편번호}}/";
|
||||
$dst[] = isset($default['de_admin_company_zip']) ? $default['de_admin_company_zip'] : '';
|
||||
$src[] = "/{{사업장주소}}/";
|
||||
$dst[] = isset($default['de_admin_company_addr']) ? $default['de_admin_company_addr'] : '';
|
||||
$src[] = "/{{운영자명}}|{{관리자명}}/";
|
||||
$dst[] = isset($default['de_admin_name']) ? $default['de_admin_name'] : '';
|
||||
$src[] = "/{{운영자e-mail}}|{{관리자e-mail}}/i";
|
||||
$dst[] = isset($default['de_admin_email']) ? $default['de_admin_email'] : '';
|
||||
$src[] = "/{{정보관리책임자명}}/";
|
||||
$dst[] = isset($default['de_admin_info_name']) ? $default['de_admin_info_name'] : '';
|
||||
$src[] = "/{{정보관리책임자e-mail}}|{{정보책임자e-mail}}/i";
|
||||
$dst[] = isset($default['de_admin_info_email']) ? $default['de_admin_info_email'] : '';
|
||||
}
|
||||
$str = preg_replace($src, $dst, $str);
|
||||
|
||||
// 스킨경로
|
||||
if(trim($co['co_skin']) == '')
|
||||
$co['co_skin'] = 'basic';
|
||||
|
||||
$content_skin_path = get_skin_path('content', $co['co_skin']);
|
||||
$content_skin_url = get_skin_url('content', $co['co_skin']);
|
||||
$skin_file = $content_skin_path.'/content.skin.php';
|
||||
|
||||
if ($is_admin)
|
||||
echo run_replace('content_admin_button_html', '<div class="ctt_admin"><a href="'.G5_ADMIN_URL.'/contentform.php?w=u&co_id='.$co_id.'" class="btn_admin btn"><span class="sound_only">내용 수정</span><i class="fa fa-cog fa-spin fa-fw"></i></a></div>', $co);
|
||||
?>
|
||||
|
||||
<?php
|
||||
if(is_file($skin_file)) {
|
||||
$himg = G5_DATA_PATH.'/content/'.$co_id.'_h';
|
||||
if (file_exists($himg)) // 상단 이미지
|
||||
echo run_replace('content_head_image_html', '<div id="ctt_himg" class="ctt_img"><img src="'.G5_DATA_URL.'/content/'.$co_id.'_h" alt=""></div>', $co);
|
||||
|
||||
include($skin_file);
|
||||
|
||||
$timg = G5_DATA_PATH.'/content/'.$co_id.'_t';
|
||||
if (file_exists($timg)) // 하단 이미지
|
||||
echo run_replace('content_tail_image_html', '<div id="ctt_timg" class="ctt_img"><img src="'.G5_DATA_URL.'/content/'.$co_id.'_t" alt=""></div>', $co);
|
||||
} else {
|
||||
echo '<p>'.str_replace(G5_PATH.'/', '', $skin_file).'이 존재하지 않습니다.</p>';
|
||||
}
|
||||
|
||||
if ($co['co_include_tail'] && is_include_path_check($co['co_include_tail']))
|
||||
@include_once($co['co_include_tail']);
|
||||
else
|
||||
include_once('./_tail.php');
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$g5['title'] = '현재접속자';
|
||||
include_once('./_head.php');
|
||||
|
||||
$list = array();
|
||||
|
||||
$sql = " select a.mb_id, b.mb_nick, b.mb_name, b.mb_email, b.mb_homepage, b.mb_open, b.mb_point, a.lo_ip, a.lo_location, a.lo_url
|
||||
from {$g5['login_table']} a left join {$g5['member_table']} b on (a.mb_id = b.mb_id)
|
||||
where a.mb_id <> '{$config['cf_admin']}'
|
||||
order by a.lo_datetime desc ";
|
||||
$result = sql_query($sql);
|
||||
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
$row['lo_url'] = get_text($row['lo_url']);
|
||||
$list[$i] = $row;
|
||||
|
||||
if ($row['mb_id']) {
|
||||
$list[$i]['name'] = get_sideview($row['mb_id'], cut_str($row['mb_nick'], $config['cf_cut_name']), $row['mb_email'], $row['mb_homepage']);
|
||||
} else {
|
||||
if ($is_admin)
|
||||
$list[$i]['name'] = $row['lo_ip'];
|
||||
else
|
||||
$list[$i]['name'] = preg_replace("/([0-9]+).([0-9]+).([0-9]+).([0-9]+)/", G5_IP_DISPLAY, $row['lo_ip']);
|
||||
}
|
||||
|
||||
$list[$i]['num'] = sprintf('%03d',$i+1);
|
||||
}
|
||||
|
||||
include_once($connect_skin_path.'/current_connect.skin.php');
|
||||
|
||||
include_once('./_tail.php');
|
||||
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
// 최고관리자일 때만 실행
|
||||
if($config['cf_admin'] != $member['mb_id'] || $is_admin != 'super')
|
||||
return;
|
||||
|
||||
// 실행일 비교
|
||||
if(isset($config['cf_optimize_date']) && $config['cf_optimize_date'] >= G5_TIME_YMD)
|
||||
return;
|
||||
|
||||
// 설정일이 지난 접속자로그 삭제
|
||||
if($config['cf_visit_del'] > 0) {
|
||||
$tmp_before_date = date("Y-m-d", G5_SERVER_TIME - ($config['cf_visit_del'] * 86400));
|
||||
$sql = " delete from {$g5['visit_table']} where vi_date < '$tmp_before_date' ";
|
||||
sql_query($sql);
|
||||
sql_query(" OPTIMIZE TABLE `{$g5['visit_table']}`, `{$g5['visit_sum_table']}` ");
|
||||
}
|
||||
|
||||
// 설정일이 지난 인기검색어 삭제
|
||||
if($config['cf_popular_del'] > 0) {
|
||||
$tmp_before_date = date("Y-m-d", G5_SERVER_TIME - ($config['cf_popular_del'] * 86400));
|
||||
$sql = " delete from {$g5['popular_table']} where pp_date < '$tmp_before_date' ";
|
||||
sql_query($sql);
|
||||
sql_query(" OPTIMIZE TABLE `{$g5['popular_table']}` ");
|
||||
}
|
||||
|
||||
// 설정일이 지난 최근게시물 삭제
|
||||
if($config['cf_new_del'] > 0) {
|
||||
$sql = " delete from {$g5['board_new_table']} where (TO_DAYS('".G5_TIME_YMDHIS."') - TO_DAYS(bn_datetime)) > '{$config['cf_new_del']}' ";
|
||||
sql_query($sql);
|
||||
|
||||
// 데이터가 많으면 처리시간 때문에 브라우저 응답이 늦을수 있음
|
||||
if (defined('G5_USE_OPTIMIZE_DBTABLE') && G5_USE_OPTIMIZE_DBTABLE) {
|
||||
sql_query(" OPTIMIZE TABLE `{$g5['board_new_table']}` ");
|
||||
}
|
||||
}
|
||||
|
||||
// 설정일이 지난 쪽지 삭제
|
||||
if($config['cf_memo_del'] > 0) {
|
||||
$sql = " delete from {$g5['memo_table']} where (TO_DAYS('".G5_TIME_YMDHIS."') - TO_DAYS(me_send_datetime)) > '{$config['cf_memo_del']}' ";
|
||||
sql_query($sql);
|
||||
sql_query(" OPTIMIZE TABLE `{$g5['memo_table']}` ");
|
||||
}
|
||||
|
||||
// 탈퇴회원 자동 삭제
|
||||
if($config['cf_leave_day'] > 0) {
|
||||
$sql = " select mb_id from {$g5['member_table']}
|
||||
where (TO_DAYS('".G5_TIME_YMDHIS."') - TO_DAYS(mb_leave_date)) > '{$config['cf_leave_day']}'
|
||||
and mb_memo not regexp '^[0-9]{8}.*삭제함' ";
|
||||
$result = sql_query($sql);
|
||||
while ($row=sql_fetch_array($result))
|
||||
{
|
||||
// 회원자료 삭제
|
||||
member_delete($row['mb_id']);
|
||||
}
|
||||
}
|
||||
|
||||
// 음성 캡챠 파일 삭제
|
||||
$captcha_mp3 = glob(G5_DATA_PATH.'/cache/kcaptcha-*.mp3');
|
||||
if($captcha_mp3 && is_array($captcha_mp3)) {
|
||||
foreach ($captcha_mp3 as $file) {
|
||||
if (filemtime($file) + 86400 < G5_SERVER_TIME) {
|
||||
@unlink($file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 실행일 기록
|
||||
if(isset($config['cf_optimize_date'])) {
|
||||
sql_query(" update {$g5['config_table']} set cf_optimize_date = '".G5_TIME_YMD."' ");
|
||||
}
|
||||
+166
@@ -0,0 +1,166 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$delete_token = get_session('ss_delete_token');
|
||||
set_session('ss_delete_token', '');
|
||||
|
||||
if (!($token && $delete_token == $token))
|
||||
alert('토큰 에러로 삭제 불가합니다.');
|
||||
|
||||
//$wr = sql_fetch(" select * from $write_table where wr_id = '$wr_id' ");
|
||||
|
||||
$count_write = $count_comment = 0;
|
||||
|
||||
@include_once($board_skin_path.'/delete.head.skin.php');
|
||||
|
||||
if ($is_admin == 'super') // 최고관리자 통과
|
||||
;
|
||||
else if ($is_admin == 'group') { // 그룹관리자
|
||||
$mb = get_member($write['mb_id']);
|
||||
if ($member['mb_id'] != $group['gr_admin']) // 자신이 관리하는 그룹인가?
|
||||
alert('자신이 관리하는 그룹의 게시판이 아니므로 삭제할 수 없습니다.');
|
||||
else if ($member['mb_level'] < $mb['mb_level']) // 자신의 레벨이 크거나 같다면 통과
|
||||
alert('자신의 권한보다 높은 권한의 회원이 작성한 글은 삭제할 수 없습니다.');
|
||||
} else if ($is_admin == 'board') { // 게시판관리자이면
|
||||
$mb = get_member($write['mb_id']);
|
||||
if ($member['mb_id'] != $board['bo_admin']) // 자신이 관리하는 게시판인가?
|
||||
alert('자신이 관리하는 게시판이 아니므로 삭제할 수 없습니다.');
|
||||
else if ($member['mb_level'] < $mb['mb_level']) // 자신의 레벨이 크거나 같다면 통과
|
||||
alert('자신의 권한보다 높은 권한의 회원이 작성한 글은 삭제할 수 없습니다.');
|
||||
} else if ($member['mb_id']) {
|
||||
if ($member['mb_id'] !== $write['mb_id'])
|
||||
alert('자신의 글이 아니므로 삭제할 수 없습니다.');
|
||||
} else {
|
||||
if ($write['mb_id'])
|
||||
alert('로그인 후 삭제하세요.', G5_BBS_URL.'/login.php?url='.urlencode(get_pretty_url($bo_table, $wr_id)));
|
||||
else if (!check_password($wr_password, $write['wr_password']))
|
||||
alert('비밀번호가 틀리므로 삭제할 수 없습니다.');
|
||||
}
|
||||
|
||||
$len = strlen($write['wr_reply']);
|
||||
if ($len < 0) $len = 0;
|
||||
$reply = substr($write['wr_reply'], 0, $len);
|
||||
|
||||
// 원글만 구한다.
|
||||
$sql = " select count(*) as cnt from $write_table
|
||||
where wr_reply like '$reply%'
|
||||
and wr_id <> '{$write['wr_id']}'
|
||||
and wr_num = '{$write['wr_num']}'
|
||||
and wr_is_comment = 0 ";
|
||||
$row = sql_fetch($sql);
|
||||
if ($row['cnt'] && !$is_admin)
|
||||
alert('이 글과 관련된 답변글이 존재하므로 삭제 할 수 없습니다.\\n\\n우선 답변글부터 삭제하여 주십시오.');
|
||||
|
||||
// 코멘트 달린 원글의 삭제 여부
|
||||
$sql = " select count(*) as cnt from $write_table
|
||||
where wr_parent = '$wr_id'
|
||||
and mb_id <> '{$member['mb_id']}'
|
||||
and wr_is_comment = 1 ";
|
||||
$row = sql_fetch($sql);
|
||||
if ($row['cnt'] >= $board['bo_count_delete'] && !$is_admin)
|
||||
alert('이 글과 관련된 코멘트가 존재하므로 삭제 할 수 없습니다.\\n\\n코멘트가 '.$board['bo_count_delete'].'건 이상 달린 원글은 삭제할 수 없습니다.');
|
||||
|
||||
|
||||
// 사용자 코드 실행
|
||||
@include_once($board_skin_path.'/delete.skin.php');
|
||||
|
||||
// 💡 [핵심 추가] 휴지통 테이블 존재 여부 확인
|
||||
$is_trash_enabled = false;
|
||||
$chk_trash = sql_fetch("SHOW TABLES LIKE 'g5_board_trash'");
|
||||
if ($chk_trash) {
|
||||
$is_trash_enabled = true;
|
||||
}
|
||||
|
||||
// 나라오름님 수정 : 원글과 코멘트수가 정상적으로 업데이트 되지 않는 오류를 잡아 주셨습니다.
|
||||
//$sql = " select wr_id, mb_id, wr_comment from $write_table where wr_parent = '$write[wr_id]' order by wr_id ";
|
||||
$sql = " select wr_id, mb_id, wr_is_comment, wr_content from $write_table where wr_parent = '{$write['wr_id']}' order by wr_id ";
|
||||
$result = sql_query($sql);
|
||||
while ($row = sql_fetch_array($result))
|
||||
{
|
||||
// 원글이라면
|
||||
if (!$row['wr_is_comment'])
|
||||
{
|
||||
// 원글 포인트 삭제
|
||||
if (!delete_point($row['mb_id'], $bo_table, $row['wr_id'], '쓰기'))
|
||||
insert_point($row['mb_id'], $board['bo_write_point'] * (-1), "{$board['bo_subject']} {$row['wr_id']} 글삭제");
|
||||
|
||||
// 💡 [핵심 수정] 휴지통 기능이 활성화되어 있으면 파일 삭제를 건너뜀
|
||||
if (!$is_trash_enabled) {
|
||||
// 업로드된 파일이 있다면 파일삭제
|
||||
$sql2 = " select * from {$g5['board_file_table']} where bo_table = '$bo_table' and wr_id = '{$row['wr_id']}' ";
|
||||
$result2 = sql_query($sql2);
|
||||
while ($row2 = sql_fetch_array($result2)) {
|
||||
$delete_file = run_replace('delete_file_path', G5_DATA_PATH.'/file/'.$bo_table.'/'.str_replace('../', '', $row2['bf_file']), $row2);
|
||||
if( file_exists($delete_file) ){
|
||||
@unlink($delete_file);
|
||||
}
|
||||
// 썸네일삭제
|
||||
if(preg_match("/\.({$config['cf_image_extension']})$/i", $row2['bf_file'])) {
|
||||
delete_board_thumbnail($bo_table, $row2['bf_file']);
|
||||
}
|
||||
}
|
||||
|
||||
// 에디터 썸네일 삭제
|
||||
delete_editor_thumbnail($row['wr_content']);
|
||||
|
||||
// 파일테이블 행 삭제
|
||||
sql_query(" delete from {$g5['board_file_table']} where bo_table = '$bo_table' and wr_id = '{$row['wr_id']}' ");
|
||||
}
|
||||
|
||||
$count_write++;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 코멘트 포인트 삭제
|
||||
if (!delete_point($row['mb_id'], $bo_table, $row['wr_id'], '댓글'))
|
||||
insert_point($row['mb_id'], $board['bo_comment_point'] * (-1), "{$board['bo_subject']} {$write['wr_id']}-{$row['wr_id']} 댓글삭제");
|
||||
|
||||
$count_comment++;
|
||||
}
|
||||
}
|
||||
|
||||
// 💡 [핵심 추가] 휴지통으로 이동 (원글만)
|
||||
if ($is_trash_enabled) {
|
||||
// 이미 휴지통에 같은 글이 있는지 확인 (중복 방지)
|
||||
$chk_exist = sql_fetch(" select count(*) as cnt from g5_board_trash where bo_table = '{$bo_table}' and wr_id = '{$write['wr_id']}' ");
|
||||
if (!$chk_exist['cnt']) {
|
||||
$sql_trash = " INSERT INTO g5_board_trash
|
||||
( bo_table, wr_id, wr_subject, wr_content, mb_id, wr_name, wr_datetime, tr_datetime )
|
||||
VALUES
|
||||
( '{$bo_table}', '{$write['wr_id']}', '".addslashes($write['wr_subject'])."', '".addslashes($write['wr_content'])."', '{$write['mb_id']}', '".addslashes($write['wr_name'])."', '{$write['wr_datetime']}', '".G5_TIME_YMDHIS."' ) ";
|
||||
sql_query($sql_trash);
|
||||
}
|
||||
}
|
||||
|
||||
// 게시글과 댓글 삭제
|
||||
sql_query(" delete from $write_table where wr_parent = '{$write['wr_id']}' ");
|
||||
|
||||
// 최근게시물 삭제
|
||||
sql_query(" delete from {$g5['board_new_table']} where bo_table = '$bo_table' and wr_parent = '{$write['wr_id']}' ");
|
||||
|
||||
// 스크랩 삭제
|
||||
sql_query(" delete from {$g5['scrap_table']} where bo_table = '$bo_table' and wr_id = '{$write['wr_id']}' ");
|
||||
|
||||
/*
|
||||
// 공지사항 삭제
|
||||
$notice_array = explode("\n", trim($board['bo_notice']));
|
||||
$bo_notice = "";
|
||||
for ($k=0; $k<count($notice_array); $k++)
|
||||
if ((int)$write[wr_id] != (int)$notice_array[$k])
|
||||
$bo_notice .= $notice_array[$k] . "\n";
|
||||
$bo_notice = trim($bo_notice);
|
||||
*/
|
||||
$bo_notice = board_notice($board['bo_notice'], $write['wr_id']);
|
||||
sql_query(" update {$g5['board_table']} set bo_notice = '$bo_notice' where bo_table = '$bo_table' ");
|
||||
|
||||
// 글숫자 감소
|
||||
if ($count_write > 0 || $count_comment > 0)
|
||||
sql_query(" update {$g5['board_table']} set bo_count_write = bo_count_write - '$count_write', bo_count_comment = bo_count_comment - '$count_comment' where bo_table = '$bo_table' ");
|
||||
|
||||
@include_once($board_skin_path.'/delete.tail.skin.php');
|
||||
|
||||
delete_cache_latest($bo_table);
|
||||
|
||||
run_event('bbs_delete', $write, $board);
|
||||
|
||||
goto_url(short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&page='.$page.$qstr));
|
||||
@@ -0,0 +1,164 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
if(!$is_admin)
|
||||
alert('접근 권한이 없습니다.', G5_URL);
|
||||
|
||||
// 4.11
|
||||
@include_once($board_skin_path.'/delete_all.head.skin.php');
|
||||
|
||||
$count_write = 0;
|
||||
$count_comment = 0;
|
||||
|
||||
$tmp_array = array();
|
||||
if ($wr_id) // 건별삭제
|
||||
$tmp_array[0] = $wr_id;
|
||||
else // 일괄삭제
|
||||
$tmp_array = (isset($_POST['chk_wr_id']) && is_array($_POST['chk_wr_id'])) ? $_POST['chk_wr_id'] : array();
|
||||
|
||||
$chk_count = count($tmp_array);
|
||||
|
||||
if($chk_count > (G5_IS_MOBILE ? $board['bo_mobile_page_rows'] : $board['bo_page_rows']))
|
||||
alert('올바른 방법으로 이용해 주십시오.');
|
||||
|
||||
// 사용자 코드 실행
|
||||
@include_once($board_skin_path.'/delete_all.skin.php');
|
||||
|
||||
// 거꾸로 읽는 이유는 답변글부터 삭제가 되어야 하기 때문임
|
||||
for ($i=$chk_count-1; $i>=0; $i--)
|
||||
{
|
||||
$write = sql_fetch(" select * from $write_table where wr_id = '$tmp_array[$i]' ");
|
||||
|
||||
if ($is_admin == 'super') // 최고관리자 통과
|
||||
;
|
||||
else if ($is_admin == 'group') // 그룹관리자
|
||||
{
|
||||
$mb = get_member($write['mb_id']);
|
||||
if ($member['mb_id'] == $group['gr_admin']) // 자신이 관리하는 그룹인가?
|
||||
{
|
||||
if ($member['mb_level'] >= $mb['mb_level']) // 자신의 레벨이 크거나 같다면 통과
|
||||
;
|
||||
else
|
||||
continue;
|
||||
}
|
||||
else
|
||||
continue;
|
||||
}
|
||||
else if ($is_admin == 'board') // 게시판관리자이면
|
||||
{
|
||||
$mb = get_member($write['mb_id']);
|
||||
if ($member['mb_id'] == $board['bo_admin']) // 자신이 관리하는 게시판인가?
|
||||
if ($member['mb_level'] >= $mb['mb_level']) // 자신의 레벨이 크거나 같다면 통과
|
||||
;
|
||||
else
|
||||
continue;
|
||||
else
|
||||
continue;
|
||||
}
|
||||
else if ($member['mb_id'] && $member['mb_id'] == $write['mb_id']) // 자신의 글이라면
|
||||
{
|
||||
;
|
||||
}
|
||||
else if ($wr_password && !$write['mb_id'] && check_password($wr_password, $write['wr_password'])) // 비밀번호가 같다면
|
||||
{
|
||||
;
|
||||
}
|
||||
else
|
||||
continue; // 나머지는 삭제 불가
|
||||
|
||||
$len = strlen($write['wr_reply']);
|
||||
if ($len < 0) $len = 0;
|
||||
$reply = substr($write['wr_reply'], 0, $len);
|
||||
|
||||
// 원글만 구한다.
|
||||
$sql = " select count(*) as cnt from $write_table
|
||||
where wr_reply like '$reply%'
|
||||
and wr_id <> '{$write['wr_id']}'
|
||||
and wr_num = '{$write['wr_num']}'
|
||||
and wr_is_comment = 0 ";
|
||||
$row = sql_fetch($sql);
|
||||
if ($row['cnt'])
|
||||
continue;
|
||||
|
||||
// 나라오름님 수정 : 원글과 코멘트수가 정상적으로 업데이트 되지 않는 오류를 잡아 주셨습니다.
|
||||
//$sql = " select wr_id, mb_id, wr_comment from {$write_table} where wr_parent = '{$write[wr_id]}' order by wr_id ";
|
||||
$sql = " select wr_id, mb_id, wr_is_comment, wr_content from $write_table where wr_parent = '{$write['wr_id']}' order by wr_id ";
|
||||
$result = sql_query($sql);
|
||||
while ($row = sql_fetch_array($result))
|
||||
{
|
||||
// 원글이라면
|
||||
if (!$row['wr_is_comment'])
|
||||
{
|
||||
// 원글 포인트 삭제
|
||||
if (!delete_point($row['mb_id'], $bo_table, $row['wr_id'], '쓰기'))
|
||||
insert_point($row['mb_id'], $board['bo_write_point'] * (-1), "{$board['bo_subject']} {$row['wr_id']} 글 삭제");
|
||||
|
||||
// 업로드된 파일이 있다면
|
||||
$sql2 = " select * from {$g5['board_file_table']} where bo_table = '$bo_table' and wr_id = '{$row['wr_id']}' ";
|
||||
$result2 = sql_query($sql2);
|
||||
while ($row2 = sql_fetch_array($result2)) {
|
||||
// 파일삭제
|
||||
$delete_file = run_replace('delete_file_path', G5_DATA_PATH.'/file/'.$bo_table.'/'.str_replace('../', '',$row2['bf_file']), $row2);
|
||||
if( file_exists($delete_file) ){
|
||||
@unlink($delete_file);
|
||||
}
|
||||
|
||||
// 썸네일삭제
|
||||
if(preg_match("/\.({$config['cf_image_extension']})$/i", $row2['bf_file'])) {
|
||||
delete_board_thumbnail($bo_table, $row2['bf_file']);
|
||||
}
|
||||
}
|
||||
|
||||
// 에디터 썸네일 삭제
|
||||
delete_editor_thumbnail($row['wr_content']);
|
||||
|
||||
// 파일테이블 행 삭제
|
||||
sql_query(" delete from {$g5['board_file_table']} where bo_table = '$bo_table' and wr_id = '{$row['wr_id']}' ");
|
||||
|
||||
$count_write++;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 코멘트 포인트 삭제
|
||||
if (!delete_point($row['mb_id'], $bo_table, $row['wr_id'], '댓글'))
|
||||
insert_point($row['mb_id'], $board['bo_comment_point'] * (-1), "{$board['bo_subject']} {$write['wr_id']}-{$row['wr_id']} 댓글삭제");
|
||||
|
||||
$count_comment++;
|
||||
}
|
||||
}
|
||||
|
||||
// 게시글 삭제
|
||||
sql_query(" delete from $write_table where wr_parent = '{$write['wr_id']}' ");
|
||||
|
||||
// 최근게시물 삭제
|
||||
sql_query(" delete from {$g5['board_new_table']} where bo_table = '$bo_table' and wr_parent = '{$write['wr_id']}' ");
|
||||
|
||||
// 스크랩 삭제
|
||||
sql_query(" delete from {$g5['scrap_table']} where bo_table = '$bo_table' and wr_id = '{$write['wr_id']}' ");
|
||||
|
||||
/*
|
||||
// 공지사항 삭제
|
||||
$notice_array = explode(',', trim($board['bo_notice']));
|
||||
$bo_notice = "";
|
||||
for ($k=0; $k<count($notice_array); $k++)
|
||||
if ((int)$write['wr_id'] != (int)$notice_array[$k])
|
||||
$bo_notice .= $notice_array[$k].',';
|
||||
$bo_notice = trim($bo_notice);
|
||||
*/
|
||||
$bo_notice = board_notice($board['bo_notice'], $write['wr_id']);
|
||||
sql_query(" update {$g5['board_table']} set bo_notice = '$bo_notice' where bo_table = '$bo_table' ");
|
||||
$board['bo_notice'] = $bo_notice;
|
||||
}
|
||||
|
||||
// 글숫자 감소
|
||||
if ($count_write > 0 || $count_comment > 0)
|
||||
sql_query(" update {$g5['board_table']} set bo_count_write = bo_count_write - '$count_write', bo_count_comment = bo_count_comment - '$count_comment' where bo_table = '$bo_table' ");
|
||||
|
||||
// 4.11
|
||||
@include_once($board_skin_path.'/delete_all.tail.skin.php');
|
||||
|
||||
delete_cache_latest($bo_table);
|
||||
|
||||
run_event('bbs_delete_all', $tmp_array, $board);
|
||||
|
||||
goto_url(short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&page='.$page.$qstr));
|
||||
@@ -0,0 +1,92 @@
|
||||
<?php
|
||||
// 코멘트 삭제
|
||||
include_once('./_common.php');
|
||||
|
||||
$comment_id = isset($_REQUEST['comment_id']) ? (int) $_REQUEST['comment_id'] : 0;
|
||||
$token = isset($_REQUEST['token']) ? clean_xss_tags($_REQUEST['token']) : 0;
|
||||
|
||||
$delete_comment_token = get_session('ss_delete_comment_'.$comment_id.'_token');
|
||||
set_session('ss_delete_comment_'.$comment_id.'_token', '');
|
||||
|
||||
if (!($token && $delete_comment_token == $token))
|
||||
alert('토큰 에러로 삭제 불가합니다.');
|
||||
|
||||
// 4.1
|
||||
@include_once($board_skin_path.'/delete_comment.head.skin.php');
|
||||
|
||||
$write = sql_fetch(" select * from {$write_table} where wr_id = '{$comment_id}' ");
|
||||
|
||||
if (!$write['wr_id'] || !$write['wr_is_comment'])
|
||||
alert('등록된 코멘트가 없거나 코멘트 글이 아닙니다.');
|
||||
|
||||
if ($is_admin == 'super') // 최고관리자 통과
|
||||
;
|
||||
else if ($is_admin == 'group') { // 그룹관리자
|
||||
$mb = get_member($write['mb_id']);
|
||||
if ($member['mb_id'] === $group['gr_admin']) { // 자신이 관리하는 그룹인가?
|
||||
if ($member['mb_level'] >= $mb['mb_level']) // 자신의 레벨이 크거나 같다면 통과
|
||||
;
|
||||
else
|
||||
alert('그룹관리자의 권한보다 높은 회원의 코멘트이므로 삭제할 수 없습니다.');
|
||||
} else
|
||||
alert('자신이 관리하는 그룹의 게시판이 아니므로 코멘트를 삭제할 수 없습니다.');
|
||||
} else if ($is_admin === 'board') { // 게시판관리자이면
|
||||
$mb = get_member($write['mb_id']);
|
||||
if ($member['mb_id'] === $board['bo_admin']) { // 자신이 관리하는 게시판인가?
|
||||
if ($member['mb_level'] >= $mb['mb_level']) // 자신의 레벨이 크거나 같다면 통과
|
||||
;
|
||||
else
|
||||
alert('게시판관리자의 권한보다 높은 회원의 코멘트이므로 삭제할 수 없습니다.');
|
||||
} else
|
||||
alert('자신이 관리하는 게시판이 아니므로 코멘트를 삭제할 수 없습니다.');
|
||||
} else if ($member['mb_id']) {
|
||||
if ($member['mb_id'] !== $write['mb_id'])
|
||||
alert('자신의 글이 아니므로 삭제할 수 없습니다.');
|
||||
} else {
|
||||
if (!check_password($wr_password, $write['wr_password']))
|
||||
alert('비밀번호가 틀립니다.');
|
||||
}
|
||||
|
||||
$len = strlen($write['wr_comment_reply']);
|
||||
if ($len < 0) $len = 0;
|
||||
$comment_reply = substr($write['wr_comment_reply'], 0, $len);
|
||||
|
||||
$sql = " select count(*) as cnt from {$write_table}
|
||||
where wr_comment_reply like '{$comment_reply}%'
|
||||
and wr_id <> '{$comment_id}'
|
||||
and wr_parent = '{$write['wr_parent']}'
|
||||
and wr_comment = '{$write['wr_comment']}'
|
||||
and wr_is_comment = 1 ";
|
||||
$row = sql_fetch($sql);
|
||||
if ($row['cnt'] && !$is_admin)
|
||||
alert('이 코멘트와 관련된 답변코멘트가 존재하므로 삭제 할 수 없습니다.');
|
||||
|
||||
// 코멘트 포인트 삭제
|
||||
if (!delete_point($write['mb_id'], $bo_table, $comment_id, '댓글'))
|
||||
insert_point($write['mb_id'], $board['bo_comment_point'] * (-1), "{$board['bo_subject']} {$write['wr_parent']}-{$comment_id} 댓글삭제");
|
||||
|
||||
// 코멘트 삭제
|
||||
sql_query(" delete from {$write_table} where wr_id = '{$comment_id}' ");
|
||||
|
||||
// 코멘트가 삭제되므로 해당 게시물에 대한 최근 시간을 다시 얻는다.
|
||||
$sql = " select max(wr_datetime) as wr_last from {$write_table} where wr_parent = '{$write['wr_parent']}' ";
|
||||
$row = sql_fetch($sql);
|
||||
|
||||
// 원글의 코멘트 숫자를 감소
|
||||
sql_query(" update {$write_table} set wr_comment = wr_comment - 1, wr_last = '{$row['wr_last']}' where wr_id = '{$write['wr_parent']}' ");
|
||||
|
||||
// 코멘트 숫자 감소
|
||||
sql_query(" update {$g5['board_table']} set bo_count_comment = bo_count_comment - 1 where bo_table = '{$bo_table}' ");
|
||||
|
||||
// 새글 삭제
|
||||
sql_query(" delete from {$g5['board_new_table']} where bo_table = '{$bo_table}' and wr_id = '{$comment_id}' ");
|
||||
|
||||
// 사용자 코드 실행
|
||||
@include_once($board_skin_path.'/delete_comment.skin.php');
|
||||
@include_once($board_skin_path.'/delete_comment.tail.skin.php');
|
||||
|
||||
delete_cache_latest($bo_table);
|
||||
|
||||
run_event('bbs_delete_comment', $comment_id, $board);
|
||||
|
||||
goto_url(short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$write['wr_parent'].'&page='.$page. $qstr));
|
||||
@@ -0,0 +1,162 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
// clean the output buffer
|
||||
ob_end_clean();
|
||||
|
||||
$no = isset($_REQUEST['no']) ? (int) $_REQUEST['no'] : 0;
|
||||
|
||||
@include_once($board_skin_path.'/download.head.skin.php');
|
||||
|
||||
// 쿠키에 저장된 ID값과 넘어온 ID값을 비교하여 같지 않을 경우 오류 발생
|
||||
// 다른곳에서 링크 거는것을 방지하기 위한 코드
|
||||
if (!get_session('ss_view_'.$bo_table.'_'.$wr_id))
|
||||
alert('잘못된 접근입니다.');
|
||||
|
||||
// 다운로드 차감일 때 비회원은 다운로드 불가
|
||||
if($board['bo_download_point'] < 0 && $is_guest)
|
||||
alert('다운로드 권한이 없습니다.\\n회원이시라면 로그인 후 이용해 보십시오.', G5_BBS_URL.'/login.php?wr_id='.$wr_id.'&'.$qstr.'&url='.urlencode(get_pretty_url($bo_table, $wr_id)));
|
||||
|
||||
$sql = " select * from {$g5['board_file_table']} where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$no' ";
|
||||
$file = sql_fetch($sql);
|
||||
if (!$file['bf_file'])
|
||||
alert_close('파일 정보가 존재하지 않습니다.');
|
||||
|
||||
$nonce = isset($_REQUEST['nonce']) ? preg_replace('/[^0-9a-z\|]/i', '', $_REQUEST['nonce']) : '';
|
||||
|
||||
if (function_exists('download_file_nonce_is_valid') && !defined('G5_DOWNLOAD_NONCE_CHECK')){
|
||||
if(! download_file_nonce_is_valid($nonce, $bo_table, $wr_id)){
|
||||
alert('토큰 유효시간이 지났거나 토큰이 유효하지 않습니다.\\n브라우저를 새로고침 후 다시 시도해 주세요.', G5_URL);
|
||||
}
|
||||
}
|
||||
|
||||
// JavaScript 불가일 때
|
||||
$js = (isset($_GET['js'])) ? $_GET['js'] : '';
|
||||
if($js != 'on' && $board['bo_download_point'] < 0) {
|
||||
$msg = $file['bf_source'].' 파일을 다운로드 하시면 포인트가 차감('.number_format($board['bo_download_point']).'점)됩니다.\\n포인트는 게시물당 한번만 차감되며 다음에 다시 다운로드 하셔도 중복하여 차감하지 않습니다.\\n그래도 다운로드 하시겠습니까?';
|
||||
$url1 = G5_BBS_URL.'/download.php?'.clean_query_string($_SERVER['QUERY_STRING'], false).'&js=on';
|
||||
$url2 = isset($_SERVER['HTTP_REFERER']) ? clean_xss_tags($_SERVER['HTTP_REFERER']) : '';
|
||||
|
||||
if( $url2 && stripos($url2, $_SERVER['REQUEST_URI']) !== false ){
|
||||
$url2 = G5_BBS_URL.'/board.php?'.clean_query_string($_SERVER['QUERY_STRING'], false);
|
||||
}
|
||||
|
||||
//$url1 = 확인link, $url2=취소link
|
||||
// 특정주소로 이동시키려면 $url3 이용
|
||||
confirm($msg, $url1, $url2);
|
||||
}
|
||||
|
||||
if ($member['mb_level'] < $board['bo_download_level']) {
|
||||
$alert_msg = '다운로드 권한이 없습니다.';
|
||||
if ($member['mb_id'])
|
||||
alert($alert_msg);
|
||||
else
|
||||
alert($alert_msg.'\\n회원이시라면 로그인 후 이용해 보십시오.', G5_BBS_URL.'/login.php?wr_id='.$wr_id.'&'.$qstr.'&url='.urlencode(get_pretty_url($bo_table, $wr_id)));
|
||||
}
|
||||
|
||||
$filepath = G5_DATA_PATH.'/file/'.$bo_table.'/'.$file['bf_file'];
|
||||
$filepath = addslashes($filepath);
|
||||
$file_exist_check = (!is_file($filepath) || !file_exists($filepath)) ? false : true;
|
||||
|
||||
if ( false === run_replace('download_file_exist_check', $file_exist_check, $file) ){
|
||||
alert('파일이 존재하지 않습니다.');
|
||||
}
|
||||
|
||||
// 사용자 코드 실행
|
||||
@include_once($board_skin_path.'/download.skin.php');
|
||||
|
||||
// 이미 다운로드 받은 파일인지를 검사한 후 게시물당 한번만 포인트를 차감하도록 수정
|
||||
$ss_name = 'ss_down_'.$bo_table.'_'.$wr_id;
|
||||
if (!get_session($ss_name))
|
||||
{
|
||||
// 자신의 글이라면 통과
|
||||
// 관리자인 경우 통과
|
||||
if (($write['mb_id'] && $write['mb_id'] == $member['mb_id']) || $is_admin)
|
||||
;
|
||||
else if ($board['bo_download_level'] >= 1) // 회원이상 다운로드가 가능하다면
|
||||
{
|
||||
// 다운로드 포인트가 음수이고 회원의 포인트가 0 이거나 작다면
|
||||
if ($member['mb_point'] + $board['bo_download_point'] < 0)
|
||||
alert('보유하신 포인트('.number_format($member['mb_point']).')가 없거나 모자라서 다운로드('.number_format($board['bo_download_point']).')가 불가합니다.\\n\\n포인트를 적립하신 후 다시 다운로드 해 주십시오.');
|
||||
|
||||
// 게시물당 한번만 차감하도록 수정
|
||||
insert_point($member['mb_id'], $board['bo_download_point'], "{$board['bo_subject']} $wr_id 파일 다운로드", $bo_table, $wr_id, "다운로드");
|
||||
}
|
||||
|
||||
set_session($ss_name, TRUE);
|
||||
}
|
||||
|
||||
// 이미 다운로드 받은 파일인지를 검사한 후 다운로드 카운트 증가 ( SIR 그누위즈 님 코드 제안 )
|
||||
$ss_name = 'ss_down_'.$bo_table.'_'.$wr_id.'_'.$no;
|
||||
if (!get_session($ss_name))
|
||||
{
|
||||
// 다운로드 카운트 증가
|
||||
$sql = " update {$g5['board_file_table']} set bf_download = bf_download + 1 where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '$no' ";
|
||||
sql_query($sql);
|
||||
// 다운로드 카운트를 증가시키고 세션을 생성
|
||||
$_SESSION[$ss_name] = true;
|
||||
}
|
||||
|
||||
$g5['title'] = '다운로드 > '.conv_subject($write['wr_subject'], 255);
|
||||
|
||||
//파일명에 한글이 있는 경우
|
||||
/*
|
||||
if(preg_match("/[\xA1-\xFE][\xA1-\xFE]/", $file['bf_source'])){
|
||||
// 2015.09.02 날짜의 파이어폭스에서 인코딩된 문자 그대로 출력되는 문제가 발생됨, 2018.12.11 날짜의 파이어폭스에서는 해당 현상이 없으므로 해당 코드를 사용 안합니다.
|
||||
$original = iconv('utf-8', 'euc-kr', $file['bf_source']); // SIR 잉끼님 제안코드
|
||||
} else {
|
||||
$original = urlencode($file['bf_source']);
|
||||
}
|
||||
*/
|
||||
|
||||
//$original = urlencode($file['bf_source']);
|
||||
$original = rawurlencode($file['bf_source']);
|
||||
|
||||
@include_once($board_skin_path.'/download.tail.skin.php');
|
||||
|
||||
run_event('download_file_header', $file, $file_exist_check);
|
||||
|
||||
if(preg_match("/msie/i", $_SERVER['HTTP_USER_AGENT']) && preg_match("/5\.5/", $_SERVER['HTTP_USER_AGENT'])) {
|
||||
header("content-type: doesn/matter");
|
||||
header("content-length: ".filesize($filepath));
|
||||
header("content-disposition: attachment; filename=\"$original\"");
|
||||
header("content-transfer-encoding: binary");
|
||||
} else if (preg_match("/Firefox/i", $_SERVER['HTTP_USER_AGENT'])){
|
||||
header("content-type: file/unknown");
|
||||
header("content-length: ".filesize($filepath));
|
||||
//header("content-disposition: attachment; filename=\"".basename($file['bf_source'])."\"");
|
||||
header("content-disposition: attachment; filename=\"".$original."\"");
|
||||
header("content-description: php generated data");
|
||||
} else {
|
||||
header("content-type: file/unknown");
|
||||
header("content-length: ".filesize($filepath));
|
||||
header("content-disposition: attachment; filename=\"$original\"");
|
||||
header("content-description: php generated data");
|
||||
}
|
||||
header("pragma: no-cache");
|
||||
header("expires: 0");
|
||||
flush();
|
||||
|
||||
$fp = fopen($filepath, 'rb');
|
||||
|
||||
// 4.00 대체
|
||||
// 서버부하를 줄이려면 print 나 echo 또는 while 문을 이용한 방법보다는 이방법이...
|
||||
//if (!fpassthru($fp)) {
|
||||
// fclose($fp);
|
||||
//}
|
||||
|
||||
$download_rate = 10;
|
||||
|
||||
while(!feof($fp)) {
|
||||
//echo fread($fp, 100*1024);
|
||||
/*
|
||||
echo fread($fp, 100*1024);
|
||||
flush();
|
||||
*/
|
||||
|
||||
print fread($fp, round($download_rate * 1024));
|
||||
flush();
|
||||
usleep(1000);
|
||||
}
|
||||
fclose ($fp);
|
||||
flush();
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
// 봇의 메일 링크 크롤링을 방지합니다.
|
||||
if(function_exists('check_mail_bot')){ check_mail_bot($_SERVER['REMOTE_ADDR']); }
|
||||
|
||||
$mb_id = isset($_GET['mb_id']) ? trim($_GET['mb_id']) : '';
|
||||
$mb_md5 = isset($_GET['mb_md5']) ? trim($_GET['mb_md5']) : '';
|
||||
|
||||
$sql = " select mb_id, mb_email_certify2, mb_leave_date, mb_intercept_date from {$g5['member_table']} where mb_id = '{$mb_id}' ";
|
||||
$row = sql_fetch($sql);
|
||||
if (!$row['mb_id'])
|
||||
alert('존재하는 회원이 아닙니다.', G5_URL);
|
||||
|
||||
if ( $row['mb_leave_date'] || $row['mb_intercept_date'] ){
|
||||
alert('탈퇴 또는 차단된 회원입니다.', G5_URL);
|
||||
}
|
||||
|
||||
// 인증 링크는 한번만 처리가 되게 한다.
|
||||
sql_query(" update {$g5['member_table']} set mb_email_certify2 = '' where mb_id = '$mb_id' ");
|
||||
|
||||
if ($mb_md5)
|
||||
{
|
||||
if ($mb_md5 == $row['mb_email_certify2'])
|
||||
{
|
||||
sql_query(" update {$g5['member_table']} set mb_email_certify = '".G5_TIME_YMDHIS."' where mb_id = '{$mb_id}' ");
|
||||
|
||||
alert("메일인증 처리를 완료 하였습니다.\\n\\n지금부터 {$mb_id} 아이디로 로그인 가능합니다.", G5_URL);
|
||||
}
|
||||
else
|
||||
{
|
||||
alert('메일인증 요청 정보가 올바르지 않습니다.', G5_URL);
|
||||
}
|
||||
}
|
||||
|
||||
alert('제대로 된 값이 넘어오지 않았습니다.', G5_URL);
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$mb_id = isset($_REQUEST['mb_id']) ? clean_xss_tags($_REQUEST['mb_id'], 1, 1) : '';
|
||||
|
||||
$sql = " select mb_id, mb_email, mb_datetime from {$g5['member_table']} where mb_id = '{$mb_id}' ";
|
||||
$row = sql_fetch($sql);
|
||||
if (!$row['mb_id'])
|
||||
alert('존재하는 회원이 아닙니다.', G5_URL);
|
||||
|
||||
if ($mb_md5) {
|
||||
$tmp_md5 = md5($row['mb_id'].$row['mb_email'].$row['mb_datetime']);
|
||||
if ($mb_md5 == $tmp_md5) {
|
||||
sql_query(" update {$g5['member_table']} set mb_mailling = 0 where mb_id = '{$mb_id}' ");
|
||||
|
||||
alert('정보메일을 보내지 않도록 수신거부 하였습니다.', G5_URL);
|
||||
}
|
||||
}
|
||||
|
||||
alert('제대로 된 값이 넘어오지 않았습니다.', G5_URL);
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
//dbconfig파일에 $g5['faq_table'] , $g5['faq_master_table'] 배열변수가 있는지 체크
|
||||
if( !isset($g5['faq_table']) || !isset($g5['faq_master_table']) ){
|
||||
die('<meta charset="utf-8">관리자 모드에서 게시판관리->FAQ관리를 먼저 확인해 주세요.');
|
||||
}
|
||||
|
||||
// FAQ MASTER
|
||||
$faq_master_list = array();
|
||||
$sql = " select * from {$g5['faq_master_table']} order by fm_order,fm_id ";
|
||||
$result = sql_query($sql);
|
||||
while ($row=sql_fetch_array($result))
|
||||
{
|
||||
$key = $row['fm_id'];
|
||||
if (!isset($fm_id)) $fm_id = $key;
|
||||
$faq_master_list[$key] = $row;
|
||||
}
|
||||
|
||||
$fm = array();
|
||||
if (isset($fm_id) && $fm_id){
|
||||
$fm_id = (int) $fm_id;
|
||||
$qstr .= '&fm_id=' . $fm_id; // 마스터faq key_id
|
||||
|
||||
$fm = $faq_master_list[$fm_id];
|
||||
}
|
||||
|
||||
if (! (isset($fm['fm_id']) && $fm['fm_id']))
|
||||
alert('등록된 내용이 없습니다.');
|
||||
|
||||
$g5['title'] = $fm['fm_subject'];
|
||||
|
||||
$skin_file = $faq_skin_path.'/list.skin.php';
|
||||
|
||||
include_once('./_head.php');
|
||||
|
||||
if(is_file($skin_file)) {
|
||||
$admin_href = '';
|
||||
$himg_src = '';
|
||||
$timg_src = '';
|
||||
if($is_admin)
|
||||
$admin_href = G5_ADMIN_URL.'/faqmasterform.php?w=u&fm_id='.$fm_id;
|
||||
|
||||
if(!G5_IS_MOBILE) {
|
||||
$himg = G5_DATA_PATH.'/faq/'.$fm_id.'_h';
|
||||
if (is_file($himg)){
|
||||
$himg_src = G5_DATA_URL.'/faq/'.$fm_id.'_h';
|
||||
}
|
||||
|
||||
$timg = G5_DATA_PATH.'/faq/'.$fm_id.'_t';
|
||||
if (is_file($timg)){
|
||||
$timg_src = G5_DATA_URL.'/faq/'.$fm_id.'_t';
|
||||
}
|
||||
}
|
||||
|
||||
$category_href = G5_BBS_URL.'/faq.php';
|
||||
$category_stx = '';
|
||||
$faq_list = array();
|
||||
|
||||
$stx = trim($stx);
|
||||
$sql_search = '';
|
||||
|
||||
if($stx) {
|
||||
$sql_search = " and ( INSTR(fa_subject, '$stx') > 0 or INSTR(fa_content, '$stx') > 0 ) ";
|
||||
}
|
||||
|
||||
if ($page < 1) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
|
||||
|
||||
$page_rows = G5_IS_MOBILE ? $config['cf_mobile_page_rows'] : $config['cf_page_rows'];
|
||||
|
||||
$sql = " select count(*) as cnt
|
||||
from {$g5['faq_table']}
|
||||
where fm_id = '$fm_id'
|
||||
$sql_search ";
|
||||
$total = sql_fetch($sql);
|
||||
$total_count = $total['cnt'];
|
||||
|
||||
$total_page = ceil($total_count / $page_rows); // 전체 페이지 계산
|
||||
$from_record = ($page - 1) * $page_rows; // 시작 열을 구함
|
||||
|
||||
$sql = " select *
|
||||
from {$g5['faq_table']}
|
||||
where fm_id = '$fm_id'
|
||||
$sql_search
|
||||
order by fa_order , fa_id
|
||||
limit $from_record, $page_rows ";
|
||||
$result = sql_query($sql);
|
||||
for ($i=0;$row=sql_fetch_array($result);$i++){
|
||||
$faq_list[] = $row;
|
||||
if($stx) {
|
||||
$faq_list[$i]['fa_subject'] = search_font($stx, conv_content($faq_list[$i]['fa_subject'], 1));
|
||||
$faq_list[$i]['fa_content'] = search_font($stx, conv_content($faq_list[$i]['fa_content'], 1));
|
||||
}
|
||||
}
|
||||
include_once($skin_file);
|
||||
} else {
|
||||
echo '<p>'.str_replace(G5_PATH.'/', '', $skin_file).'이 존재하지 않습니다.</p>';
|
||||
}
|
||||
|
||||
include_once('./_tail.php');
|
||||
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
||||
|
||||
if (!$config['cf_email_use'])
|
||||
alert_close('환경설정에서 \"메일발송 사용\"에 체크하셔야 메일을 발송할 수 있습니다.\\n\\n관리자에게 문의하시기 바랍니다.');
|
||||
|
||||
if (!$is_member && $config['cf_formmail_is_member'])
|
||||
alert_close('회원만 이용하실 수 있습니다.');
|
||||
|
||||
$mb_id = isset($mb_id) ? get_search_string($mb_id) : '';
|
||||
|
||||
if ($is_member && !$member['mb_open'] && $is_admin != "super" && $member['mb_id'] != $mb_id)
|
||||
alert_close('자신의 정보를 공개하지 않으면 다른분에게 메일을 보낼 수 없습니다.\\n\\n정보공개 설정은 회원정보수정에서 하실 수 있습니다.');
|
||||
|
||||
if ($mb_id)
|
||||
{
|
||||
$mb = get_member($mb_id);
|
||||
if (!$mb['mb_id'])
|
||||
alert_close('회원정보가 존재하지 않습니다.\\n\\n탈퇴한 회원일 수 있습니다.');
|
||||
|
||||
if (!$mb['mb_open'] && $is_admin != "super")
|
||||
alert_close('정보공개를 하지 않았습니다.');
|
||||
}
|
||||
|
||||
$sendmail_count = (int)get_session('ss_sendmail_count') + 1;
|
||||
if ($sendmail_count > 3)
|
||||
alert_close('한번 접속후 일정수의 메일만 발송할 수 있습니다.\\n\\n계속해서 메일을 보내시려면 다시 로그인 또는 접속하여 주십시오.');
|
||||
|
||||
$g5['title'] = '메일 쓰기';
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
$email_enc = new str_encrypt();
|
||||
$email_dec = $email_enc->decrypt($email);
|
||||
|
||||
$email = get_email_address($email_dec);
|
||||
if(!$email)
|
||||
alert_close('이메일이 올바르지 않습니다.');
|
||||
|
||||
$email = $email_enc->encrypt($email);
|
||||
|
||||
if (!$name)
|
||||
$name = $email;
|
||||
else
|
||||
$name = get_text(stripslashes($name), true);
|
||||
|
||||
if (!isset($type))
|
||||
$type = 0;
|
||||
|
||||
$type_checked[0] = $type_checked[1] = $type_checked[2] = "";
|
||||
$type_checked[$type] = 'checked';
|
||||
|
||||
include_once($member_skin_path.'/formmail.skin.php');
|
||||
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
||||
include_once(G5_LIB_PATH.'/mailer.lib.php');
|
||||
|
||||
if (!$config['cf_email_use'])
|
||||
alert('환경설정에서 "메일발송 사용"에 체크하셔야 메일을 발송할 수 있습니다.\\n\\n관리자에게 문의하시기 바랍니다.');
|
||||
|
||||
if (!$is_member && $config['cf_formmail_is_member'])
|
||||
alert_close('회원만 이용하실 수 있습니다.');
|
||||
|
||||
$email_enc = new str_encrypt();
|
||||
$to = $email_enc->decrypt($to);
|
||||
|
||||
if (!chk_captcha()) {
|
||||
alert('자동등록방지 숫자가 틀렸습니다.');
|
||||
}
|
||||
|
||||
if (!preg_match("/([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)\.([0-9a-zA-Z_-]+)/", $to)){
|
||||
alert_close('E-mail 주소가 형식에 맞지 않아서, 메일을 보낼수 없습니다.');
|
||||
}
|
||||
|
||||
$file = array();
|
||||
for ($i=1; $i<=$attach; $i++) {
|
||||
if ($_FILES['file'.$i]['name'])
|
||||
$file[] = attach_file($_FILES['file'.$i]['name'], $_FILES['file'.$i]['tmp_name']);
|
||||
}
|
||||
|
||||
$content = stripslashes($content);
|
||||
if ($type == 2) {
|
||||
$type = 1;
|
||||
$content = str_replace("\n", "<br>", $content);
|
||||
}
|
||||
|
||||
// html 이면
|
||||
if ($type) {
|
||||
$current_url = G5_URL;
|
||||
$mail_content = '<!doctype html><html lang="ko"><head><meta charset="utf-8"><title>메일보내기</title><link rel="stylesheet" href="'.$current_url.'/style.css"></head><body>'.$content.'</body></html>';
|
||||
}
|
||||
else
|
||||
$mail_content = $content;
|
||||
|
||||
mailer($fnick, $fmail, $to, $subject, $mail_content, $type, $file);
|
||||
|
||||
// 임시 첨부파일 삭제
|
||||
if(!empty($file)) {
|
||||
foreach($file as $f) {
|
||||
@unlink($f['path']);
|
||||
}
|
||||
}
|
||||
|
||||
//$html_title = $tmp_to . "님께 메일발송";
|
||||
$html_title = '메일 발송중';
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
alert_close('메일을 정상적으로 발송하였습니다.');
|
||||
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
+164
@@ -0,0 +1,164 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$good = isset($_REQUEST['good']) ? preg_replace('/[^a-z0-9]/i', '', $_REQUEST['good']) : '';
|
||||
|
||||
run_event('bbs_good_before', $bo_table, $wr_id, $good);
|
||||
|
||||
@include_once($board_skin_path.'/good.head.skin.php');
|
||||
|
||||
// 자바스크립트 사용가능할 때
|
||||
if(isset($_POST['js']) && $_POST['js'] === "on") {
|
||||
$error = $count = "";
|
||||
|
||||
function print_result($error, $count)
|
||||
{
|
||||
echo '{ "error": "' . $error . '", "count": "' . $count . '" }';
|
||||
if($error)
|
||||
exit;
|
||||
}
|
||||
|
||||
if (!$is_member)
|
||||
{
|
||||
$error = '회원만 가능합니다.';
|
||||
print_result($error, $count);
|
||||
}
|
||||
|
||||
if (!($bo_table && $wr_id)) {
|
||||
$error = '값이 제대로 넘어오지 않았습니다.';
|
||||
print_result($error, $count);
|
||||
}
|
||||
|
||||
$ss_name = 'ss_view_'.$bo_table.'_'.$wr_id;
|
||||
if (!get_session($ss_name)) {
|
||||
$error = '해당 게시물에서만 추천 또는 비추천 하실 수 있습니다.';
|
||||
print_result($error, $count);
|
||||
}
|
||||
|
||||
$row = sql_fetch(" select count(*) as cnt from {$g5['write_prefix']}{$bo_table} ", FALSE);
|
||||
if (!$row['cnt']) {
|
||||
$error = '존재하는 게시판이 아닙니다.';
|
||||
print_result($error, $count);
|
||||
}
|
||||
|
||||
if ($good == 'good' || $good == 'nogood')
|
||||
{
|
||||
if($write['mb_id'] == $member['mb_id']) {
|
||||
$error = '자신의 글에는 추천 또는 비추천 하실 수 없습니다.';
|
||||
print_result($error, $count);
|
||||
}
|
||||
|
||||
if (!$board['bo_use_good'] && $good == 'good') {
|
||||
$error = '이 게시판은 추천 기능을 사용하지 않습니다.';
|
||||
print_result($error, $count);
|
||||
}
|
||||
|
||||
if (!$board['bo_use_nogood'] && $good == 'nogood') {
|
||||
$error = '이 게시판은 비추천 기능을 사용하지 않습니다.';
|
||||
print_result($error, $count);
|
||||
}
|
||||
|
||||
$sql = " select bg_flag from {$g5['board_good_table']}
|
||||
where bo_table = '{$bo_table}'
|
||||
and wr_id = '{$wr_id}'
|
||||
and mb_id = '{$member['mb_id']}'
|
||||
and bg_flag in ('good', 'nogood') ";
|
||||
$row = sql_fetch($sql);
|
||||
if (isset($row['bg_flag']) && $row['bg_flag'])
|
||||
{
|
||||
if ($row['bg_flag'] == 'good')
|
||||
$status = '추천';
|
||||
else
|
||||
$status = '비추천';
|
||||
|
||||
$error = "이미 $status 하신 글 입니다.";
|
||||
print_result($error, $count);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 추천(찬성), 비추천(반대) 카운트 증가
|
||||
sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_{$good} = wr_{$good} + 1 where wr_id = '{$wr_id}' ");
|
||||
// 내역 생성
|
||||
sql_query(" insert {$g5['board_good_table']} set bo_table = '{$bo_table}', wr_id = '{$wr_id}', mb_id = '{$member['mb_id']}', bg_flag = '{$good}', bg_datetime = '".G5_TIME_YMDHIS."' ");
|
||||
|
||||
$sql = " select wr_{$good} as count from {$g5['write_prefix']}{$bo_table} where wr_id = '$wr_id' ";
|
||||
$row = sql_fetch($sql);
|
||||
|
||||
$count = $row['count'];
|
||||
|
||||
run_event('bbs_increase_good_json', $bo_table, $wr_id, $good);
|
||||
|
||||
print_result($error, $count);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
if (!$is_member)
|
||||
{
|
||||
$href = G5_BBS_URL.'/login.php?'.$qstr.'&url='.urlencode(get_pretty_url($bo_table, $wr_id));
|
||||
|
||||
alert('회원만 가능합니다.', $href);
|
||||
}
|
||||
|
||||
if (!($bo_table && $wr_id))
|
||||
alert('값이 제대로 넘어오지 않았습니다.');
|
||||
|
||||
$ss_name = 'ss_view_'.$bo_table.'_'.$wr_id;
|
||||
if (!get_session($ss_name))
|
||||
alert('해당 게시물에서만 추천 또는 비추천 하실 수 있습니다.');
|
||||
|
||||
$row = sql_fetch(" select count(*) as cnt from {$g5['write_prefix']}{$bo_table} ", FALSE);
|
||||
if (!$row['cnt'])
|
||||
alert('존재하는 게시판이 아닙니다.');
|
||||
|
||||
if ($good == 'good' || $good == 'nogood')
|
||||
{
|
||||
if($write['mb_id'] == $member['mb_id'])
|
||||
alert('자신의 글에는 추천 또는 비추천 하실 수 없습니다.');
|
||||
|
||||
if (!$board['bo_use_good'] && $good == 'good')
|
||||
alert('이 게시판은 추천 기능을 사용하지 않습니다.');
|
||||
|
||||
if (!$board['bo_use_nogood'] && $good == 'nogood')
|
||||
alert('이 게시판은 비추천 기능을 사용하지 않습니다.');
|
||||
|
||||
$sql = " select bg_flag from {$g5['board_good_table']}
|
||||
where bo_table = '{$bo_table}'
|
||||
and wr_id = '{$wr_id}'
|
||||
and mb_id = '{$member['mb_id']}'
|
||||
and bg_flag in ('good', 'nogood') ";
|
||||
$row = sql_fetch($sql);
|
||||
if (isset($row['bg_flag']) && $row['bg_flag'])
|
||||
{
|
||||
if ($row['bg_flag'] == 'good')
|
||||
$status = '추천';
|
||||
else
|
||||
$status = '비추천';
|
||||
|
||||
alert("이미 $status 하신 글 입니다.");
|
||||
}
|
||||
else
|
||||
{
|
||||
// 추천(찬성), 비추천(반대) 카운트 증가
|
||||
sql_query(" update {$g5['write_prefix']}{$bo_table} set wr_{$good} = wr_{$good} + 1 where wr_id = '{$wr_id}' ");
|
||||
// 내역 생성
|
||||
sql_query(" insert {$g5['board_good_table']} set bo_table = '{$bo_table}', wr_id = '{$wr_id}', mb_id = '{$member['mb_id']}', bg_flag = '{$good}', bg_datetime = '".G5_TIME_YMDHIS."' ");
|
||||
|
||||
if ($good == 'good')
|
||||
$status = '추천';
|
||||
else
|
||||
$status = '비추천';
|
||||
|
||||
$href = get_pretty_url($bo_table, $wr_id);
|
||||
|
||||
run_event('bbs_increase_good_html', $bo_table, $wr_id, $good, $href);
|
||||
|
||||
alert("이 글을 $status 하셨습니다.", '', false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
run_event('bbs_good_after', $bo_table, $wr_id, $good);
|
||||
|
||||
@include_once($board_skin_path.'/good.tail.skin.php');
|
||||
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
if(defined('G5_THEME_PATH')) {
|
||||
$group_file = G5_THEME_PATH.'/group.php';
|
||||
if(is_file($group_file)) {
|
||||
require_once($group_file);
|
||||
return;
|
||||
}
|
||||
unset($group_file);
|
||||
}
|
||||
|
||||
if (G5_IS_MOBILE) {
|
||||
include_once(G5_MOBILE_PATH.'/group.php');
|
||||
return;
|
||||
}
|
||||
|
||||
if(!$is_admin && $group['gr_device'] == 'mobile')
|
||||
alert($group['gr_subject'].' 그룹은 모바일에서만 접근할 수 있습니다.');
|
||||
|
||||
$g5['title'] = $group['gr_subject'];
|
||||
include_once('./_head.php');
|
||||
include_once(G5_LIB_PATH.'/latest.lib.php');
|
||||
?>
|
||||
|
||||
<div class="latest_wr">
|
||||
|
||||
<!-- 메인화면 최신글 시작 -->
|
||||
<?php
|
||||
// 최신글
|
||||
$sql = " select bo_table, bo_subject
|
||||
from {$g5['board_table']}
|
||||
where gr_id = '{$gr_id}'
|
||||
and bo_list_level <= '{$member['mb_level']}'
|
||||
and bo_device <> 'mobile' ";
|
||||
if(!$is_admin)
|
||||
$sql .= " and bo_use_cert = '' ";
|
||||
$sql .= " order by bo_order ";
|
||||
$result = sql_query($sql);
|
||||
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
$lt_style = "";
|
||||
if ($i%3 !== 0) $lt_style = "margin-left:2%";
|
||||
else $lt_style = "";
|
||||
?>
|
||||
<div style="float:left;<?php echo $lt_style ?>" class="lt_wr">
|
||||
<?php
|
||||
// 이 함수가 바로 최신글을 추출하는 역할을 합니다.
|
||||
// 사용방법 : latest(스킨, 게시판아이디, 출력라인, 글자수);
|
||||
echo latest('basic', $row['bo_table'], 6, 25);
|
||||
?>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<!-- 메인화면 최신글 끝 -->
|
||||
</div>
|
||||
<?php
|
||||
include_once('./_tail.php');
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$html_title = '링크';
|
||||
|
||||
if (isset($write['wr_subject']) && $write['wr_subject']) {
|
||||
$html_title .= ' > '.conv_subject($write['wr_subject'], 255);
|
||||
}
|
||||
|
||||
$no = isset($_REQUEST['no']) ? preg_replace('/[^0-9]/i', '', $_REQUEST['no']) : '';
|
||||
|
||||
if (!($bo_table && $wr_id && $no))
|
||||
alert_close('값이 제대로 넘어오지 않았습니다.');
|
||||
|
||||
// SQL Injection 예방
|
||||
$row = sql_fetch(" select count(*) as cnt from {$g5['write_prefix']}{$bo_table} ", FALSE);
|
||||
if (!(isset($row['cnt']) && $row['cnt']))
|
||||
alert_close('존재하는 게시판이 아닙니다.');
|
||||
|
||||
if (!(isset($write['wr_link'.$no]) && $write['wr_link'.$no]))
|
||||
alert_close('링크가 없습니다.');
|
||||
|
||||
$ss_name = 'ss_link_'.$bo_table.'_'.$wr_id.'_'.$no;
|
||||
if (empty($_SESSION[$ss_name]))
|
||||
{
|
||||
$sql = " update {$g5['write_prefix']}{$bo_table} set wr_link{$no}_hit = wr_link{$no}_hit + 1 where wr_id = '{$wr_id}' ";
|
||||
sql_query($sql);
|
||||
|
||||
set_session($ss_name, true);
|
||||
}
|
||||
|
||||
goto_url(set_http($write['wr_link'.$no]));
|
||||
+269
@@ -0,0 +1,269 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
// 분류 사용 여부
|
||||
$is_category = false;
|
||||
$category_option = '';
|
||||
if ($board['bo_use_category']) {
|
||||
$is_category = true;
|
||||
$category_href = get_pretty_url($bo_table);
|
||||
|
||||
$category_option .= '<li><a href="'.$category_href.'"';
|
||||
if ($sca=='')
|
||||
$category_option .= ' id="bo_cate_on"';
|
||||
$category_option .= '>전체</a></li>';
|
||||
|
||||
$categories = explode('|', $board['bo_category_list']); // 구분자가 , 로 되어 있음
|
||||
for ($i=0; $i<count($categories); $i++) {
|
||||
$category = trim($categories[$i]);
|
||||
if ($category=='') continue;
|
||||
$category_option .= '<li><a href="'.(get_pretty_url($bo_table,'','sca='.urlencode($category))).'"';
|
||||
$category_msg = '';
|
||||
if ($category==$sca) { // 현재 선택된 카테고리라면
|
||||
$category_option .= ' id="bo_cate_on"';
|
||||
$category_msg = '<span class="sound_only">열린 분류 </span>';
|
||||
}
|
||||
$category_option .= '>'.$category_msg.$category.'</a></li>';
|
||||
}
|
||||
}
|
||||
|
||||
$sop = strtolower($sop);
|
||||
if ($sop != 'and' && $sop != 'or')
|
||||
$sop = 'and';
|
||||
|
||||
// 분류 선택 또는 검색어가 있다면
|
||||
$stx = trim($stx);
|
||||
//검색인지 아닌지 구분하는 변수 초기화
|
||||
$is_search_bbs = false;
|
||||
|
||||
if ($sca || $stx || $stx === '0') { //검색이면
|
||||
$is_search_bbs = true; //검색구분변수 true 지정
|
||||
$sql_search = get_sql_search($sca, $sfl, $stx, $sop);
|
||||
|
||||
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
|
||||
$sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";
|
||||
$row = sql_fetch($sql);
|
||||
$min_spt = (int)$row['min_wr_num'];
|
||||
|
||||
if (!$spt) $spt = $min_spt;
|
||||
|
||||
$sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";
|
||||
|
||||
// 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
|
||||
// 라엘님 제안 코드로 대체 http://sir.kr/g5_bug/2922
|
||||
$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} ";
|
||||
$row = sql_fetch($sql);
|
||||
$total_count = $row['cnt'];
|
||||
/*
|
||||
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} ";
|
||||
$result = sql_query($sql);
|
||||
$total_count = sql_num_rows($result);
|
||||
*/
|
||||
} else {
|
||||
$sql_search = "";
|
||||
|
||||
$total_count = $board['bo_count_write'];
|
||||
}
|
||||
|
||||
if(G5_IS_MOBILE) {
|
||||
$page_rows = $board['bo_mobile_page_rows'];
|
||||
$list_page_rows = $board['bo_mobile_page_rows'];
|
||||
} else {
|
||||
$page_rows = $board['bo_page_rows'];
|
||||
$list_page_rows = $board['bo_page_rows'];
|
||||
}
|
||||
|
||||
if ($page < 1) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
|
||||
|
||||
// 년도 2자리
|
||||
$today2 = G5_TIME_YMD;
|
||||
|
||||
$list = array();
|
||||
$i = 0;
|
||||
$notice_count = 0;
|
||||
$notice_array = array();
|
||||
|
||||
// 공지 처리
|
||||
if (!$is_search_bbs) {
|
||||
$arr_notice = explode(',', trim($board['bo_notice']));
|
||||
$from_notice_idx = ($page - 1) * $page_rows;
|
||||
if($from_notice_idx < 0)
|
||||
$from_notice_idx = 0;
|
||||
$board_notice_count = count($arr_notice);
|
||||
|
||||
for ($k=0; $k<$board_notice_count; $k++) {
|
||||
if (trim($arr_notice[$k]) == '') continue;
|
||||
|
||||
$row = sql_fetch(" select * from {$write_table} where wr_id = '{$arr_notice[$k]}' ");
|
||||
|
||||
if (!isset($row['wr_id']) || !$row['wr_id']) continue;
|
||||
|
||||
$notice_array[] = $row['wr_id'];
|
||||
|
||||
if($k < $from_notice_idx) continue;
|
||||
|
||||
$list[$i] = get_list($row, $board, $board_skin_url, G5_IS_MOBILE ? $board['bo_mobile_subject_len'] : $board['bo_subject_len']);
|
||||
$list[$i]['is_notice'] = true;
|
||||
$list[$i]['list_content'] = $list[$i]['wr_content'];
|
||||
|
||||
// 비밀글인 경우 리스트에서 내용이 출력되지 않게 글 내용을 지웁니다.
|
||||
if (strstr($list[$i]['wr_option'], "secret")) {
|
||||
$list[$i]['wr_content'] = '';
|
||||
}
|
||||
|
||||
$list[$i]['num'] = 0;
|
||||
$i++;
|
||||
$notice_count++;
|
||||
|
||||
if($notice_count >= $list_page_rows)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$total_page = ceil($total_count / $page_rows); // 전체 페이지 계산
|
||||
$from_record = ($page - 1) * $page_rows; // 시작 열을 구함
|
||||
|
||||
// 공지글이 있으면 변수에 반영
|
||||
if(!empty($notice_array)) {
|
||||
$from_record -= count($notice_array);
|
||||
|
||||
if($from_record < 0)
|
||||
$from_record = 0;
|
||||
|
||||
if($notice_count > 0)
|
||||
$page_rows -= $notice_count;
|
||||
|
||||
if($page_rows < 0)
|
||||
$page_rows = $list_page_rows;
|
||||
}
|
||||
|
||||
// 관리자라면 CheckBox 보임
|
||||
$is_checkbox = false;
|
||||
if ($is_member && ($is_admin == 'super' || $group['gr_admin'] == $member['mb_id'] || $board['bo_admin'] == $member['mb_id']))
|
||||
$is_checkbox = true;
|
||||
|
||||
// 정렬에 사용하는 QUERY_STRING
|
||||
$qstr2 = 'bo_table='.$bo_table.'&sop='.$sop;
|
||||
|
||||
// 0 으로 나눌시 오류를 방지하기 위하여 값이 없으면 1 로 설정
|
||||
$bo_gallery_cols = $board['bo_gallery_cols'] ? $board['bo_gallery_cols'] : 1;
|
||||
$td_width = (int)(100 / $bo_gallery_cols);
|
||||
|
||||
// 정렬
|
||||
// 인덱스 필드가 아니면 정렬에 사용하지 않음
|
||||
//if (!$sst || ($sst && !(strstr($sst, 'wr_id') || strstr($sst, "wr_datetime")))) {
|
||||
if (!$sst) {
|
||||
if ($board['bo_sort_field']) {
|
||||
$sst = $board['bo_sort_field'];
|
||||
} else {
|
||||
$sst = "wr_num, wr_reply";
|
||||
$sod = "";
|
||||
}
|
||||
} else {
|
||||
$board_sort_fields = get_board_sort_fields($board, 1);
|
||||
if (!$sod && array_key_exists($sst, $board_sort_fields)) {
|
||||
$sst = $board_sort_fields[$sst];
|
||||
} else {
|
||||
// 게시물 리스트의 정렬 대상 필드가 아니라면 공백으로 (nasca 님 09.06.16)
|
||||
// 리스트에서 다른 필드로 정렬을 하려면 아래의 코드에 해당 필드를 추가하세요.
|
||||
// $sst = preg_match("/^(wr_subject|wr_datetime|wr_hit|wr_good|wr_nogood)$/i", $sst) ? $sst : "";
|
||||
$sst = preg_match("/^(wr_datetime|wr_hit|wr_good|wr_nogood)$/i", $sst) ? $sst : "";
|
||||
}
|
||||
}
|
||||
|
||||
if(!$sst)
|
||||
$sst = "wr_num, wr_reply";
|
||||
|
||||
if ($sst) {
|
||||
$sql_order = " order by {$sst} {$sod} ";
|
||||
}
|
||||
|
||||
if ($is_search_bbs) {
|
||||
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} {$sql_order} limit {$from_record}, $page_rows ";
|
||||
} else {
|
||||
$sql = " select * from {$write_table} where wr_is_comment = 0 ";
|
||||
if(!empty($notice_array))
|
||||
$sql .= " and wr_id not in (".implode(', ', $notice_array).") ";
|
||||
$sql .= " {$sql_order} limit {$from_record}, $page_rows ";
|
||||
}
|
||||
|
||||
// 페이지의 공지개수가 목록수 보다 작을 때만 실행
|
||||
if($page_rows > 0) {
|
||||
$result = sql_query($sql);
|
||||
|
||||
$k = 0;
|
||||
|
||||
while ($row = sql_fetch_array($result))
|
||||
{
|
||||
// 검색일 경우 wr_id만 얻었으므로 다시 한행을 얻는다
|
||||
if ($is_search_bbs)
|
||||
$row = sql_fetch(" select * from {$write_table} where wr_id = '{$row['wr_parent']}' ");
|
||||
|
||||
$list[$i] = get_list($row, $board, $board_skin_url, G5_IS_MOBILE ? $board['bo_mobile_subject_len'] : $board['bo_subject_len']);
|
||||
if (strstr($sfl, 'subject')) {
|
||||
$list[$i]['subject'] = search_font($stx, $list[$i]['subject']);
|
||||
}
|
||||
$list[$i]['is_notice'] = false;
|
||||
$list[$i]['list_content'] = $list[$i]['wr_content'];
|
||||
|
||||
// 비밀글인 경우 리스트에서 내용이 출력되지 않게 글 내용을 지웁니다.
|
||||
if (strstr($list[$i]['wr_option'], "secret")) {
|
||||
$list[$i]['wr_content'] = '';
|
||||
}
|
||||
|
||||
$list_num = $total_count - ($page - 1) * $list_page_rows - $notice_count;
|
||||
$list[$i]['num'] = $list_num - $k;
|
||||
|
||||
$i++;
|
||||
$k++;
|
||||
}
|
||||
}
|
||||
|
||||
g5_latest_cache_data($board['bo_table'], $list);
|
||||
|
||||
$write_pages = get_paging(G5_IS_MOBILE ? $config['cf_mobile_pages'] : $config['cf_write_pages'], $page, $total_page, get_pretty_url($bo_table, '', $qstr.'&page='));
|
||||
|
||||
$list_href = '';
|
||||
$prev_part_href = '';
|
||||
$next_part_href = '';
|
||||
if ($is_search_bbs) {
|
||||
$list_href = get_pretty_url($bo_table);
|
||||
|
||||
$patterns = array('#&page=[0-9]*#', '#&spt=[0-9\-]*#');
|
||||
|
||||
//if ($prev_spt >= $min_spt)
|
||||
$prev_spt = $spt - $config['cf_search_part'];
|
||||
if (isset($min_spt) && $prev_spt >= $min_spt) {
|
||||
$qstr1 = preg_replace($patterns, '', $qstr);
|
||||
$prev_part_href = get_pretty_url($bo_table,0,$qstr1.'&spt='.$prev_spt.'&page=1');
|
||||
$write_pages = page_insertbefore($write_pages, '<a href="'.$prev_part_href.'" class="pg_page pg_search pg_prev">이전검색</a>');
|
||||
}
|
||||
|
||||
$next_spt = $spt + $config['cf_search_part'];
|
||||
if ($next_spt < 0) {
|
||||
$qstr1 = preg_replace($patterns, '', $qstr);
|
||||
$next_part_href = get_pretty_url($bo_table,0,$qstr1.'&spt='.$next_spt.'&page=1');
|
||||
$write_pages = page_insertafter($write_pages, '<a href="'.$next_part_href.'" class="pg_page pg_search pg_next">다음검색</a>');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$write_href = '';
|
||||
if ($member['mb_level'] >= $board['bo_write_level']) {
|
||||
$write_href = short_url_clean(G5_BBS_URL.'/write.php?bo_table='.$bo_table);
|
||||
}
|
||||
|
||||
$nobr_begin = $nobr_end = "";
|
||||
if (preg_match("/gecko|firefox/i", $_SERVER['HTTP_USER_AGENT'])) {
|
||||
$nobr_begin = '<nobr>';
|
||||
$nobr_end = '</nobr>';
|
||||
}
|
||||
|
||||
// RSS 보기 사용에 체크가 되어 있어야 RSS 보기 가능 061106
|
||||
$rss_href = '';
|
||||
if ($board['bo_use_rss_view']) {
|
||||
$rss_href = G5_BBS_URL.'/rss.php?bo_table='.$bo_table;
|
||||
}
|
||||
|
||||
$stx = get_text(stripslashes($stx));
|
||||
include_once($board_skin_path.'/list.skin.php');
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
if( function_exists('social_check_login_before') ){
|
||||
$social_login_html = social_check_login_before();
|
||||
}
|
||||
|
||||
$g5['title'] = '로그인';
|
||||
include_once('./_head.sub.php');
|
||||
|
||||
$od_id = isset($_POST['od_id']) ? safe_replace_regex($_POST['od_id'], 'od_id') : '';
|
||||
|
||||
// url 체크
|
||||
check_url_host($url);
|
||||
|
||||
// 이미 로그인 중이라면
|
||||
if ($is_member) {
|
||||
if ($url)
|
||||
goto_url($url);
|
||||
else
|
||||
goto_url(G5_URL);
|
||||
}
|
||||
|
||||
$login_url = login_url($url);
|
||||
$login_action_url = G5_HTTPS_BBS_URL."/login_check.php";
|
||||
|
||||
// 로그인 스킨이 없는 경우 관리자 페이지 접속이 안되는 것을 막기 위하여 기본 스킨으로 대체
|
||||
$login_file = $member_skin_path.'/login.skin.php';
|
||||
if (!file_exists($login_file))
|
||||
$member_skin_path = G5_SKIN_PATH.'/member/basic';
|
||||
|
||||
include_once($member_skin_path.'/login.skin.php');
|
||||
|
||||
run_event('member_login_tail', $login_url, $login_action_url, $member_skin_path, $url);
|
||||
|
||||
include_once('./_tail.sub.php');
|
||||
@@ -0,0 +1,182 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$g5['title'] = "로그인 검사";
|
||||
|
||||
$mb_id = isset($_POST['mb_id']) ? trim($_POST['mb_id']) : '';
|
||||
$mb_password = isset($_POST['mb_password']) ? trim($_POST['mb_password']) : '';
|
||||
|
||||
run_event('member_login_check_before', $mb_id);
|
||||
|
||||
if (!$mb_id || run_replace('check_empty_member_login_password', !$mb_password, $mb_id))
|
||||
alert('회원아이디나 비밀번호가 공백이면 안됩니다.');
|
||||
|
||||
$mb = get_member($mb_id);
|
||||
|
||||
//소셜 로그인추가 체크
|
||||
|
||||
$is_social_login = false;
|
||||
$is_social_password_check = false;
|
||||
|
||||
// 소셜 로그인이 맞는지 체크하고 해당 값이 맞는지 체크합니다.
|
||||
if(function_exists('social_is_login_check')){
|
||||
$is_social_login = social_is_login_check();
|
||||
|
||||
//패스워드를 체크할건지 결정합니다.
|
||||
//소셜로그인일때는 체크하지 않고, 계정을 연결할때는 체크합니다.
|
||||
$is_social_password_check = social_is_login_password_check($mb_id);
|
||||
}
|
||||
|
||||
$is_need_not_password = run_replace('login_check_need_not_password', $is_social_password_check, $mb_id, $mb_password, $mb, $is_social_login);
|
||||
|
||||
// $is_need_not_password 변수가 true 이면 패스워드를 체크하지 않습니다.
|
||||
// 가입된 회원이 아니다. 비밀번호가 틀리다. 라는 메세지를 따로 보여주지 않는 이유는
|
||||
// 회원아이디를 입력해 보고 맞으면 또 비밀번호를 입력해보는 경우를 방지하기 위해서입니다.
|
||||
// 불법사용자의 경우 회원아이디가 틀린지, 비밀번호가 틀린지를 알기까지는 많은 시간이 소요되기 때문입니다.
|
||||
if (!$is_need_not_password && (! (isset($mb['mb_id']) && $mb['mb_id']) || !login_password_check($mb, $mb_password, $mb['mb_password'])) ) {
|
||||
|
||||
run_event('password_is_wrong', 'login', $mb);
|
||||
|
||||
alert('가입된 회원아이디가 아니거나 비밀번호가 틀립니다.\\n비밀번호는 대소문자를 구분합니다.');
|
||||
}
|
||||
|
||||
// 차단된 아이디인가?
|
||||
if ($mb['mb_intercept_date'] && $mb['mb_intercept_date'] <= date("Ymd", G5_SERVER_TIME)) {
|
||||
$date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb['mb_intercept_date']);
|
||||
alert('회원님의 아이디는 접근이 금지되어 있습니다.\n처리일 : '.$date);
|
||||
}
|
||||
|
||||
// 탈퇴한 아이디인가?
|
||||
if ($mb['mb_leave_date'] && $mb['mb_leave_date'] <= date("Ymd", G5_SERVER_TIME)) {
|
||||
$date = preg_replace("/([0-9]{4})([0-9]{2})([0-9]{2})/", "\\1년 \\2월 \\3일", $mb['mb_leave_date']);
|
||||
alert('탈퇴한 아이디이므로 접근하실 수 없습니다.\n탈퇴일 : '.$date);
|
||||
}
|
||||
|
||||
// 메일인증 설정이 되어 있다면
|
||||
if ( is_use_email_certify() && !preg_match("/[1-9]/", $mb['mb_email_certify'])) {
|
||||
$ckey = md5($mb['mb_ip'].$mb['mb_datetime']);
|
||||
confirm("{$mb['mb_email']} 메일로 메일인증을 받으셔야 로그인 가능합니다. 다른 메일주소로 변경하여 인증하시려면 취소를 클릭하시기 바랍니다.", G5_URL, G5_BBS_URL.'/register_email.php?mb_id='.$mb_id.'&ckey='.$ckey);
|
||||
}
|
||||
|
||||
run_event('login_session_before', $mb, $is_social_login);
|
||||
|
||||
@include_once($member_skin_path.'/login_check.skin.php');
|
||||
|
||||
if (! (defined('SKIP_SESSION_REGENERATE_ID') && SKIP_SESSION_REGENERATE_ID)) {
|
||||
session_regenerate_id(false);
|
||||
if (function_exists('session_start_samesite')) {
|
||||
session_start_samesite();
|
||||
}
|
||||
}
|
||||
|
||||
// 회원아이디 세션 생성
|
||||
set_session('ss_mb_id', $mb['mb_id']);
|
||||
// FLASH XSS 공격에 대응하기 위하여 회원의 고유키를 생성해 놓는다. 관리자에서 검사함
|
||||
generate_mb_key($mb);
|
||||
|
||||
// 회원의 토큰키를 세션에 저장한다. /common.php 에서 해당 회원의 토큰값을 검사한다.
|
||||
if(function_exists('update_auth_session_token')) update_auth_session_token($mb['mb_datetime']);
|
||||
|
||||
// 포인트 체크
|
||||
if($config['cf_use_point']) {
|
||||
$sum_point = get_point_sum($mb['mb_id']);
|
||||
|
||||
$sql= " update {$g5['member_table']} set mb_point = '$sum_point' where mb_id = '{$mb['mb_id']}' ";
|
||||
sql_query($sql);
|
||||
}
|
||||
|
||||
// 3.26
|
||||
// 아이디 쿠키에 한달간 저장
|
||||
if (isset($auto_login) && $auto_login) {
|
||||
// 3.27
|
||||
// 자동로그인 ---------------------------
|
||||
// 쿠키 한달간 저장
|
||||
$key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['SERVER_SOFTWARE'] . $_SERVER['HTTP_USER_AGENT'] . $mb['mb_password']);
|
||||
set_cookie('ck_mb_id', $mb['mb_id'], 86400 * 31);
|
||||
set_cookie('ck_auto', $key, 86400 * 31);
|
||||
// 자동로그인 end ---------------------------
|
||||
} else {
|
||||
set_cookie('ck_mb_id', '', 0);
|
||||
set_cookie('ck_auto', '', 0);
|
||||
}
|
||||
|
||||
if ($url) {
|
||||
// url 체크
|
||||
check_url_host($url, '', G5_URL, true);
|
||||
|
||||
$link = urldecode($url);
|
||||
// 2003-06-14 추가 (다른 변수들을 넘겨주기 위함)
|
||||
if (preg_match("/\?/", $link))
|
||||
$split= "&";
|
||||
else
|
||||
$split= "?";
|
||||
|
||||
// $_POST 배열변수에서 아래의 이름을 가지지 않은 것만 넘김
|
||||
$post_check_keys = array('mb_id', 'mb_password', 'x', 'y', 'url');
|
||||
|
||||
//소셜 로그인 추가
|
||||
if($is_social_login){
|
||||
$post_check_keys[] = 'provider';
|
||||
}
|
||||
|
||||
$post_check_keys = run_replace('login_check_post_check_keys', $post_check_keys, $link, $is_social_login);
|
||||
|
||||
foreach($_POST as $key=>$value) {
|
||||
if ($key && !in_array($key, $post_check_keys)) {
|
||||
$link .= "$split$key=$value";
|
||||
$split = "&";
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
$link = G5_URL;
|
||||
}
|
||||
|
||||
//소셜 로그인 추가
|
||||
if(function_exists('social_login_success_after')){
|
||||
// 로그인 성공시 소셜 데이터를 기존의 데이터와 비교하여 바뀐 부분이 있으면 업데이트 합니다.
|
||||
$link = social_login_success_after($mb, $link);
|
||||
social_login_session_clear(1);
|
||||
}
|
||||
|
||||
//영카트 회원 장바구니 처리
|
||||
if(function_exists('set_cart_id')){
|
||||
$member = $mb;
|
||||
|
||||
// 보관기간이 지난 상품 삭제
|
||||
cart_item_clean();
|
||||
set_cart_id('');
|
||||
$s_cart_id = get_session('ss_cart_id');
|
||||
|
||||
$add_cart_where = '';
|
||||
|
||||
// 장바구니에서 주문하기를 하는 경우
|
||||
if (strpos($link, 'orderform.php') !== false) {
|
||||
$add_cart_where = " and ct_select_time < '".date('Y-m-d H:i:s', strtotime('-1 hour', G5_SERVER_TIME))."' ";
|
||||
}
|
||||
|
||||
// 선택필드 초기화
|
||||
$sql = " update {$g5['g5_shop_cart_table']} set ct_select = '0' where od_id = '$s_cart_id' $add_cart_where ";
|
||||
sql_query($sql);
|
||||
}
|
||||
|
||||
run_event('member_login_check', $mb, $link, $is_social_login);
|
||||
|
||||
// 관리자로 로그인시 DATA 폴더의 쓰기 권한이 있는지 체크합니다. 쓰기 권한이 없으면 로그인을 못합니다.
|
||||
if( is_admin($mb['mb_id']) && is_dir(G5_DATA_PATH.'/tmp/') ){
|
||||
$tmp_data_file = G5_DATA_PATH.'/tmp/tmp-write-test-'.time();
|
||||
$tmp_data_check = @fopen($tmp_data_file, 'w');
|
||||
if($tmp_data_check){
|
||||
if(! @fwrite($tmp_data_check, G5_URL)){
|
||||
$tmp_data_check = false;
|
||||
}
|
||||
}
|
||||
if (is_resource($tmp_data_check)) @fclose($tmp_data_check);
|
||||
@unlink($tmp_data_file);
|
||||
|
||||
if(! $tmp_data_check){
|
||||
alert("data 폴더에 쓰기권한이 없거나 또는 웹하드 용량이 없는 경우\\n로그인을 못할수도 있으니, 용량 체크 및 쓰기 권한을 확인해 주세요.", $link);
|
||||
}
|
||||
}
|
||||
|
||||
goto_url($link);
|
||||
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
define('G5_CERT_IN_PROG', true);
|
||||
include_once('./_common.php');
|
||||
|
||||
if(function_exists('social_provider_logout')){
|
||||
social_provider_logout();
|
||||
}
|
||||
|
||||
// 이호경님 제안 코드
|
||||
session_unset(); // 모든 세션변수를 언레지스터 시켜줌
|
||||
session_destroy(); // 세션해제함
|
||||
|
||||
// 자동로그인 해제 --------------------------------
|
||||
set_cookie('ck_mb_id', '', 0);
|
||||
set_cookie('ck_auto', '', 0);
|
||||
// 자동로그인 해제 end --------------------------------
|
||||
|
||||
if ($url) {
|
||||
if ( substr($url, 0, 2) == '//' )
|
||||
$url = 'http:' . $url;
|
||||
|
||||
if (preg_match('#\\\0#', $url) || preg_match('/^\/{1,}\\\/', $url)) {
|
||||
alert('url 에 올바르지 않은 값이 포함되어 있습니다.', G5_URL);
|
||||
}
|
||||
|
||||
$p = @parse_url(urldecode(str_replace('\\', '', $url)));
|
||||
/*
|
||||
// OpenRediect 취약점관련, PHP 5.3 이하버전에서는 parse_url 버그가 있음 ( Safflower 님 제보 ) 아래 url 예제
|
||||
// http://localhost/bbs/logout.php?url=http://sir.kr%23@/
|
||||
*/
|
||||
if (preg_match('/^https?:\/\//i', $url) || $p['scheme'] || $p['host']) {
|
||||
alert('url에 도메인을 지정할 수 없습니다.', G5_URL);
|
||||
}
|
||||
|
||||
if($url == 'shop')
|
||||
$link = G5_SHOP_URL;
|
||||
else
|
||||
$link = $url;
|
||||
} else if ($bo_table) {
|
||||
$link = get_pretty_url($bo_table);
|
||||
} else {
|
||||
$link = G5_URL;
|
||||
}
|
||||
|
||||
run_event('member_logout', $link);
|
||||
|
||||
goto_url($link);
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
define('G5_CERT_IN_PROG', true);
|
||||
include_once('./_common.php');
|
||||
|
||||
if(!$is_member) { alert("잘못된 접근입니다.", G5_URL); }
|
||||
|
||||
if (!empty($member['mb_certify']) && strlen($member['mb_dupinfo']) != 64) { // 본인인증 안된 계정이거나 ci로 인증된 계정일 경우
|
||||
alert("잘못된 접근입니다.", G5_URL);
|
||||
}
|
||||
|
||||
if($config['cf_cert_use'] == 0) alert("본인인증을 이용 할 수 없습니다. 관리자에게 문의 하십시오.", G5_URL);
|
||||
|
||||
$g5['title'] = '본인인증을 다시 해주세요.';
|
||||
include_once(G5_PATH.'/_head.php');
|
||||
|
||||
$action_url = G5_HTTPS_BBS_URL."/member_cert_refresh_update.php";
|
||||
include_once($member_skin_path.'/member_cert_refresh.skin.php');
|
||||
|
||||
include_once(G5_PATH.'/_tail.php');
|
||||
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
define('G5_CERT_IN_PROG', true);
|
||||
include_once('./_common.php');
|
||||
global $g5;
|
||||
|
||||
if (!($w == '' || $w == 'u')) {
|
||||
alert('w 값이 제대로 넘어오지 않았습니다.');
|
||||
}
|
||||
$url = urldecode($url);
|
||||
|
||||
if($w == '') {
|
||||
$mb_id = isset($_POST['mb_id']) ? trim($_POST['mb_id']) : '';
|
||||
$mb_name = isset($_POST['mb_name']) ? trim($_POST['mb_name']) : '';
|
||||
$mb_hp = isset($_POST['mb_hp']) ? trim($_POST['mb_hp']) : '';
|
||||
} else
|
||||
alert('잘못된 접근입니다', G5_URL);
|
||||
|
||||
if(!$mb_id)
|
||||
alert('회원아이디 값이 없습니다. 올바른 방법으로 이용해 주십시오.');
|
||||
|
||||
//===============================================================
|
||||
// 본인확인
|
||||
//---------------------------------------------------------------
|
||||
$mb_hp = hyphen_hp_number($mb_hp);
|
||||
if($config['cf_cert_use'] && get_session('ss_cert_type') && get_session('ss_cert_dupinfo')) {
|
||||
// 중복체크
|
||||
$sql = " select mb_id from {$g5['member_table']} where mb_id <> '{$member['mb_id']}' and mb_dupinfo = '".get_session('ss_cert_dupinfo')."' ";
|
||||
$row = sql_fetch($sql);
|
||||
if (!empty($row['mb_id'])) {
|
||||
alert("입력하신 본인확인 정보로 가입된 내역이 존재합니다.");
|
||||
}
|
||||
}
|
||||
|
||||
$sql = '';
|
||||
$sql_certify = '';
|
||||
$md5_cert_no = get_session('ss_cert_no');
|
||||
$cert_type = get_session('ss_cert_type');
|
||||
if ($config['cf_cert_use'] && $cert_type && $md5_cert_no) {
|
||||
// 해시값이 같은 경우에만 본인확인 값을 저장한다.
|
||||
if ($cert_type == 'ipin' && get_session('ss_cert_hash') == md5($mb_name.$cert_type.get_session('ss_cert_birth').$md5_cert_no)) { // 아이핀일때 hash 값 체크 hp미포함
|
||||
$sql_certify .= " mb_hp = '{$mb_hp}' ";
|
||||
$sql_certify .= " , mb_certify = '{$cert_type}' ";
|
||||
$sql_certify .= " , mb_adult = '".get_session('ss_cert_adult')."' ";
|
||||
$sql_certify .= " , mb_birth = '".get_session('ss_cert_birth')."' ";
|
||||
$sql_certify .= " , mb_sex = '".get_session('ss_cert_sex')."' ";
|
||||
$sql_certify .= " , mb_dupinfo = '".get_session('ss_cert_dupinfo')."' ";
|
||||
$sql_certify .= " , mb_name = '{$mb_name}' ";
|
||||
} else if($cert_type != 'ipin' && get_session('ss_cert_hash') == md5($mb_name.$cert_type.get_session('ss_cert_birth').$mb_hp.$md5_cert_no)) { // 간편인증, 휴대폰일때 hash 값 체크 hp포함
|
||||
$sql_certify .= " mb_hp = '{$mb_hp}' ";
|
||||
$sql_certify .= " , mb_certify = '{$cert_type}' ";
|
||||
$sql_certify .= " , mb_adult = '".get_session('ss_cert_adult')."' ";
|
||||
$sql_certify .= " , mb_birth = '".get_session('ss_cert_birth')."' ";
|
||||
$sql_certify .= " , mb_sex = '".get_session('ss_cert_sex')."' ";
|
||||
$sql_certify .= " , mb_dupinfo = '".get_session('ss_cert_dupinfo')."' ";
|
||||
$sql_certify .= " , mb_name = '{$mb_name}' ";
|
||||
}else {
|
||||
alert('본인인증된 정보와 입력된 회원정보가 일치하지않습니다. 다시시도 해주세요');
|
||||
}
|
||||
} else {
|
||||
if (get_session("ss_reg_mb_name") != $mb_name || get_session("ss_reg_mb_hp") != $mb_hp) {
|
||||
$sql_certify .= " mb_hp = '{$mb_hp}' ";
|
||||
$sql_certify .= " , mb_certify = '' ";
|
||||
$sql_certify .= " , mb_adult = 0 ";
|
||||
$sql_certify .= " , mb_birth = '' ";
|
||||
$sql_certify .= " , mb_sex = '' ";
|
||||
}
|
||||
}
|
||||
|
||||
$sql = "update {$g5['member_table']} set {$sql_certify} where mb_id = '{$mb_id}'";
|
||||
$result = sql_query($sql, false);
|
||||
|
||||
if($result){
|
||||
if($cert_type == 'ipin' && get_session('ss_cert_hash') == md5($mb_name.$cert_type.get_session('ss_cert_birth').$md5_cert_no)) { // 아이핀일때 hash 값 체크 hp미포함)
|
||||
insert_member_cert_history($mb_id, $mb_name, $mb_hp, get_session('ss_cert_birth'), get_session('ss_cert_type') ); // 본인인증 후 정보 수정 시 내역 기록
|
||||
}else if($cert_type != 'ipin' && get_session('ss_cert_hash') == md5($mb_name.$cert_type.get_session('ss_cert_birth').$mb_hp.$md5_cert_no)) { // 간편인증, 휴대폰일때 hash 값 체크 hp포함
|
||||
insert_member_cert_history($mb_id, $mb_name, $mb_hp, get_session('ss_cert_birth'), get_session('ss_cert_type') ); // 본인인증 후 정보 수정 시 내역 기록
|
||||
}
|
||||
}
|
||||
|
||||
run_event('cert_refresh_update_after', $mb_id);
|
||||
|
||||
//===============================================================
|
||||
|
||||
(empty($url))? goto_url(G5_URL) : goto_url($url);
|
||||
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
if ($is_guest)
|
||||
alert('로그인 한 회원만 접근하실 수 있습니다.', G5_BBS_URL.'/login.php');
|
||||
|
||||
while (1) {
|
||||
$tmp = preg_replace('/&#[^;]+;/', '', $url);
|
||||
if ($tmp == $url) break;
|
||||
$url = $tmp;
|
||||
}
|
||||
|
||||
//소셜 로그인 한 경우
|
||||
if( function_exists('social_member_comfirm_redirect') && (! $url || $url === 'register_form.php' || (function_exists('social_is_edit_page') && social_is_edit_page($url) ) ) ){
|
||||
social_member_comfirm_redirect();
|
||||
}
|
||||
|
||||
$url = run_replace('member_confirm_next_url', $url);
|
||||
|
||||
$g5['title'] = '회원 비밀번호 확인';
|
||||
include_once('./_head.sub.php');
|
||||
|
||||
// url 체크
|
||||
check_url_host($url, '', G5_URL, true);
|
||||
|
||||
if($url){
|
||||
$url = preg_replace('#^/\\\{1,}#', '/', $url);
|
||||
|
||||
if( preg_match('#^/{3,}#', $url) ){
|
||||
$url = preg_replace('#^/{3,}#', '/', $url);
|
||||
}
|
||||
|
||||
if (function_exists('safe_filter_url_host')) {
|
||||
$url = safe_filter_url_host($url);
|
||||
}
|
||||
}
|
||||
|
||||
$url = get_text($url);
|
||||
|
||||
include_once($member_skin_path.'/member_confirm.skin.php');
|
||||
|
||||
include_once('./_tail.sub.php');
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
if (!$member['mb_id'])
|
||||
alert('회원만 접근하실 수 있습니다.');
|
||||
|
||||
if ($is_admin == 'super')
|
||||
alert('최고 관리자는 탈퇴할 수 없습니다');
|
||||
|
||||
$post_mb_password = isset($_POST['mb_password']) ? trim($_POST['mb_password']) : '';
|
||||
|
||||
if (!($post_mb_password && check_password($post_mb_password, $member['mb_password'])))
|
||||
alert('비밀번호가 틀립니다.');
|
||||
|
||||
// 회원탈퇴일을 저장
|
||||
$date = date("Ymd");
|
||||
$sql = " update {$g5['member_table']} set mb_leave_date = '{$date}', mb_memo = '".date('Ymd', G5_SERVER_TIME)." 탈퇴함\n".sql_real_escape_string($member['mb_memo'])."', mb_certify = '', mb_adult = 0, mb_dupinfo = '' where mb_id = '{$member['mb_id']}' ";
|
||||
sql_query($sql);
|
||||
|
||||
run_event('member_leave', $member);
|
||||
|
||||
// 3.09 수정 (로그아웃)
|
||||
unset($_SESSION['ss_mb_id']);
|
||||
|
||||
if (!$url)
|
||||
$url = G5_URL;
|
||||
|
||||
//소셜로그인 해제
|
||||
if(function_exists('social_member_link_delete')){
|
||||
social_member_link_delete($member['mb_id']);
|
||||
}
|
||||
|
||||
alert(''.$member['mb_nick'].'님께서는 '. date("Y년 m월 d일") .'에 회원에서 탈퇴 하셨습니다.', $url);
|
||||
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
if ($is_guest)
|
||||
alert_close('회원만 이용하실 수 있습니다.');
|
||||
|
||||
set_session('ss_memo_delete_token', $token = uniqid(time()));
|
||||
|
||||
$g5['title'] = '내 쪽지함';
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
$kind = isset($_GET['kind']) ? clean_xss_tags($_GET['kind'], 0, 1) : 'recv';
|
||||
|
||||
if ($kind == 'recv')
|
||||
$unkind = 'send';
|
||||
else if ($kind == 'send')
|
||||
$unkind = 'recv';
|
||||
else {
|
||||
alert("kind 변수 값이 올바르지 않습니다.");
|
||||
}
|
||||
|
||||
if ($page < 1) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
|
||||
|
||||
run_event('memo_list', $kind, $unkind, $page);
|
||||
|
||||
$sql = " select count(*) as cnt from {$g5['memo_table']} where me_{$kind}_mb_id = '{$member['mb_id']}' and me_type = '$kind' ";
|
||||
$row = sql_fetch($sql);
|
||||
$total_count = $row['cnt'];
|
||||
|
||||
$total_page = ceil($total_count / $config['cf_page_rows']); // 전체 페이지 계산
|
||||
$from_record = ((int) $page - 1) * $config['cf_page_rows']; // 시작 열을 구함
|
||||
|
||||
if ($kind == 'recv')
|
||||
{
|
||||
$kind_title = '받은';
|
||||
$recv_img = 'on';
|
||||
$send_img = 'off';
|
||||
}
|
||||
else
|
||||
{
|
||||
$kind_title = '보낸';
|
||||
$recv_img = 'off';
|
||||
$send_img = 'on';
|
||||
}
|
||||
|
||||
$list = array();
|
||||
|
||||
$sql = " select a.*, b.mb_id, b.mb_nick, b.mb_email, b.mb_homepage
|
||||
from {$g5['memo_table']} a
|
||||
left join {$g5['member_table']} b on (a.me_{$unkind}_mb_id = b.mb_id)
|
||||
where a.me_{$kind}_mb_id = '{$member['mb_id']}' and a.me_type = '$kind'
|
||||
order by a.me_id desc limit $from_record, {$config['cf_page_rows']} ";
|
||||
|
||||
$result = sql_query($sql);
|
||||
for ($i=0; $row=sql_fetch_array($result); $i++)
|
||||
{
|
||||
$list[$i] = $row;
|
||||
|
||||
$mb_id = $row["me_{$unkind}_mb_id"];
|
||||
|
||||
if ($row['mb_nick'])
|
||||
$mb_nick = $row['mb_nick'];
|
||||
else
|
||||
$mb_nick = '정보없음';
|
||||
|
||||
$name = get_sideview($row['mb_id'], $row['mb_nick'], $row['mb_email'], $row['mb_homepage']);
|
||||
|
||||
if (substr($row['me_read_datetime'],0,1) == 0)
|
||||
$read_datetime = '아직 읽지 않음';
|
||||
else
|
||||
$read_datetime = substr($row['me_read_datetime'],2,14);
|
||||
|
||||
$send_datetime = substr($row['me_send_datetime'],2,14);
|
||||
|
||||
$list[$i]['mb_id'] = $mb_id;
|
||||
$list[$i]['name'] = $name;
|
||||
$list[$i]['send_datetime'] = $send_datetime;
|
||||
$list[$i]['read_datetime'] = $read_datetime;
|
||||
$list[$i]['view_href'] = './memo_view.php?me_id='.$row['me_id'].'&kind='.$kind.'&page='.$page;
|
||||
$list[$i]['del_href'] = './memo_delete.php?me_id='.$row['me_id'].'&token='.$token.'&kind='.$kind;
|
||||
}
|
||||
|
||||
$write_pages = get_paging(G5_IS_MOBILE ? $config['cf_mobile_pages'] : $config['cf_write_pages'], $page, $total_page, "./memo.php?kind=$kind".$qstr."&page=");
|
||||
|
||||
include_once($member_skin_path.'/memo.skin.php');
|
||||
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
if (!$is_member)
|
||||
alert('회원만 이용하실 수 있습니다.');
|
||||
|
||||
$delete_token = get_session('ss_memo_delete_token');
|
||||
set_session('ss_memo_delete_token', '');
|
||||
|
||||
if (!($token && $delete_token == $token))
|
||||
alert('토큰 에러로 삭제 불가합니다.');
|
||||
|
||||
$me_id = isset($_REQUEST['me_id']) ? (int) $_REQUEST['me_id'] : 0;
|
||||
|
||||
$sql = " select * from {$g5['memo_table']} where me_id = '{$me_id}' ";
|
||||
$row = sql_fetch($sql);
|
||||
|
||||
$sql = " delete from {$g5['memo_table']}
|
||||
where me_id = '{$me_id}'
|
||||
and (me_recv_mb_id = '{$member['mb_id']}' or me_send_mb_id = '{$member['mb_id']}') ";
|
||||
sql_query($sql);
|
||||
|
||||
if (!$row['me_read_datetime'][0]) // 메모 받기전이면
|
||||
{
|
||||
$sql = " update {$g5['member_table']}
|
||||
set mb_memo_call = ''
|
||||
where mb_id = '{$row['me_recv_mb_id']}'
|
||||
and mb_memo_call = '{$row['me_send_mb_id']}' ";
|
||||
sql_query($sql);
|
||||
|
||||
$sql = " update `{$g5['member_table']}` set mb_memo_cnt = '".get_memo_not_read($member['mb_id'])."' where mb_id = '{$member['mb_id']}' ";
|
||||
sql_query($sql);
|
||||
}
|
||||
|
||||
run_event('memo_delete', $me_id, $row);
|
||||
|
||||
goto_url('./memo.php?kind='.$kind);
|
||||
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
||||
|
||||
if ($is_guest) {
|
||||
alert_close('회원만 이용하실 수 있습니다.');
|
||||
}
|
||||
|
||||
$mb_id = isset($mb_id) ? get_search_string($mb_id) : '';
|
||||
|
||||
if (!$member['mb_open'] && $is_admin != 'super' && $member['mb_id'] != $mb_id) {
|
||||
alert_close("자신의 정보를 공개하지 않으면 다른분에게 쪽지를 보낼 수 없습니다. 정보공개 설정은 회원정보수정에서 하실 수 있습니다.");
|
||||
}
|
||||
|
||||
$content = "";
|
||||
$me_recv_mb_id = isset($_REQUEST['me_recv_mb_id']) ? clean_xss_tags($_REQUEST['me_recv_mb_id'], 1, 1) : '';
|
||||
$me_id = isset($_REQUEST['me_id']) ? clean_xss_tags($_REQUEST['me_id'], 1, 1) : '';
|
||||
|
||||
// 탈퇴한 회원에게 쪽지 보낼 수 없음
|
||||
if ($me_recv_mb_id)
|
||||
{
|
||||
$mb = get_member($me_recv_mb_id);
|
||||
if (!$mb['mb_id'])
|
||||
alert_close('회원정보가 존재하지 않습니다.\\n\\n탈퇴하였을 수 있습니다.');
|
||||
|
||||
if (!$mb['mb_open'] && $is_admin != 'super')
|
||||
alert_close('정보공개를 하지 않았습니다.');
|
||||
|
||||
// 4.00.15
|
||||
$row = sql_fetch(" select me_memo from {$g5['memo_table']} where me_id = '{$me_id}' and (me_recv_mb_id = '{$member['mb_id']}' or me_send_mb_id = '{$member['mb_id']}') ");
|
||||
if (isset($row['me_memo']) && $row['me_memo'])
|
||||
{
|
||||
$content = "\n\n\n".' >'
|
||||
."\n".' >'
|
||||
."\n".' >'.str_replace("\n", "\n> ", get_text($row['me_memo'], 0))
|
||||
."\n".' >'
|
||||
.' >';
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
$g5['title'] = '쪽지 보내기';
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
$memo_action_url = G5_HTTPS_BBS_URL."/memo_form_update.php";
|
||||
include_once($member_skin_path.'/memo_form.skin.php');
|
||||
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
@@ -0,0 +1,111 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
||||
|
||||
if ($is_guest)
|
||||
alert('회원만 이용하실 수 있습니다.');
|
||||
|
||||
if (!chk_captcha()) {
|
||||
alert('자동등록방지 숫자가 틀렸습니다.');
|
||||
}
|
||||
|
||||
$recv_list = isset($_POST['me_recv_mb_id']) ? explode(',', trim($_POST['me_recv_mb_id'])) : array();
|
||||
$str_nick_list = '';
|
||||
$msg = '';
|
||||
$error_list = array();
|
||||
$member_list = array('id'=>array(), 'nick'=>array());
|
||||
$me_memo = isset($_POST['me_memo']) ? preg_replace("#[\\\]+$#", "", substr(trim($_POST['me_memo']),0,65536)) : '';
|
||||
|
||||
run_event('memo_form_update_before', $recv_list);
|
||||
|
||||
for ($i=0; $i<count($recv_list); $i++) {
|
||||
|
||||
$recv_list_id = substr(preg_replace("/[^a-zA-Z0-9_]*/", "", $recv_list[$i]), 0, 20);
|
||||
|
||||
$row = sql_fetch(" select mb_id, mb_nick, mb_open, mb_leave_date, mb_intercept_date from {$g5['member_table']} where mb_id = '{$recv_list_id}' ");
|
||||
if ($row) {
|
||||
if ($is_admin || ($row['mb_open'] && (!$row['mb_leave_date'] && !$row['mb_intercept_date']))) {
|
||||
$member_list['id'][] = $row['mb_id'];
|
||||
$member_list['nick'][] = $row['mb_nick'];
|
||||
} else {
|
||||
$error_list[] = $recv_list_id;
|
||||
}
|
||||
}
|
||||
/*
|
||||
// 관리자가 아니면서
|
||||
// 가입된 회원이 아니거나 정보공개를 하지 않았거나 탈퇴한 회원이거나 차단된 회원에게 쪽지를 보내는것은 에러
|
||||
if ((!$row['mb_id'] || !$row['mb_open'] || $row['mb_leave_date'] || $row['mb_intercept_date']) && !$is_admin) {
|
||||
$error_list[] = $recv_list_id;
|
||||
} else {
|
||||
$member_list['id'][] = $row['mb_id'];
|
||||
$member_list['nick'][] = $row['mb_nick'];
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
$error_msg = implode(",", $error_list);
|
||||
|
||||
if ($error_msg && !$is_admin)
|
||||
alert("회원아이디 '{$error_msg}' 은(는) 존재(또는 정보공개)하지 않는 회원아이디 이거나 탈퇴, 접근차단된 회원아이디 입니다.\\n쪽지를 발송하지 않았습니다.");
|
||||
|
||||
if (! count($member_list['id'])){
|
||||
alert('해당 회원이 존재하지 않습니다.');
|
||||
}
|
||||
|
||||
if (!$is_admin) {
|
||||
if (count($member_list['id'])) {
|
||||
$point = (int)$config['cf_memo_send_point'] * count($member_list['id']);
|
||||
if ($point) {
|
||||
if ($member['mb_point'] - $point < 0) {
|
||||
alert('보유하신 포인트('.number_format($member['mb_point']).'점)가 모자라서 쪽지를 보낼 수 없습니다.');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for ($i=0; $i<count($member_list['id']); $i++) {
|
||||
$tmp_row = sql_fetch(" select max(me_id) as max_me_id from {$g5['memo_table']} ");
|
||||
$me_id = $tmp_row['max_me_id'] + 1;
|
||||
|
||||
$recv_mb_id = $member_list['id'][$i];
|
||||
$recv_mb_nick = get_text($member_list['nick'][$i]);
|
||||
|
||||
// 받는 회원 쪽지 INSERT
|
||||
$sql = " insert into {$g5['memo_table']} ( me_recv_mb_id, me_send_mb_id, me_send_datetime, me_memo, me_read_datetime, me_type, me_send_ip ) values ( '$recv_mb_id', '{$member['mb_id']}', '".G5_TIME_YMDHIS."', '{$me_memo}', '0000-00-00 00:00:00' , 'recv', '{$_SERVER['REMOTE_ADDR']}' ) ";
|
||||
|
||||
sql_query($sql);
|
||||
|
||||
if( $me_id = sql_insert_id() ){
|
||||
|
||||
// 보내는 회원 쪽지 INSERT
|
||||
$sql = " insert into {$g5['memo_table']} ( me_recv_mb_id, me_send_mb_id, me_send_datetime, me_memo, me_read_datetime, me_send_id, me_type , me_send_ip ) values ( '$recv_mb_id', '{$member['mb_id']}', '".G5_TIME_YMDHIS."', '{$me_memo}', '0000-00-00 00:00:00', '$me_id', 'send', '{$_SERVER['REMOTE_ADDR']}' ) ";
|
||||
sql_query($sql);
|
||||
|
||||
$member_list['me_id'][$i] = $me_id;
|
||||
}
|
||||
|
||||
// 실시간 쪽지 알림 기능
|
||||
$sql = " update {$g5['member_table']} set mb_memo_call = '{$member['mb_id']}', mb_memo_cnt = '".get_memo_not_read($recv_mb_id)."' where mb_id = '$recv_mb_id' ";
|
||||
sql_query($sql);
|
||||
|
||||
if (!$is_admin) {
|
||||
insert_point($member['mb_id'], (int)$config['cf_memo_send_point'] * (-1), $recv_mb_nick.'('.$recv_mb_id.')님께 쪽지 발송', '@memo', $recv_mb_id, $me_id);
|
||||
}
|
||||
}
|
||||
|
||||
if ($member_list) {
|
||||
|
||||
$redirect_url = G5_HTTP_BBS_URL."/memo.php?kind=send";
|
||||
$str_nick_list = implode(',', $member_list['nick']);
|
||||
|
||||
run_event('memo_form_update_after', $member_list, $str_nick_list, $redirect_url, $_POST['me_memo']);
|
||||
|
||||
alert($str_nick_list." 님께 쪽지를 전달하였습니다.", $redirect_url, false);
|
||||
} else {
|
||||
|
||||
$redirect_url = G5_HTTP_BBS_URL."/memo_form.php";
|
||||
|
||||
run_event('memo_form_update_failed', $member_list, $redirect_url, $_POST['me_memo']);
|
||||
|
||||
alert("회원아이디 오류 같습니다.", $redirect_url, false);
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
if (!$is_member)
|
||||
alert('회원만 이용하실 수 있습니다.');
|
||||
|
||||
$me_id = isset($_REQUEST['me_id']) ? (int) $_REQUEST['me_id'] : 0;
|
||||
|
||||
if ($kind == 'recv')
|
||||
{
|
||||
$t = '받은';
|
||||
$unkind = 'send';
|
||||
|
||||
$sql = " update {$g5['memo_table']}
|
||||
set me_read_datetime = '".G5_TIME_YMDHIS."'
|
||||
where (me_id = '$me_id' or me_send_id = '$me_id' )
|
||||
and me_recv_mb_id = '{$member['mb_id']}'
|
||||
and me_read_datetime = '0000-00-00 00:00:00' ";
|
||||
sql_query($sql);
|
||||
|
||||
$sql = " update `{$g5['member_table']}` set mb_memo_cnt = '".get_memo_not_read($member['mb_id'])."' where mb_id = '{$member['mb_id']}' ";
|
||||
sql_query($sql);
|
||||
}
|
||||
else if ($kind == 'send')
|
||||
{
|
||||
$t = '보낸';
|
||||
$unkind = 'recv';
|
||||
}
|
||||
else
|
||||
{
|
||||
alert($kind.' 값을 넘겨주세요.');
|
||||
}
|
||||
|
||||
$sql = " select * from {$g5['memo_table']}
|
||||
where me_id = '$me_id'
|
||||
and me_{$kind}_mb_id = '{$member['mb_id']}' ";
|
||||
$memo = sql_fetch($sql);
|
||||
|
||||
$c = sql_fetch (" select COUNT(*) as cnt from {$g5['memo_table']} where me_id = '$me_id' and me_recv_mb_id = '{$member['mb_id']}' ");
|
||||
|
||||
if($c['cnt'] < 1) {
|
||||
alert('삭제 되었거나 존재하지 않는 쪽지 입니다.');
|
||||
}
|
||||
|
||||
|
||||
set_session('ss_memo_delete_token', $token = uniqid(time()));
|
||||
$del_link = 'memo_delete.php?me_id='.$memo['me_id'].'&token='.$token.'&kind='.$kind;
|
||||
|
||||
$g5['title'] = $t.' 쪽지 보기';
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
// 이전 쪽지
|
||||
$sql = " select me.*, a.rownum from `{$g5['memo_table']}` as me inner join ( select me_id , (@rownum:=@rownum+1) as rownum from `{$g5['memo_table']}` as memo, (select @rownum:=0) tmp where me_{$kind}_mb_id = '{$member['mb_id']}' and memo.me_type = '$kind' order by me_id desc ) as a on a.me_id = me.me_id where me.me_id < '$me_id' and me.me_{$kind}_mb_id = '{$member['mb_id']}' and me.me_type = '$kind' order by me.me_id desc limit 1 ";
|
||||
|
||||
$prev = sql_fetch($sql);
|
||||
if (isset($prev['me_id']) && $prev['me_id']) {
|
||||
$prev_link = './memo_view.php?kind='.$kind.'&me_id='.$prev['me_id'];
|
||||
$prev['page'] = ceil( (int)$prev['rownum'] / $config['cf_page_rows']); // 이동할 페이지 계산
|
||||
if( (int)$prev['page'] > 0 ) $prev_link .= "&page=".$prev['page'];
|
||||
} else {
|
||||
$prev_link = '';
|
||||
}
|
||||
|
||||
// 다음 쪽지
|
||||
$sql = " select me.*, a.rownum from `{$g5['memo_table']}` as me inner join ( select me_id , (@rownum:=@rownum+1) as rownum from `{$g5['memo_table']}` as memo, (select @rownum:=0) tmp where me_{$kind}_mb_id = '{$member['mb_id']}' and memo.me_type = '$kind' order by me_id asc ) as a on a.me_id = me.me_id where me.me_id > '$me_id' and me.me_{$kind}_mb_id = '{$member['mb_id']}' and me.me_type = '$kind' order by me.me_id asc limit 1 ";
|
||||
|
||||
$next = sql_fetch($sql);
|
||||
if (isset($next['me_id']) && $next['me_id']) {
|
||||
$next_link = './memo_view.php?kind='.$kind.'&me_id='.$next['me_id'];
|
||||
$next['page'] = ceil( (int)$next['rownum'] / $config['cf_page_rows']); // 이동할 페이지 계산
|
||||
if( (int)$next['page'] > 0 ) $next_link .= "&page=".$next['page'];
|
||||
} else {
|
||||
$next_link = '';
|
||||
}
|
||||
|
||||
$mb = get_member($memo['me_'.$unkind.'_mb_id']);
|
||||
|
||||
$list_link = './memo.php?kind='.$kind;
|
||||
|
||||
if(isset($page) && $page){
|
||||
$prev_link .= $prev_link ? '&page='.(int) $page : '';
|
||||
$next_link .= $next_link ? '&page='.(int) $page : '';
|
||||
$list_link .= '&page='.(int) $page;
|
||||
}
|
||||
|
||||
include_once($member_skin_path.'/memo_view.skin.php');
|
||||
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
+170
@@ -0,0 +1,170 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$sw = isset($_REQUEST['sw']) ? clean_xss_tags($_REQUEST['sw'], 1, 1) : '';
|
||||
|
||||
if ($sw === 'move')
|
||||
$act = '이동';
|
||||
else if ($sw === 'copy')
|
||||
$act = '복사';
|
||||
else
|
||||
alert('sw 값이 제대로 넘어오지 않았습니다.');
|
||||
|
||||
// 게시판 관리자 이상 복사, 이동 가능
|
||||
if ($is_admin != 'board' && $is_admin != 'group' && $is_admin != 'super')
|
||||
alert_close("게시판 관리자 이상 접근이 가능합니다.");
|
||||
|
||||
$g5['title'] = '게시물 ' . $act;
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
$wr_id_list = '';
|
||||
if ($wr_id)
|
||||
$wr_id_list = $wr_id;
|
||||
else {
|
||||
$comma = '';
|
||||
|
||||
$count_chk_wr_id = (isset($_POST['chk_wr_id']) && is_array($_POST['chk_wr_id'])) ? count($_POST['chk_wr_id']) : 0;
|
||||
|
||||
for ($i=0; $i<$count_chk_wr_id; $i++) {
|
||||
$wr_id_val = isset($_POST['chk_wr_id'][$i]) ? preg_replace('/[^0-9]/', '', $_POST['chk_wr_id'][$i]) : 0;
|
||||
$wr_id_list .= $comma . $wr_id_val;
|
||||
$comma = ',';
|
||||
}
|
||||
}
|
||||
|
||||
//$sql = " select * from {$g5['board_table']} a, {$g5['group_table']} b where a.gr_id = b.gr_id and bo_table <> '$bo_table' ";
|
||||
// 원본 게시판을 선택 할 수 있도록 함.
|
||||
$sql = " select * from {$g5['board_table']} a, {$g5['group_table']} b where a.gr_id = b.gr_id ";
|
||||
if ($is_admin == 'group')
|
||||
$sql .= " and b.gr_admin = '{$member['mb_id']}' ";
|
||||
else if ($is_admin == 'board')
|
||||
$sql .= " and a.bo_admin = '{$member['mb_id']}' ";
|
||||
$sql .= " order by a.gr_id, a.bo_order, a.bo_table ";
|
||||
$result = sql_query($sql);
|
||||
|
||||
$list = array();
|
||||
|
||||
for ($i=0; $row=sql_fetch_array($result); $i++)
|
||||
{
|
||||
$list[$i] = $row;
|
||||
}
|
||||
?>
|
||||
|
||||
<div id="copymove" class="new_win">
|
||||
<h1 id="win_title"><?php echo $g5['title'] ?></h1>
|
||||
<form name="fboardmoveall" method="post" action="./move_update.php" onsubmit="return fboardmoveall_submit(this);">
|
||||
<input type="hidden" name="sw" value="<?php echo $sw ?>">
|
||||
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
|
||||
<input type="hidden" name="wr_id_list" value="<?php echo $wr_id_list ?>">
|
||||
<input type="hidden" name="sfl" value="<?php echo $sfl ?>">
|
||||
<input type="hidden" name="stx" value="<?php echo $stx ?>">
|
||||
<input type="hidden" name="spt" value="<?php echo $spt ?>">
|
||||
<input type="hidden" name="sst" value="<?php echo $sst ?>">
|
||||
<input type="hidden" name="sod" value="<?php echo $sod ?>">
|
||||
<input type="hidden" name="page" value="<?php echo $page ?>">
|
||||
<input type="hidden" name="act" value="<?php echo $act ?>">
|
||||
<input type="hidden" name="url" value="<?php echo get_text(clean_xss_tags($_SERVER['HTTP_REFERER'])); ?>">
|
||||
|
||||
<div class="tbl_head01 tbl_wrap">
|
||||
<table>
|
||||
<caption><?php echo $act ?>할 게시판을 한개 이상 선택하여 주십시오.</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">
|
||||
<input type="checkbox" id="chkall" onclick="if (this.checked) all_checked(true); else all_checked(false);">
|
||||
<label for="chkall"></label>
|
||||
</th>
|
||||
<th scope="col">게시판</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php for ($i=0; $i<count($list); $i++) {
|
||||
$atc_mark = '';
|
||||
$atc_bg = '';
|
||||
if ($list[$i]['bo_table'] == $bo_table) { // 게시물이 현재 속해 있는 게시판이라면
|
||||
$atc_mark = '<span class="copymove_current">현재<span class="sound_only">게시판</span></span>';
|
||||
$atc_bg = 'copymove_currentbg';
|
||||
}
|
||||
?>
|
||||
<tr class="<?php echo $atc_bg; ?>">
|
||||
<td class="text-center">
|
||||
|
||||
<input type="checkbox" value="<?php echo $list[$i]['bo_table'] ?>" id="chk<?php echo $i ?>" name="chk_bo_table[]">
|
||||
<label for="chk<?php echo $i ?>"></label>
|
||||
</td>
|
||||
<td>
|
||||
<label for="chk<?php echo $i ?>">
|
||||
<?php
|
||||
echo $list[$i]['gr_subject'] . ' > ';
|
||||
$save_gr_subject = $list[$i]['gr_subject'];
|
||||
?>
|
||||
<?php echo $list[$i]['bo_subject'] ?> (<?php echo $list[$i]['bo_table'] ?>)
|
||||
<?php echo $atc_mark; ?>
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="win_btn">
|
||||
<input type="submit" value="<?php echo $act ?>" id="btn_submit" class="btn_submit">
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
$(".win_btn").append("<button type=\"button\" class=\"btn_cancel btn_close\">창닫기</button>");
|
||||
|
||||
$(".win_btn button").click(function() {
|
||||
window.close();
|
||||
});
|
||||
});
|
||||
|
||||
function all_checked(sw) {
|
||||
var f = document.fboardmoveall;
|
||||
|
||||
for (var i=0; i<f.length; i++) {
|
||||
if (f.elements[i].name == "chk_bo_table[]")
|
||||
f.elements[i].checked = sw;
|
||||
}
|
||||
}
|
||||
|
||||
function fboardmoveall_submit(f)
|
||||
{
|
||||
var check = false;
|
||||
|
||||
if (typeof(f.elements['chk_bo_table[]']) == 'undefined')
|
||||
;
|
||||
else {
|
||||
if (typeof(f.elements['chk_bo_table[]'].length) == 'undefined') {
|
||||
if (f.elements['chk_bo_table[]'].checked)
|
||||
check = true;
|
||||
} else {
|
||||
for (i=0; i<f.elements['chk_bo_table[]'].length; i++) {
|
||||
if (f.elements['chk_bo_table[]'][i].checked) {
|
||||
check = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!check) {
|
||||
alert('게시물을 '+f.act.value+'할 게시판을 한개 이상 선택해 주십시오.');
|
||||
return false;
|
||||
}
|
||||
|
||||
document.getElementById('btn_submit').disabled = true;
|
||||
|
||||
f.action = './move_update.php';
|
||||
return true;
|
||||
}
|
||||
</script>
|
||||
|
||||
<?php
|
||||
run_event('move_html_footer');
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
@@ -0,0 +1,356 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$act = isset($act) ? strip_tags($act) : '';
|
||||
$count_chk_bo_table = (isset($_POST['chk_bo_table']) && is_array($_POST['chk_bo_table'])) ? count($_POST['chk_bo_table']) : 0;
|
||||
|
||||
// 게시판 관리자 이상 복사, 이동 가능
|
||||
if ($is_admin != 'board' && $is_admin != 'group' && $is_admin != 'super')
|
||||
alert_close('게시판 관리자 이상 접근이 가능합니다.');
|
||||
|
||||
if ($sw != 'move' && $sw != 'copy')
|
||||
alert('sw 값이 제대로 넘어오지 않았습니다.');
|
||||
|
||||
if(! $count_chk_bo_table)
|
||||
alert('게시물을 '.$act.'할 게시판을 한개 이상 선택해 주십시오.', $url);
|
||||
|
||||
// 원본 파일 디렉토리
|
||||
$src_dir = G5_DATA_PATH.'/file/'.$bo_table;
|
||||
|
||||
$save = array();
|
||||
$save_count_write = 0;
|
||||
$save_count_comment = 0;
|
||||
$cnt = 0;
|
||||
|
||||
$wr_id_list = isset($_POST['wr_id_list']) ? preg_replace('/[^0-9\,]/', '', $_POST['wr_id_list']) : '';
|
||||
|
||||
$sql = " select distinct wr_num from $write_table where wr_id in ({$wr_id_list}) order by wr_id ";
|
||||
$result = sql_query($sql);
|
||||
while ($row = sql_fetch_array($result))
|
||||
{
|
||||
$save[$cnt]['wr_contents'] = array();
|
||||
|
||||
$wr_num = $row['wr_num'];
|
||||
for ($i=0; $i<$count_chk_bo_table; $i++)
|
||||
{
|
||||
$move_bo_table = isset($_POST['chk_bo_table'][$i]) ? preg_replace('/[^a-z0-9_]/i', '', $_POST['chk_bo_table'][$i]) : '';
|
||||
|
||||
// 취약점 18-0075 참고
|
||||
$sql = "select * from {$g5['board_table']} where bo_table = '".sql_real_escape_string($move_bo_table)."' ";
|
||||
$move_board = sql_fetch($sql);
|
||||
// 존재하지 않다면
|
||||
if( !$move_board['bo_table'] ) continue;
|
||||
|
||||
$move_write_table = $g5['write_prefix'] . $move_bo_table;
|
||||
|
||||
$src_dir = G5_DATA_PATH.'/file/'.$bo_table; // 원본 디렉토리
|
||||
$dst_dir = G5_DATA_PATH.'/file/'.$move_bo_table; // 복사본 디렉토리
|
||||
|
||||
$count_write = 0;
|
||||
$count_comment = 0;
|
||||
|
||||
// get_next_num 함수는 mysql 지연시 중복이 될수 있는 문제로 더 이상 사용하지 않습니다.
|
||||
// $next_wr_num = get_next_num($move_write_table);
|
||||
$next_wr_num = 0;
|
||||
|
||||
$sql2 = " select * from $write_table where wr_num = '$wr_num' order by wr_parent, wr_is_comment, wr_comment desc, wr_id ";
|
||||
$result2 = sql_query($sql2);
|
||||
while ($row2 = sql_fetch_array($result2))
|
||||
{
|
||||
$save[$cnt]['wr_contents'][] = $row2['wr_content'];
|
||||
|
||||
$nick = cut_str($member['mb_nick'], $config['cf_cut_name']);
|
||||
if (!$row2['wr_is_comment'] && $config['cf_use_copy_log']) {
|
||||
if(strstr($row2['wr_option'], 'html')) {
|
||||
$log_tag1 = '<div class="content_'.$sw.'">';
|
||||
$log_tag2 = '</div>';
|
||||
} else {
|
||||
$log_tag1 = "\n";
|
||||
$log_tag2 = '';
|
||||
}
|
||||
|
||||
$row2['wr_content'] .= "\n".$log_tag1.'[이 게시물은 '.$nick.'님에 의해 '.G5_TIME_YMDHIS.' '.$board['bo_subject'].'에서 '.($sw == 'copy' ? '복사' : '이동').' 됨]'.$log_tag2;
|
||||
}
|
||||
|
||||
// 게시글 추천, 비추천수
|
||||
$wr_good = $wr_nogood = 0;
|
||||
if ($sw == 'move' && $i == 0) {
|
||||
$wr_good = $row2['wr_good'];
|
||||
$wr_nogood = $row2['wr_nogood'];
|
||||
}
|
||||
|
||||
$sql = " insert into $move_write_table
|
||||
set wr_num = " . ($next_wr_num ? "'$next_wr_num'" : "(SELECT IFNULL(MIN(wr_num) - 1, -1) FROM $move_write_table as sq) ") . ",
|
||||
wr_reply = '{$row2['wr_reply']}',
|
||||
wr_is_comment = '{$row2['wr_is_comment']}',
|
||||
wr_comment = '{$row2['wr_comment']}',
|
||||
wr_comment_reply = '{$row2['wr_comment_reply']}',
|
||||
ca_name = '".addslashes($row2['ca_name'])."',
|
||||
wr_option = '{$row2['wr_option']}',
|
||||
wr_subject = '".addslashes($row2['wr_subject'])."',
|
||||
wr_content = '".addslashes($row2['wr_content'])."',
|
||||
wr_link1 = '".addslashes($row2['wr_link1'])."',
|
||||
wr_link2 = '".addslashes($row2['wr_link2'])."',
|
||||
wr_link1_hit = '{$row2['wr_link1_hit']}',
|
||||
wr_link2_hit = '{$row2['wr_link2_hit']}',
|
||||
wr_hit = '{$row2['wr_hit']}',
|
||||
wr_good = '{$wr_good}',
|
||||
wr_nogood = '{$wr_nogood}',
|
||||
mb_id = '{$row2['mb_id']}',
|
||||
wr_password = '{$row2['wr_password']}',
|
||||
wr_name = '".addslashes($row2['wr_name'])."',
|
||||
wr_email = '".addslashes($row2['wr_email'])."',
|
||||
wr_homepage = '".addslashes($row2['wr_homepage'])."',
|
||||
wr_datetime = '{$row2['wr_datetime']}',
|
||||
wr_file = '{$row2['wr_file']}',
|
||||
wr_last = '{$row2['wr_last']}',
|
||||
wr_ip = '{$row2['wr_ip']}',
|
||||
wr_1 = '".addslashes($row2['wr_1'])."',
|
||||
wr_2 = '".addslashes($row2['wr_2'])."',
|
||||
wr_3 = '".addslashes($row2['wr_3'])."',
|
||||
wr_4 = '".addslashes($row2['wr_4'])."',
|
||||
wr_5 = '".addslashes($row2['wr_5'])."',
|
||||
wr_6 = '".addslashes($row2['wr_6'])."',
|
||||
wr_7 = '".addslashes($row2['wr_7'])."',
|
||||
wr_8 = '".addslashes($row2['wr_8'])."',
|
||||
wr_9 = '".addslashes($row2['wr_9'])."',
|
||||
wr_10 = '".addslashes($row2['wr_10'])."' ";
|
||||
sql_query($sql);
|
||||
|
||||
$insert_id = sql_insert_id();
|
||||
|
||||
if ($next_wr_num === 0) {
|
||||
$tmp = sql_fetch("select wr_num from $move_write_table where wr_id = '$insert_id'");
|
||||
$next_wr_num = $tmp['wr_num'];
|
||||
}
|
||||
|
||||
// 코멘트가 아니라면
|
||||
if (!$row2['wr_is_comment'])
|
||||
{
|
||||
$save_parent = $insert_id;
|
||||
|
||||
$sql3 = " select * from {$g5['board_file_table']} where bo_table = '$bo_table' and wr_id = '{$row2['wr_id']}' order by bf_no ";
|
||||
$result3 = sql_query($sql3);
|
||||
for ($k=0; $row3 = sql_fetch_array($result3); $k++)
|
||||
{
|
||||
$copy_file_name = '';
|
||||
|
||||
if ($row3['bf_file'])
|
||||
{
|
||||
// 원본파일을 복사하고 퍼미션을 변경
|
||||
// 제이프로님 코드제안 적용
|
||||
|
||||
$copy_file_name = $row3['bf_file'];
|
||||
|
||||
if($bo_table === $move_bo_table){
|
||||
if(preg_match('/_copy(\d+)?_(\d+)_/', $copy_file_name, $match)){
|
||||
|
||||
$number = isset($match[1]) ? (int) $match[1] : 0;
|
||||
$replace_str = '_copy'.($number + 1).'_'.$insert_id.'_';
|
||||
$copy_file_name = preg_replace('/_copy(\d+)?_(\d+)_/', $replace_str, $copy_file_name);
|
||||
} else {
|
||||
$copy_file_name = $row2['wr_id'].'_copy_'.$insert_id.'_'.$row3['bf_file'];
|
||||
}
|
||||
}
|
||||
|
||||
$is_exist_file = is_file($src_dir.'/'.$row3['bf_file']) && file_exists($src_dir.'/'.$row3['bf_file']);
|
||||
if( $is_exist_file ){
|
||||
@copy($src_dir.'/'.$row3['bf_file'], $dst_dir.'/'.$copy_file_name);
|
||||
@chmod($dst_dir.'/'.$row3['bf_file'], G5_FILE_PERMISSION);
|
||||
}
|
||||
|
||||
$row3 = run_replace('bbs_move_update_file', $row3, $copy_file_name, $bo_table, $move_bo_table, $insert_id);
|
||||
}
|
||||
|
||||
$sql = " insert into {$g5['board_file_table']}
|
||||
set bo_table = '$move_bo_table',
|
||||
wr_id = '$insert_id',
|
||||
bf_no = '{$row3['bf_no']}',
|
||||
bf_source = '".addslashes($row3['bf_source'])."',
|
||||
bf_file = '$copy_file_name',
|
||||
bf_download = '{$row3['bf_download']}',
|
||||
bf_content = '".addslashes($row3['bf_content'])."',
|
||||
bf_fileurl = '".addslashes($row3['bf_fileurl'])."',
|
||||
bf_thumburl = '".addslashes($row3['bf_thumburl'])."',
|
||||
bf_storage = '".addslashes($row3['bf_storage'])."',
|
||||
bf_filesize = '{$row3['bf_filesize']}',
|
||||
bf_width = '{$row3['bf_width']}',
|
||||
bf_height = '{$row3['bf_height']}',
|
||||
bf_type = '{$row3['bf_type']}',
|
||||
bf_datetime = '{$row3['bf_datetime']}' ";
|
||||
sql_query($sql);
|
||||
|
||||
if ($sw == 'move' && $row3['bf_file'])
|
||||
$save[$cnt]['bf_file'][$k] = $src_dir.'/'.$row3['bf_file'];
|
||||
}
|
||||
|
||||
$count_write++;
|
||||
|
||||
if ($sw == 'move' && $i == 0)
|
||||
{
|
||||
// 스크랩 이동
|
||||
sql_query(" update {$g5['scrap_table']} set bo_table = '$move_bo_table', wr_id = '$save_parent' where bo_table = '$bo_table' and wr_id = '{$row2['wr_id']}' ");
|
||||
|
||||
// 최신글 이동
|
||||
sql_query(" update {$g5['board_new_table']} set bo_table = '$move_bo_table', wr_id = '$save_parent', wr_parent = '$save_parent' where bo_table = '$bo_table' and wr_id = '{$row2['wr_id']}' ");
|
||||
|
||||
// 추천데이터 이동
|
||||
sql_query(" update {$g5['board_good_table']} set bo_table = '$move_bo_table', wr_id = '$save_parent' where bo_table = '$bo_table' and wr_id = '{$row2['wr_id']}' ");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$count_comment++;
|
||||
|
||||
if ($sw == 'move')
|
||||
{
|
||||
// 최신글 이동
|
||||
sql_query(" update {$g5['board_new_table']} set bo_table = '$move_bo_table', wr_id = '$insert_id', wr_parent = '$save_parent' where bo_table = '$bo_table' and wr_id = '{$row2['wr_id']}' ");
|
||||
}
|
||||
}
|
||||
|
||||
sql_query(" update $move_write_table set wr_parent = '$save_parent' where wr_id = '$insert_id' ");
|
||||
|
||||
if ($sw == 'move')
|
||||
$save[$cnt]['wr_id'] = $row2['wr_parent'];
|
||||
|
||||
$cnt++;
|
||||
|
||||
run_event('bbs_move_copy', $row2, $move_bo_table, $insert_id, $next_wr_num, $sw);
|
||||
}
|
||||
|
||||
sql_query(" update {$g5['board_table']} set bo_count_write = bo_count_write + '$count_write' where bo_table = '$move_bo_table' ");
|
||||
sql_query(" update {$g5['board_table']} set bo_count_comment = bo_count_comment + '$count_comment' where bo_table = '$move_bo_table' ");
|
||||
|
||||
delete_cache_latest($move_bo_table);
|
||||
}
|
||||
|
||||
$save_count_write += $count_write;
|
||||
$save_count_comment += $count_comment;
|
||||
}
|
||||
|
||||
delete_cache_latest($bo_table);
|
||||
|
||||
if ($sw == 'move')
|
||||
{
|
||||
for ($i=0; $i<count($save); $i++)
|
||||
{
|
||||
if( isset($save[$i]['bf_file']) && $save[$i]['bf_file'] ){
|
||||
for ($k=0; $k<count($save[$i]['bf_file']); $k++) {
|
||||
$del_file = run_replace('delete_file_path', clean_relative_paths($save[$i]['bf_file'][$k]), $save[$i]);
|
||||
|
||||
if ( is_file($del_file) && file_exists($del_file) ){
|
||||
@unlink($del_file);
|
||||
}
|
||||
|
||||
// 썸네일 파일 삭제, 먼지손 님 코드 제안
|
||||
delete_board_thumbnail($bo_table, basename($save[$i]['bf_file'][$k]));
|
||||
}
|
||||
}
|
||||
|
||||
for ($k=0; $k<count($save[$i]['wr_contents']); $k++){
|
||||
delete_editor_thumbnail($save[$i]['wr_contents'][$k]);
|
||||
}
|
||||
|
||||
sql_query(" delete from $write_table where wr_parent = '{$save[$i]['wr_id']}' ");
|
||||
sql_query(" delete from {$g5['board_new_table']} where bo_table = '$bo_table' and wr_id = '{$save[$i]['wr_id']}' ");
|
||||
sql_query(" delete from {$g5['board_file_table']} where bo_table = '$bo_table' and wr_id = '{$save[$i]['wr_id']}' ");
|
||||
}
|
||||
|
||||
// 공지사항이 이동되는 경우의 처리 begin
|
||||
$arr = array();
|
||||
$sql = " select bo_notice from {$g5['board_table']} where bo_table = '{$bo_table}' ";
|
||||
$row = sql_fetch($sql);
|
||||
$arr_notice = explode(',', $row['bo_notice']);
|
||||
for ($i=0; $i<count($arr_notice); $i++) {
|
||||
$move_id = (int)$arr_notice[$i];
|
||||
// 게시판에 wr_id 가 있다면 이동한게 아니므로 bo_notice 에 다시 넣음
|
||||
$row2 = sql_fetch(" select count(*) as cnt from $write_table where wr_id = '{$move_id}' ");
|
||||
if ($row2['cnt']) {
|
||||
$arr[] = $move_id;
|
||||
}
|
||||
$bo_notice = implode(',', $arr);
|
||||
}
|
||||
// 공지사항이 이동되는 경우의 처리 end
|
||||
|
||||
sql_query(" update {$g5['board_table']} set bo_notice = '{$bo_notice}', bo_count_write = bo_count_write - '$save_count_write', bo_count_comment = bo_count_comment - '$save_count_comment' where bo_table = '$bo_table' ");
|
||||
}
|
||||
|
||||
$msg = '해당 게시물을 선택한 게시판으로 '.$act.' 하였습니다.';
|
||||
$opener_href = get_pretty_url($bo_table,'','&page='.$page.'&'.$qstr);
|
||||
$opener_href1 = str_replace('&', '&', $opener_href);
|
||||
|
||||
run_event('bbs_move_update', $bo_table, $chk_bo_table, $wr_id_list, $opener_href);
|
||||
?>
|
||||
<?php if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == $app['ap_title']) { ?>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
|
||||
<style>
|
||||
body,html {background-color: #f9fafb; padding: 0px; margin: 0px;}
|
||||
ul {padding: 0px; margin: 0px;}
|
||||
.rb_alert_wrap {
|
||||
width:100%;
|
||||
height:100%;
|
||||
position: relative;
|
||||
background-color: #f9fafb;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.rb_alert_wrap .rb_alert_wrap_inner {
|
||||
width: 100%;
|
||||
border-radius: 0px;
|
||||
padding: 50px;
|
||||
background-color: #f9fafb;
|
||||
box-sizing: border-box;
|
||||
position: absolute;
|
||||
top:50%;
|
||||
transform: translateY(-50%);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.rb_alert_wrap .rb_alert_title {
|
||||
text-align: center;
|
||||
font-size: 14px;
|
||||
color: #485172;
|
||||
line-height: 130%;
|
||||
word-break: keep-all;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.rb_alert_wrap .btn_submit {
|
||||
width: 100%;
|
||||
height: 47px;
|
||||
border-radius: 10px;
|
||||
font-size: 16px;
|
||||
background-color: #25282B;
|
||||
color:#fff;
|
||||
border:0px;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
<div class="rb_alert_wrap">
|
||||
<div class="rb_alert_wrap_inner">
|
||||
<ul class="rb_alert_title"><?php echo $msg; ?></ul>
|
||||
<ul class="rb_alert_btn">
|
||||
<button type="button" class="btn_submit font-B" onclick="location.href='<?php echo $opener_href; ?>';">돌아가기</button>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<?php } else { ?>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<script>
|
||||
alert("<?php echo $msg; ?>");
|
||||
opener.document.location.href = "<?php echo $opener_href1; ?>";
|
||||
window.close();
|
||||
</script>
|
||||
|
||||
<noscript>
|
||||
<p>
|
||||
<?php echo $msg; ?>
|
||||
</p>
|
||||
<a href="<?php echo $opener_href; ?>">돌아가기</a>
|
||||
</noscript>
|
||||
<?php } ?>
|
||||
+115
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$g5['title'] = '새글';
|
||||
include_once('./_head.php');
|
||||
|
||||
$sql_common = " from {$g5['board_new_table']} a, {$g5['board_table']} b, {$g5['group_table']} c where a.bo_table = b.bo_table and b.gr_id = c.gr_id and b.bo_use_search = 1 ";
|
||||
|
||||
$gr_id = isset($_GET['gr_id']) ? substr(preg_replace('#[^a-z0-9_]#i', '', $_GET['gr_id']), 0, 10) : '';
|
||||
if ($gr_id) {
|
||||
$sql_common .= " and b.gr_id = '$gr_id' ";
|
||||
}
|
||||
|
||||
$view = isset($_GET['view']) ? $_GET['view'] : "";
|
||||
|
||||
if ($view == "w")
|
||||
$sql_common .= " and a.wr_id = a.wr_parent ";
|
||||
else if ($view == "c")
|
||||
$sql_common .= " and a.wr_id <> a.wr_parent ";
|
||||
else
|
||||
$view = '';
|
||||
|
||||
$mb_id = isset($_GET['mb_id']) ? ($_GET['mb_id']) : '';
|
||||
$mb_id = substr(preg_replace('#[^a-z0-9_]#i', '', $mb_id), 0, 20);
|
||||
|
||||
if ($mb_id) {
|
||||
$sql_common .= " and a.mb_id = '{$mb_id}' ";
|
||||
}
|
||||
$sql_order = " order by a.bn_id desc ";
|
||||
|
||||
$sql = " select count(*) as cnt {$sql_common} ";
|
||||
$row = sql_fetch($sql);
|
||||
$total_count = $row['cnt'];
|
||||
|
||||
$rows = G5_IS_MOBILE ? $config['cf_mobile_page_rows'] : $config['cf_new_rows'];
|
||||
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
|
||||
if ($page < 1) $page = 1; // 페이지가 없으면 첫 페이지 (1 페이지)
|
||||
$from_record = ($page - 1) * $rows; // 시작 열을 구함
|
||||
|
||||
$group_select = '<label for="gr_id" class="sound_only">그룹</label><select name="gr_id" id="gr_id"><option value="">전체그룹';
|
||||
$sql = " select gr_id, gr_subject from {$g5['group_table']} order by gr_id ";
|
||||
$result = sql_query($sql);
|
||||
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
$group_select .= "<option value=\"".$row['gr_id']."\">".$row['gr_subject'];
|
||||
}
|
||||
$group_select .= '</select>';
|
||||
|
||||
$list = array();
|
||||
$sql = " select a.*, b.bo_subject, b.bo_mobile_subject, c.gr_subject, c.gr_id {$sql_common} {$sql_order} limit {$from_record}, {$rows} ";
|
||||
$result = sql_query($sql);
|
||||
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
$tmp_write_table = $g5['write_prefix'].$row['bo_table'];
|
||||
|
||||
if ($row['wr_id'] == $row['wr_parent']) {
|
||||
|
||||
// 원글
|
||||
$comment = "";
|
||||
$comment_link = "";
|
||||
$row2 = sql_fetch(" select * from {$tmp_write_table} where wr_id = '{$row['wr_id']}' ");
|
||||
$list[$i] = $row2;
|
||||
|
||||
$name = get_sideview($row2['mb_id'], get_text(cut_str($row2['wr_name'], $config['cf_cut_name'])), $row2['wr_email'], $row2['wr_homepage']);
|
||||
// 당일인 경우 시간으로 표시함
|
||||
$datetime = substr($row2['wr_datetime'],0,10);
|
||||
$datetime2 = $row2['wr_datetime'];
|
||||
if ($datetime == G5_TIME_YMD) {
|
||||
$datetime2 = substr($datetime2,11,5);
|
||||
} else {
|
||||
$datetime2 = substr($datetime2,5,5);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
// 코멘트
|
||||
$comment = '[코] ';
|
||||
$comment_link = '#c_'.$row['wr_id'];
|
||||
$row2 = sql_fetch(" select * from {$tmp_write_table} where wr_id = '{$row['wr_parent']}' ");
|
||||
$row3 = sql_fetch(" select mb_id, wr_name, wr_email, wr_homepage, wr_datetime from {$tmp_write_table} where wr_id = '{$row['wr_id']}' ");
|
||||
$list[$i] = $row2;
|
||||
$list[$i]['wr_id'] = $row['wr_id'];
|
||||
$list[$i]['mb_id'] = $row3['mb_id'];
|
||||
$list[$i]['wr_name'] = $row3['wr_name'];
|
||||
$list[$i]['wr_email'] = $row3['wr_email'];
|
||||
$list[$i]['wr_homepage'] = $row3['wr_homepage'];
|
||||
|
||||
$name = get_sideview($row3['mb_id'], get_text(cut_str($row3['wr_name'], $config['cf_cut_name'])), $row3['wr_email'], $row3['wr_homepage']);
|
||||
// 당일인 경우 시간으로 표시함
|
||||
$datetime = substr($row3['wr_datetime'],0,10);
|
||||
$datetime2 = $row3['wr_datetime'];
|
||||
if ($datetime == G5_TIME_YMD) {
|
||||
$datetime2 = substr($datetime2,11,5);
|
||||
} else {
|
||||
$datetime2 = substr($datetime2,5,5);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$list[$i]['gr_id'] = $row['gr_id'];
|
||||
$list[$i]['bo_table'] = $row['bo_table'];
|
||||
$list[$i]['name'] = $name;
|
||||
$list[$i]['comment'] = $comment;
|
||||
$list[$i]['href'] = get_pretty_url($row['bo_table'], $row2['wr_id'], $comment_link);
|
||||
$list[$i]['datetime'] = $datetime;
|
||||
$list[$i]['datetime2'] = $datetime2;
|
||||
|
||||
$list[$i]['gr_subject'] = $row['gr_subject'];
|
||||
$list[$i]['bo_subject'] = ((G5_IS_MOBILE && $row['bo_mobile_subject']) ? $row['bo_mobile_subject'] : $row['bo_subject']);
|
||||
$list[$i]['wr_subject'] = $row2['wr_subject'];
|
||||
}
|
||||
|
||||
$write_pages = get_paging(G5_IS_MOBILE ? $config['cf_mobile_pages'] : $config['cf_write_pages'], $page, $total_page, "?gr_id=$gr_id&view=$view&mb_id=$mb_id&page=");
|
||||
|
||||
include_once($new_skin_path.'/new.skin.php');
|
||||
|
||||
include_once('./_tail.php');
|
||||
@@ -0,0 +1,159 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
//print_r2($_POST); exit;
|
||||
|
||||
if ($is_admin != 'super')
|
||||
alert("최고관리자만 접근이 가능합니다.");
|
||||
|
||||
$board = array('bo_table'=>'');
|
||||
$save_bo_table = array();
|
||||
$save_wr_id = array();
|
||||
$count_chk_bn_id = (isset($_POST['chk_bn_id']) && is_array($_POST['chk_bn_id'])) ? count($_POST['chk_bn_id']) : 0;
|
||||
|
||||
for($i=0;$i<$count_chk_bn_id;$i++)
|
||||
{
|
||||
// 실제 번호를 넘김
|
||||
$k = isset($_POST['chk_bn_id'][$i]) ? (int) $_POST['chk_bn_id'][$i] : 0;
|
||||
|
||||
$bo_table = isset($_POST['bo_table'][$k]) ? preg_replace('/[^a-z0-9_]/i', '', $_POST['bo_table'][$k]) : '';
|
||||
$wr_id = isset($_POST['wr_id'][$k]) ? preg_replace('/[^0-9]/i', '', $_POST['wr_id'][$k]) : 0;
|
||||
|
||||
$count_write = $count_comment = 0;
|
||||
|
||||
$save_bo_table[$i] = $bo_table;
|
||||
$save_wr_id[$i] = $wr_id;
|
||||
|
||||
$write_table = $g5['write_prefix'].$bo_table;
|
||||
|
||||
if ($board['bo_table'] != $bo_table)
|
||||
$board = sql_fetch(" select bo_subject, bo_write_point, bo_comment_point, bo_notice from {$g5['board_table']} where bo_table = '$bo_table' ");
|
||||
|
||||
$write = get_write($write_table, $wr_id);
|
||||
if (!$write) continue;
|
||||
|
||||
// 원글 삭제
|
||||
if ($write['wr_is_comment']==0)
|
||||
{
|
||||
$len = strlen($write['wr_reply']);
|
||||
if ($len < 0) $len = 0;
|
||||
$reply = substr($write['wr_reply'], 0, $len);
|
||||
|
||||
// 나라오름님 수정 : 원글과 코멘트수가 정상적으로 업데이트 되지 않는 오류를 잡아 주셨습니다.
|
||||
$sql = " select wr_id, mb_id, wr_is_comment from $write_table where wr_parent = '{$write['wr_id']}' order by wr_id ";
|
||||
$result = sql_query($sql);
|
||||
while ($row = sql_fetch_array($result))
|
||||
{
|
||||
// 원글이라면
|
||||
if (!$row['wr_is_comment'])
|
||||
{
|
||||
if (!delete_point($row['mb_id'], $bo_table, $row['wr_id'], '쓰기'))
|
||||
insert_point($row['mb_id'], $board['bo_write_point'] * (-1), "{$board['bo_subject']} {$row['wr_id']} 글삭제");
|
||||
|
||||
// 업로드된 파일이 있다면 파일삭제
|
||||
$sql2 = " select * from {$g5['board_file_table']} where bo_table = '$bo_table' and wr_id = '{$row['wr_id']}' ";
|
||||
$result2 = sql_query($sql2);
|
||||
while ($row2 = sql_fetch_array($result2)){
|
||||
|
||||
$delete_file = run_replace('delete_file_path', G5_DATA_PATH.'/file/'.$bo_table.'/'.str_replace('../', '', $row2['bf_file']), $row2);
|
||||
if( file_exists($delete_file) ){
|
||||
@unlink(G5_DATA_PATH.'/file/'.$bo_table.'/'.$row2['bf_file']);
|
||||
}
|
||||
// 이미지파일이면 썸네일삭제
|
||||
if(preg_match("/\.({$config['cf_image_extension']})$/i", $row2['bf_file'])) {
|
||||
delete_board_thumbnail($bo_table, $row2['bf_file']);
|
||||
}
|
||||
}
|
||||
// 파일테이블 행 삭제
|
||||
sql_query(" delete from {$g5['board_file_table']} where bo_table = '$bo_table' and wr_id = '{$row['wr_id']}' ");
|
||||
|
||||
$count_write++;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 댓글 포인트 삭제
|
||||
if (!delete_point($row['mb_id'], $bo_table, $row['wr_id'], '댓글'))
|
||||
insert_point($row['mb_id'], $board['bo_comment_point'] * (-1), "{$board['bo_subject']} {$write['wr_id']}-{$row['wr_id']} 댓글삭제");
|
||||
|
||||
$count_comment++;
|
||||
}
|
||||
}
|
||||
|
||||
if ($pressed == '선택내용삭제') {
|
||||
// 게시글 내용만 삭제
|
||||
sql_query(" update $write_table set wr_subject = '".G5_TIME_YMDHIS." - 본인 요청으로 인한 삭제 (냉무) ☆', wr_content = '', wr_name='본인요청삭제☆' where wr_id = '{$write['wr_id']}' ");
|
||||
} else {
|
||||
// 게시글 삭제
|
||||
sql_query(" delete from $write_table where wr_parent = '{$write['wr_id']}' ");
|
||||
}
|
||||
|
||||
// 최근게시물 삭제
|
||||
sql_query(" delete from {$g5['board_new_table']} where bo_table = '$bo_table' and wr_parent = '{$write['wr_id']}' ");
|
||||
|
||||
// 스크랩 삭제
|
||||
sql_query(" delete from {$g5['scrap_table']} where bo_table = '$bo_table' and wr_id = '{$write['wr_id']}' ");
|
||||
|
||||
// 공지사항 삭제
|
||||
$notice_array = explode(",", trim($board['bo_notice']));
|
||||
$bo_notice = "";
|
||||
$lf = '';
|
||||
for ($k=0; $k<count($notice_array); $k++) {
|
||||
if ((int)$write['wr_id'] != (int)$notice_array[$k])
|
||||
$bo_notice .= $lf.$notice_array[$k];
|
||||
|
||||
if($bo_notice)
|
||||
$lf = ',';
|
||||
}
|
||||
$bo_notice = trim($bo_notice);
|
||||
sql_query(" update {$g5['board_table']} set bo_notice = '$bo_notice' where bo_table = '$bo_table' ");
|
||||
|
||||
if ($pressed == '선택삭제') {
|
||||
// 글숫자 감소
|
||||
if ($count_write > 0 || $count_comment > 0) {
|
||||
sql_query(" update {$g5['board_table']} set bo_count_write = bo_count_write - '$count_write', bo_count_comment = bo_count_comment - '$count_comment' where bo_table = '$bo_table' ");
|
||||
}
|
||||
}
|
||||
}
|
||||
else // 코멘트 삭제
|
||||
{
|
||||
//--------------------------------------------------------------------
|
||||
// 코멘트 삭제시 답변 코멘트 까지 삭제되지는 않음
|
||||
//--------------------------------------------------------------------
|
||||
//print_r2($write);
|
||||
|
||||
$comment_id = $wr_id;
|
||||
|
||||
$len = strlen($write['wr_comment_reply']);
|
||||
if ($len < 0) $len = 0;
|
||||
$comment_reply = substr($write['wr_comment_reply'], 0, $len);
|
||||
|
||||
// 코멘트 삭제
|
||||
if (!delete_point($write['mb_id'], $bo_table, $comment_id, '댓글')) {
|
||||
insert_point($write['mb_id'], $board['bo_comment_point'] * (-1), "{$board['bo_subject']} {$write['wr_parent']}-{$comment_id} 댓글삭제");
|
||||
}
|
||||
|
||||
// 코멘트 삭제
|
||||
sql_query(" delete from $write_table where wr_id = '$comment_id' ");
|
||||
|
||||
// 코멘트가 삭제되므로 해당 게시물에 대한 최근 시간을 다시 얻는다.
|
||||
$sql = " select max(wr_datetime) as wr_last from $write_table where wr_parent = '{$write['wr_parent']}' ";
|
||||
$row = sql_fetch($sql);
|
||||
|
||||
// 원글의 코멘트 숫자를 감소
|
||||
sql_query(" update $write_table set wr_comment = wr_comment - 1, wr_last = '{$row['wr_last']}' where wr_id = '{$write['wr_parent']}' ");
|
||||
|
||||
// 코멘트 숫자 감소
|
||||
sql_query(" update {$g5['board_table']} set bo_count_comment = bo_count_comment - 1 where bo_table = '$bo_table' ");
|
||||
|
||||
// 새글 삭제
|
||||
sql_query(" delete from {$g5['board_new_table']} where bo_table = '$bo_table' and wr_id = '$comment_id' ");
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($save_bo_table as $key=>$value) {
|
||||
delete_cache_latest($value);
|
||||
}
|
||||
|
||||
run_event('bbs_new_delete', $chk_bn_id, $save_bo_table, $save_wr_id);
|
||||
|
||||
goto_url("new.php?sfl=$sfl&stx=$stx&page=$page");
|
||||
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
|
||||
|
||||
if (!defined('_SHOP_')) {
|
||||
$pop_division = 'comm';
|
||||
} else {
|
||||
$pop_division = 'shop';
|
||||
}
|
||||
|
||||
$sql = " select * from {$g5['new_win_table']}
|
||||
where '".G5_TIME_YMDHIS."' between nw_begin_time and nw_end_time
|
||||
and nw_device IN ( 'both', 'pc' ) and nw_division IN ( 'both', '".$pop_division."' )
|
||||
order by nw_id asc ";
|
||||
$result = sql_query($sql, false);
|
||||
?>
|
||||
|
||||
<!-- 팝업레이어 시작 { -->
|
||||
<div id="hd_pop">
|
||||
|
||||
|
||||
<?php
|
||||
for ($i=0; $nw=sql_fetch_array($result); $i++)
|
||||
{
|
||||
// 이미 체크 되었다면 Continue
|
||||
if (isset($_COOKIE["hd_pops_{$nw['nw_id']}"]) && $_COOKIE["hd_pops_{$nw['nw_id']}"])
|
||||
continue;
|
||||
?>
|
||||
|
||||
<div id="hd_pops_<?php echo $nw['nw_id'] ?>" class="hd_pops" style="top:<?php echo $nw['nw_top']?>px;left:<?php echo $nw['nw_left']?>px">
|
||||
<div class="hd_pops_con" style="width:<?php echo $nw['nw_width'] ?>px;height:<?php echo $nw['nw_height'] ?>px">
|
||||
<?php echo conv_content($nw['nw_content'], 1); ?>
|
||||
</div>
|
||||
<div class="hd_pops_footer">
|
||||
<button class="hd_pops_reject hd_pops_<?php echo $nw['nw_id']; ?> <?php echo $nw['nw_disable_hours']; ?>"><strong><?php echo $nw['nw_disable_hours']; ?></strong>시간 동안 다시 열람하지 않습니다.</button>
|
||||
<button class="hd_pops_close hd_pops_<?php echo $nw['nw_id']; ?>">닫기 <i class="fa fa-times" aria-hidden="true"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
<?php }
|
||||
//if ($i == 0) echo '<span class="sound_only">팝업레이어 알림이 없습니다.</span>';
|
||||
?>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
$(".hd_pops_reject").click(function() {
|
||||
var id = $(this).attr('class').split(' ');
|
||||
var ck_name = id[1];
|
||||
var exp_time = parseInt(id[2]);
|
||||
$("#"+id[1]).css("display", "none");
|
||||
set_cookie(ck_name, 1, exp_time, g5_cookie_domain);
|
||||
});
|
||||
$('.hd_pops_close').click(function() {
|
||||
var idb = $(this).attr('class').split(' ');
|
||||
$('#'+idb[1]).css('display','none');
|
||||
});
|
||||
$("#hd").css("z-index", 1000);
|
||||
});
|
||||
</script>
|
||||
<!-- } 팝업레이어 끝 -->
|
||||
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$g5['title'] = '비밀번호 입력';
|
||||
|
||||
$comment_id = isset($_REQUEST['comment_id']) ? preg_replace('/[^0-9]/', '', $_REQUEST['comment_id']) : 0;
|
||||
|
||||
switch ($w) {
|
||||
case 'u' :
|
||||
$action = G5_HTTP_BBS_URL.'/write.php';
|
||||
$return_url = short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id);
|
||||
break;
|
||||
case 'd' :
|
||||
set_session('ss_delete_token', $token = uniqid(time()));
|
||||
$action = https_url(G5_BBS_DIR).'/delete.php?token='.$token;
|
||||
$return_url = short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id);
|
||||
break;
|
||||
case 'x' :
|
||||
set_session('ss_delete_comment_'.$comment_id.'_token', $token = uniqid(time()));
|
||||
$action = https_url(G5_BBS_DIR).'/delete_comment.php?token='.$token;
|
||||
$row = sql_fetch(" select wr_parent from $write_table where wr_id = '$comment_id' ");
|
||||
$return_url = short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$row['wr_parent']);
|
||||
break;
|
||||
case 's' :
|
||||
// 비밀번호 창에서 로그인 하는 경우 관리자 또는 자신의 글이면 바로 글보기로 감
|
||||
if ($is_admin || (isset($write['mb_id']) && $write['mb_id'] && $member['mb_id'] == $write['mb_id']))
|
||||
goto_url(short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id));
|
||||
else {
|
||||
$action = https_url(G5_BBS_DIR).'/password_check.php';
|
||||
$return_url = short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table);
|
||||
}
|
||||
break;
|
||||
case 'sc' :
|
||||
// 비밀번호 창에서 로그인 하는 경우 관리자 또는 자신의 글이면 바로 글보기로 감
|
||||
if ($is_admin || (isset($write['mb_id']) && $write['mb_id'] && $member['mb_id'] == $write['mb_id']))
|
||||
goto_url(short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id));
|
||||
else {
|
||||
$action = https_url(G5_BBS_DIR).'/password_check.php';
|
||||
$return_url = short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id);
|
||||
}
|
||||
break;
|
||||
default :
|
||||
alert('w 값이 제대로 넘어오지 않았습니다.');
|
||||
}
|
||||
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
//if ($board['bo_include_head'] && is_include_path_check($board['bo_content_head'])) { @include ($board['bo_include_head']); }
|
||||
//if ($board['bo_content_head']) { echo html_purifier(stripslashes($board['bo_content_head'])); }
|
||||
|
||||
/* 비밀글의 제목을 가져옴 지운아빠 2013-01-29 */
|
||||
if (isset($write['wr_num'])) {
|
||||
$sql = " select wr_subject from {$write_table}
|
||||
where wr_num = '{$write['wr_num']}'
|
||||
and wr_reply = ''
|
||||
and wr_is_comment = 0 ";
|
||||
$row = sql_fetch($sql);
|
||||
|
||||
$g5['title'] = get_text((string)$row['wr_subject']);
|
||||
}
|
||||
|
||||
include_once($member_skin_path.'/password.skin.php');
|
||||
|
||||
//if ($board['bo_content_tail']) { echo html_purifier(stripslashes($board['bo_content_tail'])); }
|
||||
//if ($board['bo_include_tail'] && is_include_path_check($board['bo_content_tail'])) { @include ($board['bo_include_tail']); }
|
||||
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
if ($w == 's') {
|
||||
$qstr = 'bo_table='.$bo_table.'&sfl='.$sfl.'&stx='.$stx.'&sop='.$sop.'&wr_id='.$wr_id.'&page='.$page;
|
||||
|
||||
$wr = get_write($write_table, $wr_id);
|
||||
|
||||
if( !$wr['wr_password'] && $wr['mb_id'] ){
|
||||
if ( $mb = get_member($wr['mb_id']) ){
|
||||
$wr['wr_password'] = $mb['mb_password'];
|
||||
}
|
||||
}
|
||||
|
||||
if (!check_password($wr_password, $wr['wr_password'])) {
|
||||
run_event('password_is_wrong', 'bbs', $wr, $qstr);
|
||||
alert('비밀번호가 틀립니다.');
|
||||
}
|
||||
|
||||
// 세션에 아래 정보를 저장. 하위번호는 비밀번호없이 보아야 하기 때문임.
|
||||
//$ss_name = 'ss_secret.'_'.$bo_table.'_'.$wr_id';
|
||||
$ss_name = 'ss_secret_'.$bo_table.'_'.$wr['wr_num'];
|
||||
//set_session("ss_secret", "$bo_table|$wr[wr_num]");
|
||||
set_session($ss_name, TRUE);
|
||||
|
||||
} else if ($w == 'sc') {
|
||||
$qstr = 'bo_table='.$bo_table.'&sfl='.$sfl.'&stx='.$stx.'&sop='.$sop.'&wr_id='.$wr_id.'&page='.$page;
|
||||
|
||||
$wr = get_write($write_table, $wr_id);
|
||||
|
||||
if( !$wr['wr_password'] && $wr['mb_id'] ){
|
||||
if ( $mb = get_member($wr['mb_id']) ){
|
||||
$wr['wr_password'] = $mb['mb_password'];
|
||||
}
|
||||
}
|
||||
|
||||
if (!check_password($wr_password, $wr['wr_password'])){
|
||||
run_event('password_is_wrong', 'bbs', $wr, $qstr);
|
||||
alert('비밀번호가 틀립니다.');
|
||||
}
|
||||
|
||||
// 세션에 아래 정보를 저장. 하위번호는 비밀번호없이 보아야 하기 때문임.
|
||||
$ss_name = 'ss_secret_comment_'.$bo_table.'_'.$wr['wr_id'];
|
||||
//set_session("ss_secret", "$bo_table|$wr[wr_num]");
|
||||
set_session($ss_name, TRUE);
|
||||
|
||||
} else
|
||||
alert('w 값이 제대로 넘어오지 않았습니다.');
|
||||
|
||||
goto_url(short_url_clean(G5_HTTP_BBS_URL.'/board.php?'.$qstr));
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
||||
|
||||
if ($is_member) {
|
||||
alert("이미 로그인중입니다.", G5_URL);
|
||||
}
|
||||
|
||||
$g5['title'] = '회원정보 찾기';
|
||||
include_once('./_head.sub.php');
|
||||
|
||||
$action_url = G5_HTTPS_BBS_URL."/password_lost2.php";
|
||||
include_once($member_skin_path.'/password_lost.skin.php');
|
||||
|
||||
include_once('./_tail.sub.php');
|
||||
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
||||
include_once(G5_LIB_PATH.'/mailer.lib.php');
|
||||
|
||||
if ($is_member) {
|
||||
alert_close('이미 로그인중입니다.', G5_URL);
|
||||
}
|
||||
|
||||
if (!chk_captcha()) {
|
||||
alert('자동등록방지 숫자가 틀렸습니다.');
|
||||
}
|
||||
|
||||
$email = get_email_address(trim($_POST['mb_email']));
|
||||
|
||||
if (!$email)
|
||||
alert_close('메일주소 오류입니다.');
|
||||
|
||||
$sql = " select count(*) as cnt from {$g5['member_table']} where mb_email = '$email' ";
|
||||
$row = sql_fetch($sql);
|
||||
if ($row['cnt'] > 1)
|
||||
alert('동일한 메일주소가 2개 이상 존재합니다.\\n\\n관리자에게 문의하여 주십시오.');
|
||||
|
||||
$sql = " select mb_no, mb_id, mb_name, mb_nick, mb_email, mb_datetime, mb_leave_date from {$g5['member_table']} where mb_email = '$email' ";
|
||||
$mb = sql_fetch($sql);
|
||||
if (empty($mb['mb_id']) || $mb['mb_leave_date']) {
|
||||
alert('존재하지 않는 회원입니다.');
|
||||
} elseif (is_admin($mb['mb_id'])) {
|
||||
alert('관리자 아이디는 접근 불가합니다.');
|
||||
}
|
||||
|
||||
// 임시비밀번호 발급
|
||||
$change_password = rand(100000, 999999);
|
||||
$mb_lost_certify = get_encrypt_string($change_password);
|
||||
|
||||
// 어떠한 회원정보도 포함되지 않은 일회용 난수를 생성하여 인증에 사용
|
||||
$mb_nonce = md5(pack('V*', rand(), rand(), rand(), rand()));
|
||||
|
||||
// 임시비밀번호와 난수를 mb_lost_certify 필드에 저장
|
||||
$sql = " update {$g5['member_table']} set mb_lost_certify = '$mb_nonce $mb_lost_certify' where mb_id = '{$mb['mb_id']}' ";
|
||||
sql_query($sql);
|
||||
|
||||
// 인증 링크 생성
|
||||
$href = G5_BBS_URL.'/password_lost_certify.php?mb_no='.$mb['mb_no'].'&mb_nonce='.$mb_nonce;
|
||||
|
||||
$subject = "[".$config['cf_title']."] 요청하신 회원정보 찾기 안내 메일입니다.";
|
||||
|
||||
$content = "";
|
||||
|
||||
$content .= '<div style="margin:30px auto;width:600px;border:10px solid #f7f7f7">';
|
||||
$content .= '<div style="border:1px solid #dedede">';
|
||||
$content .= '<h1 style="padding:30px 30px 0;background:#f7f7f7;color:#555;font-size:1.4em">';
|
||||
$content .= '회원정보 찾기 안내';
|
||||
$content .= '</h1>';
|
||||
$content .= '<span style="display:block;padding:10px 30px 30px;background:#f7f7f7;text-align:right">';
|
||||
$content .= '<a href="'.G5_URL.'" target="_blank">'.$config['cf_title'].'</a>';
|
||||
$content .= '</span>';
|
||||
$content .= '<p style="margin:20px 0 0;padding:30px 30px 30px;border-bottom:1px solid #eee;line-height:1.7em">';
|
||||
$content .= addslashes($mb['mb_name'])." (".addslashes($mb['mb_nick']).")"." 회원님은 ".G5_TIME_YMDHIS." 에 회원정보 찾기 요청을 하셨습니다.<br>";
|
||||
$content .= '저희 사이트는 관리자라도 회원님의 비밀번호를 알 수 없기 때문에, 비밀번호를 알려드리는 대신 새로운 비밀번호를 생성하여 안내 해드리고 있습니다.<br>';
|
||||
$content .= '아래에서 변경될 비밀번호를 확인하신 후, <span style="color:#ff3061"><strong>비밀번호 변경</strong> 링크를 클릭 하십시오.</span><br>';
|
||||
$content .= '비밀번호가 변경되었다는 인증 메세지가 출력되면, 홈페이지에서 회원아이디와 변경된 비밀번호를 입력하시고 로그인 하십시오.<br>';
|
||||
$content .= '로그인 후에는 정보수정 메뉴에서 새로운 비밀번호로 변경해 주십시오.';
|
||||
$content .= '</p>';
|
||||
$content .= '<p style="margin:0;padding:30px 30px 30px;border-bottom:1px solid #eee;line-height:1.7em">';
|
||||
$content .= '<span style="display:inline-block;width:100px">회원아이디</span> '.$mb['mb_id'].'<br>';
|
||||
$content .= '<span style="display:inline-block;width:100px">변경될 비밀번호</span> <strong style="color:#ff3061">'.$change_password.'</strong>';
|
||||
$content .= '</p>';
|
||||
$content .= '<a href="'.$href.'" target="_blank" style="display:block;padding:30px 0;background:#484848;color:#fff;text-decoration:none;text-align:center">비밀번호 변경</a>';
|
||||
$content .= '</div>';
|
||||
$content .= '</div>';
|
||||
|
||||
mailer($config['cf_admin_email_name'], $config['cf_admin_email'], $mb['mb_email'], $subject, $content, 1);
|
||||
|
||||
run_event('password_lost2_after', $mb, $mb_nonce, $mb_lost_certify);
|
||||
|
||||
alert_close($email.' 메일로 회원아이디와 비밀번호를 인증할 수 있는 메일이 발송 되었습니다.\\n\\n메일을 확인하여 주십시오.');
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
// 봇의 메일 링크 크롤링을 방지합니다.
|
||||
if(function_exists('check_mail_bot')){ check_mail_bot($_SERVER['REMOTE_ADDR']); }
|
||||
|
||||
run_event('password_lost_certify_before');
|
||||
|
||||
// 오류시 공히 Error 라고 처리하는 것은 회원정보가 있는지? 비밀번호가 틀린지? 를 알아보려는 해킹에 대비한것
|
||||
|
||||
$mb_no = isset($_GET['mb_no']) ? preg_replace('#[^0-9]#', '', trim($_GET['mb_no'])) : 0;
|
||||
$mb_nonce = isset($_GET['mb_nonce']) ? trim($_GET['mb_nonce']) : '';
|
||||
|
||||
// 회원아이디가 아닌 회원고유번호로 회원정보를 구한다.
|
||||
$sql = " select mb_id, mb_lost_certify from {$g5['member_table']} where mb_no = '$mb_no' ";
|
||||
$mb = sql_fetch($sql);
|
||||
if (strlen($mb['mb_lost_certify']) < 33)
|
||||
die("Error");
|
||||
|
||||
// 인증 링크는 한번만 처리가 되게 한다.
|
||||
sql_query(" update {$g5['member_table']} set mb_lost_certify = '' where mb_no = '$mb_no' ");
|
||||
|
||||
// 인증을 위한 난수가 제대로 넘어온 경우 임시비밀번호를 실제 비밀번호로 바꿔준다.
|
||||
if ($mb_nonce === substr($mb['mb_lost_certify'], 0, 32)) {
|
||||
$new_password_hash = substr($mb['mb_lost_certify'], 33);
|
||||
sql_query(" update {$g5['member_table']} set mb_password = '$new_password_hash' where mb_no = '$mb_no' ");
|
||||
|
||||
run_event('password_lost_certify_after', $mb, $mb_nonce);
|
||||
|
||||
alert('비밀번호가 변경됐습니다.\\n\\n회원아이디와 변경된 비밀번호로 로그인 하시기 바랍니다.', G5_BBS_URL.'/login.php');
|
||||
}
|
||||
else {
|
||||
die("Error");
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
//include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
||||
|
||||
if ($is_member) { alert("이미 로그인중입니다."); goto_url(G5_URL); }
|
||||
|
||||
$ss_cert_mb_id = isset($_SESSION['ss_cert_mb_id']) ? trim(get_session('ss_cert_mb_id')) : '';
|
||||
if(!(isset($_POST['mb_id']) && $_POST['mb_id'] === $ss_cert_mb_id)) { alert("잘못된 접근입니다."); goto_url(G5_URL); }
|
||||
|
||||
if($config['cf_cert_find'] != 1) alert("본인인증을 이용하여 아이디/비밀번호 찾기를 할 수 없습니다. 관리자에게 문의 하십시오.");
|
||||
|
||||
$g5['title'] = '패스워드 변경';
|
||||
include_once('./_head.sub.php');
|
||||
|
||||
$action_url = G5_HTTPS_BBS_URL."/password_reset_update.php";
|
||||
include_once($member_skin_path.'/password_reset.skin.php');
|
||||
|
||||
include_once('./_tail.sub.php');
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$mb_id = isset($_SESSION['ss_cert_mb_id']) ? trim(get_session('ss_cert_mb_id')) : '';
|
||||
$mb_dupinfo = isset($_SESSION['ss_cert_dupinfo']) ? trim(get_session('ss_cert_dupinfo')) : '';
|
||||
|
||||
if(!$mb_id) alert('회원아이디 값이 없습니다. 올바른 방법으로 이용해 주십시오.', G5_URL);
|
||||
|
||||
if(!$mb_dupinfo) alert('잘못된 접근입니다.', G5_URL);
|
||||
|
||||
$mb_check = sql_fetch("select * from {$g5['member_table']} where mb_id = '{$mb_id}' AND mb_dupinfo = '{$mb_dupinfo}'");
|
||||
|
||||
if(!$mb_check) alert('잘못된 접근입니다.', G5_URL);
|
||||
|
||||
$mb_password = isset($_POST['mb_password']) ? trim($_POST['mb_password_re']) : '';
|
||||
$mb_password_re = isset($_POST['mb_password_re']) ? trim($_POST['mb_password_re']) : '';
|
||||
|
||||
|
||||
if (!$mb_password)
|
||||
alert('비밀번호가 넘어오지 않았습니다.');
|
||||
if ($mb_password != $mb_password_re)
|
||||
alert('비밀번호가 일치하지 않습니다.');
|
||||
|
||||
$sql_password = "mb_password = '".get_encrypt_string($mb_password)."' ";
|
||||
|
||||
sql_query("update {$g5['member_table']} set {$sql_password} where mb_id = '{$mb_id}' AND mb_dupinfo = '{$mb_dupinfo}'");
|
||||
|
||||
set_session('ss_cert_mb_id', '');
|
||||
set_session('ss_cert_dupinfo', '');
|
||||
|
||||
goto_url(G5_BBS_URL.'/login.php');
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
if ($is_guest)
|
||||
alert_close('회원만 조회하실 수 있습니다.');
|
||||
|
||||
$g5['title'] = get_text($member['mb_nick']).' 님의 포인트 내역';
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
$list = array();
|
||||
|
||||
$sql_common = " from {$g5['point_table']} where mb_id = '".escape_trim($member['mb_id'])."' ";
|
||||
$sql_order = " order by po_id desc ";
|
||||
|
||||
$sql = " select count(*) as cnt {$sql_common} ";
|
||||
$row = sql_fetch($sql);
|
||||
$total_count = $row['cnt'];
|
||||
|
||||
$rows = $config['cf_page_rows'];
|
||||
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
|
||||
if ($page < 1) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
|
||||
$from_record = ($page - 1) * $rows; // 시작 열을 구함
|
||||
|
||||
$sql = " select *
|
||||
{$sql_common}
|
||||
{$sql_order}
|
||||
limit {$from_record}, {$rows} ";
|
||||
|
||||
$result = sql_query($sql);
|
||||
|
||||
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
$list[] = $row;
|
||||
}
|
||||
|
||||
include_once($member_skin_path.'/point.skin.php');
|
||||
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_LIB_PATH.'/mailer.lib.php');
|
||||
|
||||
if ($w == '')
|
||||
{
|
||||
$po_id = isset($_POST['po_id']) ? (int) $_POST['po_id'] : '';
|
||||
$pc_name = isset($_POST['pc_name']) ? clean_xss_tags($_POST['pc_name'], 1, 1) : '';
|
||||
$pc_idea = isset($_POST['pc_idea']) ? clean_xss_tags($_POST['pc_idea'], 1, 1) : '';
|
||||
|
||||
$po = sql_fetch(" select * from {$g5['poll_table']} where po_id = '{$po_id}' ");
|
||||
if (!$po['po_id'])
|
||||
alert('po_id 값이 제대로 넘어오지 않았습니다.');
|
||||
|
||||
$tmp_row = sql_fetch(" select max(pc_id) as max_pc_id from {$g5['poll_etc_table']} ");
|
||||
$pc_id = $tmp_row['max_pc_id'] + 1;
|
||||
|
||||
$sql = " insert into {$g5['poll_etc_table']}
|
||||
( pc_id, po_id, mb_id, pc_name, pc_idea, pc_datetime )
|
||||
values ( '{$pc_id}', '{$po_id}', '{$member['mb_id']}', '{$pc_name}', '{$pc_idea}', '".G5_TIME_YMDHIS."' ) ";
|
||||
sql_query($sql);
|
||||
|
||||
$pc_idea = stripslashes($pc_idea);
|
||||
|
||||
$name = get_text(cut_str($pc_name, $config['cf_cut_name']));
|
||||
$mb_id = '';
|
||||
if ($member['mb_id'])
|
||||
$mb_id = '('.$member['mb_id'].')';
|
||||
|
||||
// 환경설정의 투표 기타의견 작성시 최고관리자에게 메일발송 사용에 체크되어 있을 경우
|
||||
if ($config['cf_email_po_super_admin'])
|
||||
{
|
||||
$subject = $po['po_subject'];
|
||||
$content = $pc_idea;
|
||||
|
||||
ob_start();
|
||||
include_once ('./poll_etc_update_mail.php');
|
||||
$content = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
// 관리자에게 보내는 메일
|
||||
$admin = get_admin('super');
|
||||
$from_email = $member['mb_email'] ? $member['mb_email'] : $admin['mb_email'];
|
||||
mailer($name, $from_email, $admin['mb_email'], '['.$config['cf_title'].'] 설문조사 기타의견 메일', $content, 1);
|
||||
}
|
||||
}
|
||||
else if ($w == 'd')
|
||||
{
|
||||
if ($member['mb_id'] || $is_admin == 'super')
|
||||
{
|
||||
$sql = " delete from {$g5['poll_etc_table']} where pc_id = '{$pc_id}' ";
|
||||
if (!$is_admin)
|
||||
$sql .= " and mb_id = '{$member['mb_id']}' ";
|
||||
sql_query($sql);
|
||||
}
|
||||
}
|
||||
|
||||
goto_url('./poll_result.php?po_id='.$po_id.'&skin_dir='.$skin_dir);
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
// 설문조사 기타의견 입력시 관리자께 보내는 메일을 수정하고 싶으시다면 이 파일을 수정하십시오.
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
?>
|
||||
|
||||
<!doctype html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>설문조사 기타의견 메일</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div style="margin:30px auto;width:600px;border:10px solid #f7f7f7">
|
||||
<div style="border:1px solid #dedede">
|
||||
<h1 style="padding:30px 30px 0;background:#f7f7f7;color:#555;font-size:1.4em">
|
||||
<?php echo $subject ?>
|
||||
</h1>
|
||||
<span style="display:block;padding:10px 30px 30px;background:#f7f7f7;text-align:right">
|
||||
작성자 <?php echo $name ?> (<?php echo $mb_id ?>)
|
||||
</span>
|
||||
<p style="margin:20px 0 0;padding:30px 30px 50px;min-height:200px;height:auto !important;height:200px;border-bottom:1px solid #eee">
|
||||
<?php echo $content ?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,120 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
||||
|
||||
$po_id = isset($_REQUEST['po_id']) ? (int) $_REQUEST['po_id'] : '';
|
||||
|
||||
$po = sql_fetch(" select * from {$g5['poll_table']} where po_id = '{$po_id}' ");
|
||||
if (!$po['po_id'])
|
||||
alert('설문조사 정보가 없습니다.');
|
||||
|
||||
if ($member['mb_level'] < $po['po_level'])
|
||||
alert('권한 '.$po['po_level'].' 이상의 회원만 결과를 보실 수 있습니다.');
|
||||
|
||||
$g5['title'] = '설문조사 결과';
|
||||
|
||||
$po_subject = $po['po_subject'];
|
||||
|
||||
$max = 1;
|
||||
$total_po_cnt = 0;
|
||||
$poll_max_count = 9;
|
||||
|
||||
for ($i=1; $i<=$poll_max_count; $i++) {
|
||||
$poll = $po['po_poll'.$i];
|
||||
if (! $poll) break;
|
||||
|
||||
$count = $po['po_cnt'.$i];
|
||||
$total_po_cnt += $count;
|
||||
|
||||
if ($count > $max)
|
||||
$max = $count;
|
||||
}
|
||||
$nf_total_po_cnt = number_format($total_po_cnt);
|
||||
|
||||
$list = array();
|
||||
|
||||
for ($i=1; $i<=$poll_max_count; $i++) {
|
||||
$poll = $po['po_poll'.$i];
|
||||
if (! $poll) { break; }
|
||||
|
||||
$list[$i]['content'] = $poll;
|
||||
$list[$i]['cnt'] = $po['po_cnt'.$i];
|
||||
$list[$i]['rate'] = 0;
|
||||
|
||||
if ($total_po_cnt > 0)
|
||||
$list[$i]['rate'] = ($list[$i]['cnt'] / $total_po_cnt) * 100;
|
||||
|
||||
$bar = (int)($list[$i]['cnt'] / $max * 100);
|
||||
|
||||
$list[$i]['bar'] = $bar;
|
||||
$list[$i]['num'] = $i;
|
||||
}
|
||||
|
||||
$list2 = array();
|
||||
|
||||
// 기타의견 리스트
|
||||
$sql = " select a.*, b.mb_open
|
||||
from {$g5['poll_etc_table']} a
|
||||
left join {$g5['member_table']} b on (a.mb_id = b.mb_id)
|
||||
where po_id = '{$po_id}' order by pc_id desc ";
|
||||
$result = sql_query($sql);
|
||||
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
$list2[$i]['pc_name'] = get_text($row['pc_name']);
|
||||
$list2[$i]['name'] = get_sideview($row['mb_id'], get_text(cut_str($row['pc_name'],10)), '', '', $row['mb_open']);
|
||||
$list2[$i]['idea'] = get_text(cut_str($row['pc_idea'], 255));
|
||||
$list2[$i]['datetime'] = $row['pc_datetime'];
|
||||
|
||||
$list2[$i]['del'] = '';
|
||||
if ($is_admin == 'super' || ($row['mb_id'] == $member['mb_id'] && $row['mb_id']))
|
||||
$list2[$i]['del'] = '<a href="'.G5_BBS_URL.'/poll_etc_update.php?w=d&pc_id='.$row['pc_id'].'&po_id='.$po_id.'&skin_dir='.$skin_dir.'" class="poll_delete">';
|
||||
}
|
||||
|
||||
// 기타의견 입력
|
||||
$is_etc = false;
|
||||
if ($po['po_etc']) {
|
||||
$is_etc = true;
|
||||
$po_etc = $po['po_etc'];
|
||||
if ($member['mb_id'])
|
||||
$name = '<b>'.$member['mb_nick'].'</b> <input type="hidden" name="pc_name" value="'.$member['mb_nick'].'">';
|
||||
else
|
||||
$name = '<input type="text" name="pc_name" size="10" class="input" required>';
|
||||
}
|
||||
|
||||
$list3 = array();
|
||||
|
||||
// 다른투표
|
||||
$sql = " select po_id, po_subject, po_date from {$g5['poll_table']} order by po_id desc ";
|
||||
$result = sql_query($sql);
|
||||
for ($i=0; $row2=sql_fetch_array($result); $i++) {
|
||||
$list3[$i]['po_id'] = $row2['po_id'];
|
||||
$list3[$i]['date'] = substr($row2['po_date'],2,8);
|
||||
$list3[$i]['subject'] = cut_str($row2['po_subject'],60,"…");
|
||||
}
|
||||
|
||||
if(preg_match('#^theme/(.+)$#', $skin_dir, $match)) {
|
||||
if (G5_IS_MOBILE) {
|
||||
$poll_skin_path = G5_THEME_MOBILE_PATH.'/'.G5_SKIN_DIR.'/poll/'.$match[1];
|
||||
if(!is_dir($poll_skin_path))
|
||||
$poll_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/poll/'.$match[1];
|
||||
$poll_skin_url = str_replace(G5_PATH, G5_URL, $poll_skin_path);
|
||||
} else {
|
||||
$poll_skin_path = G5_THEME_PATH.'/'.G5_SKIN_DIR.'/poll/'.$match[1];
|
||||
$poll_skin_url = str_replace(G5_PATH, G5_URL, $poll_skin_path);
|
||||
}
|
||||
//$skin_dir = $match[1];
|
||||
} else {
|
||||
if (G5_IS_MOBILE) {
|
||||
$poll_skin_path = G5_MOBILE_PATH.'/'.G5_SKIN_DIR.'/poll/'.$skin_dir;
|
||||
$poll_skin_url = G5_MOBILE_URL.'/'.G5_SKIN_DIR.'/poll/'.$skin_dir;
|
||||
} else {
|
||||
$poll_skin_path = G5_SKIN_PATH.'/poll/'.$skin_dir;
|
||||
$poll_skin_url = G5_SKIN_URL.'/poll/'.$skin_dir;
|
||||
}
|
||||
}
|
||||
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
if (!file_exists($poll_skin_path.'/poll_result.skin.php')) die('skin error');
|
||||
include_once ($poll_skin_path.'/poll_result.skin.php');
|
||||
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$po_id = isset($_POST['po_id']) ? preg_replace('/[^0-9]/', '', $_POST['po_id']) : 0;
|
||||
|
||||
$po = sql_fetch(" select * from {$g5['poll_table']} where po_id = '$po_id' ");
|
||||
if (! (isset($po['po_id']) && $po['po_id']))
|
||||
alert('po_id 값이 제대로 넘어오지 않았습니다.');
|
||||
|
||||
if ($member['mb_level'] < $po['po_level'])
|
||||
alert_close('권한 '.$po['po_level'].' 이상 회원만 투표에 참여하실 수 있습니다.');
|
||||
|
||||
$gb_poll = isset($_POST['gb_poll']) ? preg_replace('/[^0-9]/', '', $_POST['gb_poll']) : 0;
|
||||
if(!$gb_poll)
|
||||
alert_close('항목을 선택하세요.');
|
||||
|
||||
$search_mb_id = false;
|
||||
$search_ip = false;
|
||||
|
||||
if($is_member) {
|
||||
// 투표했던 회원아이디들 중에서 찾아본다
|
||||
$ids = explode(',', trim($po['mb_ids']));
|
||||
for ($i=0; $i<count($ids); $i++) {
|
||||
if ($member['mb_id'] == trim($ids[$i])) {
|
||||
$search_mb_id = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 투표했던 ip들 중에서 찾아본다
|
||||
$ips = explode(',', trim($po['po_ips']));
|
||||
for ($i=0; $i<count($ips); $i++) {
|
||||
if ($_SERVER['REMOTE_ADDR'] == trim($ips[$i])) {
|
||||
$search_ip = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$post_skin_dir = isset($_POST['skin_dir']) ? clean_xss_tags($_POST['skin_dir'], 1, 1) : '';
|
||||
$result_url = G5_BBS_URL."/poll_result.php?po_id=$po_id&skin_dir={$post_skin_dir}";
|
||||
|
||||
// 없다면 선택한 투표항목을 1증가 시키고 ip, id를 저장
|
||||
if (!($search_ip || $search_mb_id)) {
|
||||
$po_ips = $po['po_ips'] . $_SERVER['REMOTE_ADDR'].",";
|
||||
$mb_ids = $po['mb_ids'];
|
||||
if ($is_member) { // 회원일 때는 id만 추가
|
||||
$mb_ids .= $member['mb_id'].',';
|
||||
$sql = " update {$g5['poll_table']} set po_cnt{$gb_poll} = po_cnt{$gb_poll} + 1, mb_ids = '$mb_ids' where po_id = '$po_id' ";
|
||||
} else {
|
||||
$sql = " update {$g5['poll_table']} set po_cnt{$gb_poll} = po_cnt{$gb_poll} + 1, po_ips = '$po_ips' where po_id = '$po_id' ";
|
||||
}
|
||||
|
||||
sql_query($sql);
|
||||
} else {
|
||||
alert(addcslashes($po['po_subject'], '"\\/').'에 이미 참여하셨습니다.', $result_url);
|
||||
}
|
||||
|
||||
if (!$search_mb_id)
|
||||
insert_point($member['mb_id'], $po['po_point'], $po['po_id'] . '. ' . cut_str($po['po_subject'],20) . ' 투표 참여 ', '@poll', $po['po_id'], '투표');
|
||||
|
||||
//goto_url($g5['bbs_url'].'/poll_result.php?po_id='.$po_id.'&skin_dir='.$skin_dir);
|
||||
goto_url($result_url);
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
if (!$member['mb_id'])
|
||||
alert_close('회원만 이용하실 수 있습니다.');
|
||||
|
||||
if (!$member['mb_open'] && $is_admin != 'super' && $member['mb_id'] != $mb_id)
|
||||
alert_close('자신의 정보를 공개하지 않으면 다른분의 정보를 조회할 수 없습니다.\\n\\n정보공개 설정은 회원정보수정에서 하실 수 있습니다.');
|
||||
|
||||
$mb_id = isset($mb_id) ? $mb_id : '';
|
||||
|
||||
$mb = get_member($mb_id);
|
||||
|
||||
if (!$mb['mb_id'])
|
||||
alert_close('회원정보가 존재하지 않습니다.\\n\\n탈퇴하였을 수 있습니다.');
|
||||
|
||||
if (!$mb['mb_open'] && $is_admin != 'super' && $member['mb_id'] != $mb_id)
|
||||
alert_close('정보공개를 하지 않았습니다.');
|
||||
|
||||
$g5['title'] = $mb['mb_nick'].'님의 자기소개';
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
$mb_nick = get_sideview($mb['mb_id'], get_text($mb['mb_nick']), $mb['mb_email'], $mb['mb_homepage'], $mb['mb_open']);
|
||||
|
||||
// 회원가입후 몇일째인지? + 1 은 당일을 포함한다는 뜻
|
||||
$sql = " select (TO_DAYS('".G5_TIME_YMDHIS."') - TO_DAYS('{$mb['mb_datetime']}') + 1) as days ";
|
||||
$row = sql_fetch($sql);
|
||||
$mb_reg_after = $row['days'];
|
||||
|
||||
$mb_homepage = set_http(get_text(clean_xss_tags($mb['mb_homepage'])));
|
||||
$mb_profile = $mb['mb_profile'] ? conv_content($mb['mb_profile'],0) : '소개 내용이 없습니다.';
|
||||
|
||||
include_once($member_skin_path.'/profile.skin.php');
|
||||
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
if($is_guest)
|
||||
alert('회원이시라면 로그인 후 이용해 주십시오.', G5_URL);
|
||||
|
||||
$token = isset($_REQUEST['token']) ? clean_xss_tags($_REQUEST['token'], 1, 1) : '';
|
||||
$qa_id = isset($_REQUEST['qa_id']) ? (int) $_REQUEST['qa_id'] : 0;
|
||||
|
||||
$delete_token = get_session('ss_qa_delete_token');
|
||||
set_session('ss_qa_delete_token', '');
|
||||
|
||||
//모든 회원의 토큰을 검사합니다.
|
||||
if (!($token && $delete_token === $token))
|
||||
alert('토큰 에러로 삭제 불가합니다.');
|
||||
|
||||
$tmp_array = array();
|
||||
$deleted = array();
|
||||
if ($qa_id) // 건별삭제
|
||||
$tmp_array[0] = $qa_id;
|
||||
else // 일괄삭제
|
||||
$tmp_array = (isset($_POST['chk_qa_id']) && is_array($_POST['chk_qa_id'])) ? $_POST['chk_qa_id'] : array();
|
||||
|
||||
$count = count($tmp_array);
|
||||
if(!$count)
|
||||
alert('삭제할 게시글을 하나이상 선택해 주십시오.');
|
||||
|
||||
for($i=0; $i<$count; $i++) {
|
||||
$qa_id = (int) $tmp_array[$i];
|
||||
|
||||
$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);
|
||||
|
||||
if(!$row['qa_id'])
|
||||
continue;
|
||||
|
||||
// 자신의 글이 아니면 건너뜀
|
||||
if($is_admin != 'super' && $row['mb_id'] !== $member['mb_id'])
|
||||
continue;
|
||||
|
||||
// 답변이 달린 글은 삭제못함
|
||||
if($is_admin != 'super' && !$row['qa_type'] && $row['qa_status'])
|
||||
continue;
|
||||
|
||||
// 첨부파일 삭제
|
||||
for($k=1; $k<=2; $k++) {
|
||||
@unlink(G5_DATA_PATH.'/qa/'.clean_relative_paths($row['qa_file'.$k]));
|
||||
// 썸네일삭제
|
||||
if(preg_match("/\.({$config['cf_image_extension']})$/i", $row['qa_file'.$k])) {
|
||||
delete_qa_thumbnail($row['qa_file'.$k]);
|
||||
}
|
||||
}
|
||||
|
||||
// 에디터 썸네일 삭제
|
||||
delete_editor_thumbnail($row['qa_content']);
|
||||
|
||||
// 답변이 있는 질문글이라면 답변글 삭제
|
||||
if (!$row['qa_type'] && $row['qa_status']) {
|
||||
$answer = sql_fetch(" SELECT qa_id, qa_content, qa_file1, qa_file2 from {$g5['qa_content_table']} where qa_type = 1 AND qa_parent = {$qa_id} ");
|
||||
// 첨부파일 삭제
|
||||
for ($k = 1; $k <= 2; $k++) {
|
||||
@unlink(G5_DATA_PATH . '/qa/' . clean_relative_paths($answer['qa_file' . $k]));
|
||||
// 썸네일삭제
|
||||
if (preg_match("/\.({$config['cf_image_extension']})$/i", $answer['qa_file' . $k])) {
|
||||
delete_qa_thumbnail($answer['qa_file' . $k]);
|
||||
}
|
||||
}
|
||||
|
||||
// 에디터 썸네일 삭제
|
||||
delete_editor_thumbnail($answer['qa_content']);
|
||||
|
||||
// 답변글 삭제
|
||||
sql_query(" DELETE from {$g5['qa_content_table']} where qa_type = 1 and qa_parent = {$qa_id} ");
|
||||
$deleted[] = (int) $answer['qa_id'];
|
||||
}
|
||||
|
||||
// 답변글 삭제시 질문글의 상태변경
|
||||
if($row['qa_type']) {
|
||||
sql_query(" update {$g5['qa_content_table']} set qa_status = '0' where qa_id = '{$row['qa_parent']}' ");
|
||||
}
|
||||
|
||||
// 글삭제
|
||||
sql_query(" delete from {$g5['qa_content_table']} where qa_id = '$qa_id' ");
|
||||
$deleted[] = $qa_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* QA 글 삭제 후 Event Hook
|
||||
* @var array $tmp_array 삭제 요청된 qa_id 목록. 소유자 확인, 답변글 존재 여부 등의 이유로 실제로 삭제처리가 안 된 ID가 포함될 수 있으며, 삭제처리 되었더라도 답변글은 이 목록에 포함되지 않음
|
||||
* @var array $deleted 답변글을 포함한 삭제가 완료된 qa_id 목록
|
||||
*/
|
||||
run_event('qa_delete', $tmp_array, $deleted);
|
||||
|
||||
goto_url(G5_BBS_URL.'/qalist.php'.preg_replace('/^&/', '?', $qstr));
|
||||
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
// clean the output buffer
|
||||
ob_end_clean();
|
||||
|
||||
$no = isset($_REQUEST['no']) ? (int) $_REQUEST['no'] : 0;
|
||||
|
||||
// 쿠키에 저장된 ID값과 넘어온 ID값을 비교하여 같지 않을 경우 오류 발생
|
||||
// 다른곳에서 링크 거는것을 방지하기 위한 코드
|
||||
if (!get_session('ss_qa_view_'.$qa_id))
|
||||
alert('잘못된 접근입니다.');
|
||||
|
||||
$sql = " select qa_subject, qa_file{$no}, qa_source{$no} from {$g5['qa_content_table']} where qa_id = '$qa_id' ";
|
||||
$file = sql_fetch($sql);
|
||||
if (!$file['qa_file'.$no])
|
||||
alert_close('파일 정보가 존재하지 않습니다.');
|
||||
|
||||
if($is_guest) {
|
||||
alert('다운로드 권한이 없습니다.\\n회원이시라면 로그인 후 이용해 보십시오.', G5_BBS_URL.'/login.php?url='.urlencode(G5_BBS_URL.'/qaview.php?qa_id='.$qa_id));
|
||||
}
|
||||
|
||||
$filepath = G5_DATA_PATH.'/qa/'.$file['qa_file'.$no];
|
||||
$filepath = addslashes($filepath);
|
||||
$file_exist_check = (!is_file($filepath) || !file_exists($filepath)) ? false : true;
|
||||
|
||||
if ( false === run_replace('qa_download_file_exist_check', $file_exist_check, $file) ){
|
||||
alert('파일이 존재하지 않습니다.');
|
||||
}
|
||||
|
||||
$g5['title'] = '다운로드 > '.conv_subject($file['qa_subject'], 255);
|
||||
|
||||
run_event('qa_download_file_header', $file, $file_exist_check);
|
||||
|
||||
$original = urlencode($file['qa_source'.$no]);
|
||||
|
||||
if(preg_match("/msie/i", $_SERVER['HTTP_USER_AGENT']) && preg_match("/5\.5/", $_SERVER['HTTP_USER_AGENT'])) {
|
||||
header("content-type: doesn/matter");
|
||||
header("content-length: ".filesize($filepath));
|
||||
header("content-disposition: attachment; filename=\"$original\"");
|
||||
header("content-transfer-encoding: binary");
|
||||
} else {
|
||||
header("content-type: file/unknown");
|
||||
header("content-length: ".filesize($filepath));
|
||||
header("content-disposition: attachment; filename=\"$original\"");
|
||||
header("content-description: php generated data");
|
||||
}
|
||||
header("pragma: no-cache");
|
||||
header("expires: 0");
|
||||
flush();
|
||||
|
||||
$fp = fopen($filepath, 'rb');
|
||||
|
||||
// 4.00 대체
|
||||
// 서버부하를 줄이려면 print 나 echo 또는 while 문을 이용한 방법보다는 이방법이...
|
||||
//if (!fpassthru($fp)) {
|
||||
// fclose($fp);
|
||||
//}
|
||||
|
||||
$download_rate = 10;
|
||||
|
||||
while(!feof($fp)) {
|
||||
//echo fread($fp, 100*1024);
|
||||
/*
|
||||
echo fread($fp, 100*1024);
|
||||
flush();
|
||||
*/
|
||||
|
||||
print fread($fp, round($download_rate * 1024));
|
||||
flush();
|
||||
usleep(1000);
|
||||
}
|
||||
fclose ($fp);
|
||||
flush();
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
$qa_skin_path = get_skin_path('qa', (G5_IS_MOBILE ? $qaconfig['qa_mobile_skin'] : $qaconfig['qa_skin']));
|
||||
$qa_skin_url = get_skin_url('qa', (G5_IS_MOBILE ? $qaconfig['qa_mobile_skin'] : $qaconfig['qa_skin']));
|
||||
|
||||
if (G5_IS_MOBILE) {
|
||||
// 모바일의 경우 설정을 따르지 않는다.
|
||||
include_once('./_head.php');
|
||||
echo run_replace('qa_mobile_content_head', conv_content($qaconfig['qa_mobile_content_head'], 1), $qaconfig);
|
||||
} else {
|
||||
if($qaconfig['qa_include_head'] && is_include_path_check($qaconfig['qa_include_head']))
|
||||
@include ($qaconfig['qa_include_head']);
|
||||
else
|
||||
include ('./_head.php');
|
||||
echo run_replace('qa_content_head', conv_content($qaconfig['qa_content_head'], 1), $qaconfig);
|
||||
}
|
||||
+149
@@ -0,0 +1,149 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
if($is_guest)
|
||||
alert('회원이시라면 로그인 후 이용해 보십시오.', './login.php?url='.urlencode(G5_BBS_URL.'/qalist.php'));
|
||||
|
||||
$qaconfig = get_qa_config();
|
||||
|
||||
$token = '';
|
||||
if( $is_admin ){
|
||||
$token = _token();
|
||||
set_session('ss_qa_delete_token', $token);
|
||||
}
|
||||
|
||||
$g5['title'] = $qaconfig['qa_title'];
|
||||
include_once('./qahead.php');
|
||||
|
||||
$skin_file = $qa_skin_path.'/list.skin.php';
|
||||
$is_auth = $is_admin ? true : false;
|
||||
|
||||
$category_option = '';
|
||||
|
||||
if ($qaconfig['qa_category']) {
|
||||
$category_href = G5_BBS_URL.'/qalist.php';
|
||||
|
||||
$category_option .= '<li><a href="'.$category_href.'"';
|
||||
if ($sca=='')
|
||||
$category_option .= ' id="bo_cate_on"';
|
||||
$category_option .= '>전체</a></li>';
|
||||
|
||||
$categories = explode('|', $qaconfig['qa_category']); // 구분자가 | 로 되어 있음
|
||||
for ($i=0; $i<count($categories); $i++) {
|
||||
$category = trim($categories[$i]);
|
||||
if ($category=='') continue;
|
||||
$category_msg = '';
|
||||
$category_option .= '<li><a href="'.($category_href."?sca=".urlencode($category)).'"';
|
||||
if ($category==$sca) { // 현재 선택된 카테고리라면
|
||||
$category_option .= ' id="bo_cate_on"';
|
||||
$category_msg = '<span class="sound_only">열린 분류 </span>';
|
||||
}
|
||||
$category_option .= '>'.$category_msg.$category.'</a></li>';
|
||||
}
|
||||
}
|
||||
|
||||
if(is_file($skin_file)) {
|
||||
$sql_common = " from {$g5['qa_content_table']} ";
|
||||
$sql_search = " where qa_type = '0' ";
|
||||
|
||||
if(!$is_admin)
|
||||
$sql_search .= " and mb_id = '{$member['mb_id']}' ";
|
||||
|
||||
if($sca) {
|
||||
if (preg_match("/[a-zA-Z]/", $sca))
|
||||
$sql_search .= " and INSTR(LOWER(qa_category), LOWER('$sca')) > 0 ";
|
||||
else
|
||||
$sql_search .= " and INSTR(qa_category, '$sca') > 0 ";
|
||||
}
|
||||
|
||||
$stx = trim($stx);
|
||||
if($stx) {
|
||||
$sfl = trim($sfl);
|
||||
if ($sfl) {
|
||||
switch ($sfl) {
|
||||
case "qa_subject" :
|
||||
case "qa_content" :
|
||||
case "qa_name" :
|
||||
case "mb_id" :
|
||||
break;
|
||||
default :
|
||||
$sfl = "qa_subject";
|
||||
}
|
||||
} else {
|
||||
$sfl = "qa_subject";
|
||||
}
|
||||
$sql_search .= " and (`{$sfl}` like '%{$stx}%') ";
|
||||
}
|
||||
// $stx = trim($stx);
|
||||
// if($stx) {
|
||||
// if (preg_match("/[a-zA-Z]/", $stx))
|
||||
// $sql_search .= " and ( INSTR(LOWER(qa_subject), LOWER('$stx')) > 0 or INSTR(LOWER(qa_content), LOWER('$stx')) > 0 )";
|
||||
// else
|
||||
// $sql_search .= " and ( INSTR(qa_subject, '$stx') > 0 or INSTR(qa_content, '$stx') > 0 ) ";
|
||||
// }
|
||||
|
||||
$sql_order = " order by qa_num ";
|
||||
|
||||
$sql = " select count(*) as cnt
|
||||
$sql_common
|
||||
$sql_search ";
|
||||
$row = sql_fetch($sql);
|
||||
$total_count = $row['cnt'];
|
||||
|
||||
$page_rows = G5_IS_MOBILE ? $qaconfig['qa_mobile_page_rows'] : $qaconfig['qa_page_rows'];
|
||||
$total_page = ceil($total_count / $page_rows); // 전체 페이지 계산
|
||||
if ($page < 1) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
|
||||
$from_record = ($page - 1) * $page_rows; // 시작 열을 구함
|
||||
|
||||
$sql = " select *
|
||||
$sql_common
|
||||
$sql_search
|
||||
$sql_order
|
||||
limit $from_record, $page_rows ";
|
||||
$result = sql_query($sql);
|
||||
|
||||
$list = array();
|
||||
$num = $total_count - ($page - 1) * $page_rows;
|
||||
$subject_len = G5_IS_MOBILE ? $qaconfig['qa_mobile_subject_len'] : $qaconfig['qa_subject_len'];
|
||||
for($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
$list[$i] = $row;
|
||||
|
||||
$list[$i]['category'] = get_text($row['qa_category']);
|
||||
$list[$i]['subject'] = conv_subject($row['qa_subject'], $subject_len, '…');
|
||||
if ($stx) {
|
||||
$list[$i]['subject'] = search_font($stx, $list[$i]['subject']);
|
||||
}
|
||||
|
||||
$list[$i]['view_href'] = G5_BBS_URL.'/qaview.php?qa_id='.$row['qa_id'].$qstr;
|
||||
|
||||
$list[$i]['icon_file'] = '';
|
||||
if(trim($row['qa_file1']) || trim($row['qa_file2']))
|
||||
$list[$i]['icon_file'] = '<img src="'.$qa_skin_url.'/img/icon_file.gif">';
|
||||
|
||||
$list[$i]['name'] = get_text($row['qa_name']);
|
||||
// 사이드뷰 적용시
|
||||
//$list[$i]['name'] = get_sideview($row['mb_id'], $row['qa_name']);
|
||||
$list[$i]['date'] = substr($row['qa_datetime'], 2, 8);
|
||||
|
||||
$list[$i]['num'] = $num - $i;
|
||||
}
|
||||
|
||||
$is_checkbox = false;
|
||||
$admin_href = '';
|
||||
if($is_admin) {
|
||||
$is_checkbox = true;
|
||||
$admin_href = G5_ADMIN_URL.'/qa_config.php';
|
||||
}
|
||||
|
||||
$list_href = G5_BBS_URL.'/qalist.php';
|
||||
$write_href = G5_BBS_URL.'/qawrite.php';
|
||||
|
||||
$list_pages = preg_replace('/(\.php)(&|&)/i', '$1?', get_paging(G5_IS_MOBILE ? $config['cf_mobile_pages'] : $config['cf_write_pages'], $page, $total_page, './qalist.php'.$qstr.'&page='));
|
||||
|
||||
$stx = get_text(stripslashes($stx));
|
||||
include_once($skin_file);
|
||||
} else {
|
||||
echo '<div>'.str_replace(G5_PATH.'/', '', $skin_file).'이 존재하지 않습니다.</div>';
|
||||
}
|
||||
|
||||
include_once('./qatail.php');
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
if (G5_IS_MOBILE) {
|
||||
echo run_replace('qa_mobile_content_tail', conv_content($qaconfig['qa_mobile_content_tail'], 1), $qaconfig);
|
||||
// 모바일의 경우 설정을 따르지 않는다.
|
||||
include_once('./_tail.php');
|
||||
} else {
|
||||
echo run_replace('qa_content_tail', conv_content($qaconfig['qa_content_tail'], 1), $qaconfig);
|
||||
if($qaconfig['qa_include_tail'] && is_include_path_check($qaconfig['qa_include_tail']))
|
||||
@include ($qaconfig['qa_include_tail']);
|
||||
else
|
||||
include ('./_tail.php');
|
||||
}
|
||||
+219
@@ -0,0 +1,219 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_EDITOR_LIB);
|
||||
|
||||
$qa_id = isset($_REQUEST['qa_id']) ? (int) $_REQUEST['qa_id'] : 0;
|
||||
|
||||
if($is_guest)
|
||||
alert('회원이시라면 로그인 후 이용해 보십시오.', './login.php?url='.urlencode(G5_BBS_URL.'/qaview.php?qa_id='.$qa_id));
|
||||
|
||||
$qaconfig = get_qa_config();
|
||||
$content = '';
|
||||
|
||||
$token = _token();
|
||||
set_session('ss_qa_delete_token', $token);
|
||||
set_session('ss_qa_write_token', $token);
|
||||
|
||||
$g5['title'] = $qaconfig['qa_title'];
|
||||
include_once('./qahead.php');
|
||||
|
||||
$skin_file = $qa_skin_path.'/view.skin.php';
|
||||
|
||||
if(is_file($skin_file)) {
|
||||
$sql = " select * from {$g5['qa_content_table']} where qa_id = '$qa_id' ";
|
||||
if(!$is_admin) {
|
||||
$sql .= " and mb_id = '{$member['mb_id']}' ";
|
||||
}
|
||||
|
||||
$view = sql_fetch($sql);
|
||||
|
||||
if(!(isset($view['qa_id']) && $view['qa_id']))
|
||||
alert('게시글이 존재하지 않습니다.\\n삭제되었거나 자신의 글이 아닌 경우입니다.');
|
||||
|
||||
$subject_len = G5_IS_MOBILE ? $qaconfig['qa_mobile_subject_len'] : $qaconfig['qa_subject_len'];
|
||||
|
||||
$view['category'] = get_text($view['qa_category']);
|
||||
$view['subject'] = conv_subject($view['qa_subject'], $subject_len, '…');
|
||||
$view['content'] = conv_content($view['qa_content'], $view['qa_html']);
|
||||
$view['name'] = get_text($view['qa_name']);
|
||||
$view['datetime'] = $view['qa_datetime'];
|
||||
$view['email'] = get_text(get_email_address($view['qa_email']));
|
||||
$view['hp'] = $view['qa_hp'];
|
||||
|
||||
if (trim($stx))
|
||||
$view['subject'] = search_font($stx, $view['subject']);
|
||||
|
||||
if (trim($stx))
|
||||
$view['content'] = search_font($stx, $view['content']);
|
||||
|
||||
// 이전글, 다음글
|
||||
$sql = " select qa_id, qa_subject
|
||||
from {$g5['qa_content_table']}
|
||||
where qa_type = '0' ";
|
||||
if(!$is_admin) {
|
||||
$sql .= " and mb_id = '{$member['mb_id']}' ";
|
||||
}
|
||||
|
||||
// 이전글
|
||||
$prev_search = " and qa_num < '{$view['qa_num']}' order by qa_num desc limit 1 ";
|
||||
$prev = sql_fetch($sql.$prev_search);
|
||||
|
||||
$prev_href = '';
|
||||
if (isset($prev['qa_id']) && $prev['qa_id']) {
|
||||
$prev_qa_subject = get_text(cut_str($prev['qa_subject'], 255));
|
||||
$prev_href = G5_BBS_URL.'/qaview.php?qa_id='.$prev['qa_id'].$qstr;
|
||||
}
|
||||
|
||||
// 다음글
|
||||
$next_search = " and qa_num > '{$view['qa_num']}' order by qa_num asc limit 1 ";
|
||||
$next = sql_fetch($sql.$next_search);
|
||||
|
||||
$next_href = '';
|
||||
if (isset($next['qa_id']) && $next['qa_id']) {
|
||||
$next_qa_subject = get_text(cut_str($next['qa_subject'], 255));
|
||||
$next_href = G5_BBS_URL.'/qaview.php?qa_id='.$next['qa_id'].$qstr;
|
||||
}
|
||||
|
||||
|
||||
// 관련질문
|
||||
$rows = 10;
|
||||
$sql = " select *
|
||||
from {$g5['qa_content_table']}
|
||||
where qa_id <> '$qa_id'
|
||||
and qa_related = '{$view['qa_related']}'
|
||||
and qa_type = '0'
|
||||
order by qa_num, qa_type
|
||||
limit 0, $rows ";
|
||||
$result = sql_query($sql);
|
||||
|
||||
$rel_list = array();
|
||||
$rel_count = 0;
|
||||
for($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
$rel_list[$i] = $row;
|
||||
$rel_list[$i]['category'] = get_text($row['qa_category']);
|
||||
$rel_list[$i]['subject'] = conv_subject($row['qa_subject'], $subject_len, '…');
|
||||
$rel_list[$i]['name'] = get_text($row['qa_name']);
|
||||
$rel_list[$i]['date'] = substr($row['qa_datetime'], 2, 8);
|
||||
$rel_list[$i]['view_href'] = G5_BBS_URL.'/qaview.php?qa_id='.$row['qa_id'].$qstr;
|
||||
$rel_count++;
|
||||
}
|
||||
$view['rel_count'] = $rel_count;
|
||||
|
||||
$update_href = '';
|
||||
$delete_href = '';
|
||||
$write_href = G5_BBS_URL.'/qawrite.php';
|
||||
$rewrite_href = G5_BBS_URL.'/qawrite.php?w=r&qa_id='.$view['qa_id'];
|
||||
$list_href = G5_BBS_URL.'/qalist.php'.preg_replace('/^&/', '?', $qstr);
|
||||
|
||||
/*
|
||||
if($view['qa_type']) {
|
||||
if($is_admin)
|
||||
$update_href = G5_BBS_URL.'/qawrite.php?w=u&qa_id='.$view['qa_id'].$qstr;
|
||||
} else {
|
||||
if($view['qa_status'] == 0)
|
||||
$update_href = G5_BBS_URL.'/qawrite.php?w=u&qa_id='.$view['qa_id'].$qstr;
|
||||
}
|
||||
*/
|
||||
|
||||
if(($view['qa_type'] && $is_admin) || (!$view['qa_type'] && $view['qa_status'] == 0)) {
|
||||
$update_href = G5_BBS_URL.'/qawrite.php?w=u&qa_id='.$view['qa_id'].$qstr;
|
||||
$delete_href = G5_BBS_URL.'/qadelete.php?qa_id='.$view['qa_id'].'&token='.$token.$qstr;
|
||||
}
|
||||
|
||||
// 질문글이고 등록된 답변이 있다면
|
||||
$answer = array();
|
||||
$answer_update_href = '';
|
||||
$answer_delete_href = '';
|
||||
if(!$view['qa_type'] && $view['qa_status']) {
|
||||
$sql = " select *
|
||||
from {$g5['qa_content_table']}
|
||||
where qa_type = '1'
|
||||
and qa_parent = '{$view['qa_id']}' ";
|
||||
$answer = sql_fetch($sql);
|
||||
|
||||
if($is_admin) {
|
||||
$answer_update_href = G5_BBS_URL.'/qawrite.php?w=u&qa_id='.$answer['qa_id'].$qstr;
|
||||
$answer_delete_href = G5_BBS_URL.'/qadelete.php?qa_id='.$answer['qa_id'].'&token='.$token.$qstr;
|
||||
}
|
||||
|
||||
$ss_name = 'ss_qa_view_'.$answer['qa_id'];
|
||||
if(!get_session($ss_name))
|
||||
set_session($ss_name, TRUE);
|
||||
|
||||
// 답변 첨부파일
|
||||
$answer['img_file'] = array();
|
||||
$answer['download_href'] = array();
|
||||
$answer['download_source'] = array();
|
||||
$answer['img_count'] = 0;
|
||||
$answer['download_count'] = 0;
|
||||
|
||||
for ($i=1; $i<=2; $i++) {
|
||||
if(preg_match("/\.({$config['cf_image_extension']})$/i", $answer['qa_file'.$i])) {
|
||||
$attr_href = run_replace('thumb_view_image_href', G5_BBS_URL.'/view_image.php?fn='.urlencode('/'.G5_DATA_DIR.'/qa/'.$answer['qa_file'.$i]), '/'.G5_DATA_DIR.'/qa/'.$answer['qa_file'.$i], '', '', '', '');
|
||||
$answer['img_file'][] = '<a href="'.$attr_href.'" target="_blank" class="view_image"><img src="'.G5_DATA_URL.'/qa/'.$answer['qa_file'.$i].'"></a>';
|
||||
$answer['img_count']++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($answer['qa_file'.$i]) {
|
||||
$answer['download_href'][] = G5_BBS_URL.'/qadownload.php?qa_id='.$answer['qa_id'].'&no='.$i;
|
||||
$answer['download_source'][] = $answer['qa_source'.$i];
|
||||
$answer['download_count']++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$stx = get_text(stripslashes($stx));
|
||||
|
||||
$is_dhtml_editor = false;
|
||||
// 모바일에서는 DHTML 에디터 사용불가
|
||||
if ($config['cf_editor'] && $qaconfig['qa_use_editor'] && !G5_IS_MOBILE) {
|
||||
$is_dhtml_editor = true;
|
||||
}
|
||||
$editor_html = editor_html('qa_content', $content, $is_dhtml_editor);
|
||||
$editor_js = '';
|
||||
$editor_js .= get_editor_js('qa_content', $is_dhtml_editor);
|
||||
$editor_js .= chk_editor_js('qa_content', $is_dhtml_editor);
|
||||
|
||||
$ss_name = 'ss_qa_view_'.$qa_id;
|
||||
if(!get_session($ss_name))
|
||||
set_session($ss_name, TRUE);
|
||||
|
||||
// 첨부파일
|
||||
$view['img_file'] = array();
|
||||
$view['download_href'] = array();
|
||||
$view['download_source'] = array();
|
||||
$view['img_count'] = 0;
|
||||
$view['download_count'] = 0;
|
||||
|
||||
for ($i=1; $i<=2; $i++) {
|
||||
if(preg_match("/\.({$config['cf_image_extension']})$/i", $view['qa_file'.$i])) {
|
||||
$attr_href = run_replace('thumb_view_image_href', G5_BBS_URL.'/view_image.php?fn='.urlencode('/'.G5_DATA_DIR.'/qa/'.$view['qa_file'.$i]), '/'.G5_DATA_DIR.'/qa/'.$view['qa_file'.$i], '', '', '', '');
|
||||
$view['img_file'][] = '<a href="'.$attr_href.'" target="_blank" class="view_image"><img src="'.G5_DATA_URL.'/qa/'.$view['qa_file'.$i].'"></a>';
|
||||
$view['img_count']++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($view['qa_file'.$i]) {
|
||||
$view['download_href'][] = G5_BBS_URL.'/qadownload.php?qa_id='.$view['qa_id'].'&no='.$i;
|
||||
$view['download_source'][] = $view['qa_source'.$i];
|
||||
$view['download_count']++;
|
||||
}
|
||||
}
|
||||
|
||||
$html_value = '';
|
||||
$html_checked = '';
|
||||
if (isset($view['qa_html']) && $view['qa_html']) {
|
||||
$html_checked = 'checked';
|
||||
$html_value = $view['qa_html'];
|
||||
|
||||
if($view['qa_html'] == 1 && !$is_dhtml_editor)
|
||||
$html_value = 2;
|
||||
}
|
||||
|
||||
include_once($skin_file);
|
||||
} else {
|
||||
echo '<div>'.str_replace(G5_PATH.'/', '', $skin_file).'이 존재하지 않습니다.</div>';
|
||||
}
|
||||
|
||||
include_once('./qatail.php');
|
||||
+147
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_EDITOR_LIB);
|
||||
|
||||
if($w != '' && $w != 'u' && $w != 'r') {
|
||||
alert('올바른 방법으로 이용해 주십시오.');
|
||||
}
|
||||
|
||||
$qa_id = isset($_REQUEST['qa_id']) ? (int) $_REQUEST['qa_id'] : 0;
|
||||
$write = array('qa_email_recv'=>'', 'qa_subject'=>'', 'qa_category'=>'');
|
||||
|
||||
if($is_guest)
|
||||
alert('회원이시라면 로그인 후 이용해 보십시오.', './login.php?url='.urlencode(G5_BBS_URL.'/qalist.php'));
|
||||
|
||||
$qaconfig = get_qa_config();
|
||||
$token = _token();
|
||||
set_session('ss_qa_write_token', $token);
|
||||
|
||||
$g5['title'] = $qaconfig['qa_title'];
|
||||
include_once('./qahead.php');
|
||||
|
||||
$skin_file = $qa_skin_path.'/write.skin.php';
|
||||
|
||||
if(is_file($skin_file)) {
|
||||
/*==========================
|
||||
$w == a : 답변
|
||||
$w == r : 추가질문
|
||||
$w == u : 수정
|
||||
==========================*/
|
||||
|
||||
if($w == 'u' || $w == 'r') {
|
||||
$sql = " select * from {$g5['qa_content_table']} where qa_id = '$qa_id' ";
|
||||
if(!$is_admin) {
|
||||
$sql .= " and mb_id = '{$member['mb_id']}' ";
|
||||
}
|
||||
|
||||
$write = sql_fetch($sql);
|
||||
|
||||
if($w == 'u') {
|
||||
if(!$write['qa_id'])
|
||||
alert('게시글이 존재하지 않습니다.\\n삭제되었거나 자신의 글이 아닌 경우입니다.');
|
||||
|
||||
if(!$is_admin) {
|
||||
if($write['qa_type'] == 0 && $write['qa_status'] == 1)
|
||||
alert('답변이 등록된 문의글은 수정할 수 없습니다.');
|
||||
|
||||
if($write['mb_id'] != $member['mb_id'])
|
||||
alert('게시글을 수정할 권한이 없습니다.\\n\\n올바른 방법으로 이용해 주십시오.', G5_URL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 분류
|
||||
$category_option = '';
|
||||
if(trim($qaconfig['qa_category'])) {
|
||||
$category = explode('|', $qaconfig['qa_category']);
|
||||
for($i=0; $i<count($category); $i++) {
|
||||
$category_option .= option_selected($category[$i], $write['qa_category']);
|
||||
}
|
||||
} else {
|
||||
alert('1:1문의 설정에서 분류를 설정해 주십시오');
|
||||
}
|
||||
|
||||
$is_dhtml_editor = false;
|
||||
if ($config['cf_editor'] && $qaconfig['qa_use_editor'] && (!is_mobile() || defined('G5_IS_MOBILE_DHTML_USE') && G5_IS_MOBILE_DHTML_USE)) {
|
||||
$is_dhtml_editor = true;
|
||||
}
|
||||
|
||||
// 추가질문에서는 제목을 공백으로
|
||||
if($w == 'r')
|
||||
$write['qa_subject'] = '';
|
||||
|
||||
$content = '';
|
||||
if ($w == '') {
|
||||
$content = html_purifier($qaconfig['qa_insert_content']);
|
||||
} else if($w == 'r') {
|
||||
if($is_dhtml_editor)
|
||||
$content = '<div><br><br><br>====== 이전 질문내용 =======<br></div>';
|
||||
else
|
||||
$content = "\n\n\n\n====== 이전 질문내용 =======\n";
|
||||
|
||||
// KISA 취약점 권고사항 Stored XSS (210624)
|
||||
$content .= get_text(html_purifier($write['qa_content']), 0);
|
||||
} else {
|
||||
//$content = get_text($write['qa_content'], 0);
|
||||
|
||||
// KISA 취약점 권고사항 Stored XSS
|
||||
$content = get_text(html_purifier($write['qa_content']), 0);
|
||||
}
|
||||
|
||||
$editor_html = editor_html('qa_content', $content, $is_dhtml_editor);
|
||||
$editor_js = '';
|
||||
$editor_js .= get_editor_js('qa_content', $is_dhtml_editor);
|
||||
$editor_js .= chk_editor_js('qa_content', $is_dhtml_editor);
|
||||
|
||||
$upload_max_filesize = number_format($qaconfig['qa_upload_size']) . ' 바이트';
|
||||
|
||||
$html_value = '';
|
||||
$html_checked = '';
|
||||
if (isset($write['qa_html']) && $write['qa_html']) {
|
||||
$html_checked = 'checked';
|
||||
$html_value = $write['qa_html'];
|
||||
|
||||
if($w == 'r' && $write['qa_html'] == 1 && !$is_dhtml_editor)
|
||||
$html_value = 2;
|
||||
}
|
||||
|
||||
$is_email = false;
|
||||
$req_email = '';
|
||||
if($qaconfig['qa_use_email']) {
|
||||
$is_email = true;
|
||||
|
||||
if($qaconfig['qa_req_email'])
|
||||
$req_email = 'required';
|
||||
|
||||
if($w == '' || $w == 'r')
|
||||
$write['qa_email'] = $member['mb_email'];
|
||||
|
||||
if($w == 'u' && $is_admin && $write['qa_type'])
|
||||
$is_email = false;
|
||||
}
|
||||
|
||||
$is_hp = false;
|
||||
$req_hp = '';
|
||||
if($qaconfig['qa_use_hp']) {
|
||||
$is_hp = true;
|
||||
|
||||
if($qaconfig['qa_req_hp'])
|
||||
$req_hp = 'required';
|
||||
|
||||
if($w == '' || $w == 'r')
|
||||
$write['qa_hp'] = $member['mb_hp'];
|
||||
|
||||
if($w == 'u' && $is_admin && $write['qa_type'])
|
||||
$is_hp = false;
|
||||
}
|
||||
|
||||
$list_href = G5_BBS_URL.'/qalist.php'.preg_replace('/^&/', '?', $qstr);
|
||||
|
||||
$action_url = https_url(G5_BBS_DIR).'/qawrite_update.php';
|
||||
|
||||
include_once($skin_file);
|
||||
} else {
|
||||
echo '<div>'.str_replace(G5_PATH.'/', '', $skin_file).'이 존재하지 않습니다.</div>';
|
||||
}
|
||||
|
||||
include_once('./qatail.php');
|
||||
@@ -0,0 +1,500 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
/*==========================
|
||||
$w == a : 답변
|
||||
$w == r : 추가질문
|
||||
$w == u : 수정
|
||||
==========================*/
|
||||
|
||||
if($is_guest)
|
||||
alert('회원이시라면 로그인 후 이용해 보십시오.', './login.php?url='.urlencode(G5_BBS_URL.'/qalist.php'));
|
||||
|
||||
$msg = array();
|
||||
|
||||
$write_token = get_session('ss_qa_write_token');
|
||||
set_session('ss_qa_write_token', '');
|
||||
|
||||
$token = isset($_POST['token']) ? clean_xss_tags($_POST['token'], 1, 1) : '';
|
||||
|
||||
//모든 회원의 토큰을 검사합니다.
|
||||
if (!($token && $write_token === $token))
|
||||
alert('올바른 방법으로 이용해 주십시오.');
|
||||
|
||||
// 1:1문의 설정값
|
||||
$qaconfig = get_qa_config();
|
||||
$qa_id = isset($_POST['qa_id']) ? (int) $_POST['qa_id'] : 0;
|
||||
|
||||
if(trim($qaconfig['qa_category'])) {
|
||||
if($w != 'a') {
|
||||
$category = explode('|', $qaconfig['qa_category']);
|
||||
if(!in_array($qa_category, $category))
|
||||
alert('분류를 올바르게 지정해 주십시오.');
|
||||
}
|
||||
} else {
|
||||
alert('1:1문의 설정에서 분류를 설정해 주십시오');
|
||||
}
|
||||
|
||||
// e-mail 체크
|
||||
$qa_email = '';
|
||||
if(isset($_POST['qa_email']) && $_POST['qa_email'])
|
||||
$qa_email = get_email_address(trim($_POST['qa_email']));
|
||||
|
||||
if($w != 'a' && $qaconfig['qa_req_email'] && !$qa_email)
|
||||
$msg[] = '이메일을 입력하세요.';
|
||||
|
||||
$qa_subject = '';
|
||||
if (isset($_POST['qa_subject'])) {
|
||||
$qa_subject = substr(trim($_POST['qa_subject']),0,255);
|
||||
$qa_subject = preg_replace("#[\\\]+$#", "", $qa_subject);
|
||||
}
|
||||
if ($qa_subject == '') {
|
||||
$msg[] = '<strong>제목</strong>을 입력하세요.';
|
||||
}
|
||||
|
||||
$qa_content = '';
|
||||
if (isset($_POST['qa_content'])) {
|
||||
$qa_content = substr(trim($_POST['qa_content']),0,65536);
|
||||
$qa_content = preg_replace("#[\\\]+$#", "", $qa_content);
|
||||
}
|
||||
if ($qa_content == '') {
|
||||
$msg[] = '<strong>내용</strong>을 입력하세요.';
|
||||
}
|
||||
|
||||
if (!empty($msg)) {
|
||||
$msg = implode('<br>', $msg);
|
||||
alert($msg);
|
||||
}
|
||||
|
||||
$qa_hp = isset($_POST['qa_hp']) ? preg_replace('/[^0-9\-]/', '', $_POST['qa_hp']) : '';
|
||||
|
||||
// 090710
|
||||
if (substr_count($qa_content, '&#') > 50) {
|
||||
alert('내용에 올바르지 않은 코드가 다수 포함되어 있습니다.');
|
||||
exit;
|
||||
}
|
||||
|
||||
$upload_max_filesize = ini_get('upload_max_filesize');
|
||||
|
||||
if (empty($_POST)) {
|
||||
alert("파일 또는 글내용의 크기가 서버에서 설정한 값을 넘어 오류가 발생하였습니다.\\npost_max_size=".ini_get('post_max_size')." , upload_max_filesize=".$upload_max_filesize."\\n게시판관리자 또는 서버관리자에게 문의 바랍니다.");
|
||||
}
|
||||
|
||||
$qa_type = 0;
|
||||
$qa_parent = 0;
|
||||
$qa_related = 0;
|
||||
$qa_email_recv = (isset($_POST['qa_email_recv']) && $_POST['qa_email_recv']) ? 1 : 0;
|
||||
$qa_sms_recv = (isset($_POST['qa_sms_recv']) && $_POST['qa_sms_recv']) ? 1 : 0;
|
||||
$qa_status = 0;
|
||||
$answer_id = null;
|
||||
|
||||
for ($i=1; $i<=5; $i++) {
|
||||
$var = "qa_$i";
|
||||
$$var = "";
|
||||
if (isset($_POST['qa_'.$i]) && $_POST['qa_'.$i]) {
|
||||
$$var = trim($_POST['qa_'.$i]);
|
||||
}
|
||||
}
|
||||
|
||||
if($w == 'u' || $w == 'a' || $w == 'r') {
|
||||
if($w == 'a' && !$is_admin)
|
||||
alert('답변은 관리자만 등록할 수 있습니다.');
|
||||
|
||||
$sql = " select * from {$g5['qa_content_table']} where qa_id = '$qa_id' ";
|
||||
if(!$is_admin) {
|
||||
$sql .= " and mb_id = '{$member['mb_id']}' ";
|
||||
}
|
||||
|
||||
$write = sql_fetch($sql);
|
||||
|
||||
if($w == 'u') {
|
||||
if(!$write['qa_id'])
|
||||
alert('게시글이 존재하지 않습니다.\\n삭제되었거나 자신의 글이 아닌 경우입니다.');
|
||||
|
||||
if(!$is_admin) {
|
||||
if($write['qa_type'] == 0 && $write['qa_status'] == 1)
|
||||
alert('답변이 등록된 문의글은 수정할 수 없습니다.');
|
||||
|
||||
if($write['mb_id'] != $member['mb_id'])
|
||||
alert('게시글을 수정할 권한이 없습니다.\\n\\n올바른 방법으로 이용해 주십시오.', G5_URL);
|
||||
}
|
||||
}
|
||||
|
||||
if($w == 'a') {
|
||||
if(!$write['qa_id'])
|
||||
alert('문의글이 존재하지 않아 답변글을 등록할 수 없습니다.');
|
||||
|
||||
if($write['qa_type'] == 1)
|
||||
alert('답변글에는 다시 답변을 등록할 수 없습니다.');
|
||||
}
|
||||
}
|
||||
|
||||
// 파일개수 체크
|
||||
$file_count = 0;
|
||||
$upload_count = isset($_FILES['bf_file']['name']) ? count($_FILES['bf_file']['name']) : 0;
|
||||
|
||||
for ($i=1; $i<=$upload_count; $i++) {
|
||||
if($_FILES['bf_file']['name'][$i] && is_uploaded_file($_FILES['bf_file']['tmp_name'][$i]))
|
||||
$file_count++;
|
||||
}
|
||||
|
||||
if($file_count > 2)
|
||||
alert('첨부파일을 2개 이하로 업로드 해주십시오.');
|
||||
|
||||
// 디렉토리가 없다면 생성합니다. (퍼미션도 변경하구요.)
|
||||
@mkdir(G5_DATA_PATH.'/qa', G5_DIR_PERMISSION);
|
||||
@chmod(G5_DATA_PATH.'/qa', G5_DIR_PERMISSION);
|
||||
|
||||
$chars_array = array_merge(range(0,9), range('a','z'), range('A','Z'));
|
||||
|
||||
// 가변 파일 업로드
|
||||
$file_upload_msg = '';
|
||||
$upload = array();
|
||||
for ($i=1; $i<=$upload_count; $i++) {
|
||||
$upload[$i]['file'] = '';
|
||||
$upload[$i]['source'] = '';
|
||||
$upload[$i]['del_check'] = false;
|
||||
|
||||
// 삭제에 체크가 되어있다면 파일을 삭제합니다.
|
||||
if (isset($_POST['bf_file_del'][$i]) && $_POST['bf_file_del'][$i]) {
|
||||
$upload[$i]['del_check'] = true;
|
||||
@unlink(G5_DATA_PATH.'/qa/'.clean_relative_paths($write['qa_file'.$i]));
|
||||
// 썸네일삭제
|
||||
if(preg_match("/\.({$config['cf_image_extension']})$/i", $write['qa_file'.$i])) {
|
||||
delete_qa_thumbnail($write['qa_file'.$i]);
|
||||
}
|
||||
}
|
||||
|
||||
$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 > $qaconfig['qa_upload_size']) {
|
||||
$file_upload_msg .= '\"'.$filename.'\" 파일의 용량('.number_format($filesize).' 바이트)이 게시판에 설정('.number_format($qaconfig['qa_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) ) {
|
||||
// webp 파일의 type 이 18 이므로 업로드가 가능하도록 수정
|
||||
if ($timg['2'] < 1 || $timg['2'] > 18)
|
||||
continue;
|
||||
}
|
||||
//=================================================================
|
||||
|
||||
if ($w == 'u') {
|
||||
// 존재하는 파일이 있다면 삭제합니다.
|
||||
@unlink(G5_DATA_PATH.'/qa/'.clean_relative_paths($write['qa_file'.$i]));
|
||||
// 이미지파일이면 썸네일삭제
|
||||
if(preg_match("/\.({$config['cf_image_extension']})$/i", $write['qa_file'.$i])) {
|
||||
delete_qa_thumbnail($row['qa_file'.$i]);
|
||||
}
|
||||
}
|
||||
|
||||
// 프로그램 원래 파일명
|
||||
$upload[$i]['source'] = $filename;
|
||||
$upload[$i]['filesize'] = $filesize;
|
||||
|
||||
// 아래의 문자열이 들어간 파일은 -x 를 붙여서 웹경로를 알더라도 실행을 하지 못하도록 함
|
||||
$filename = preg_replace("/\.(php|pht|phtm|htm|cgi|pl|exe|jsp|asp|inc|phar)/i", "$0-x", $filename);
|
||||
|
||||
shuffle($chars_array);
|
||||
$shuffle = implode('', $chars_array);
|
||||
|
||||
// 첨부파일 첨부시 첨부파일명에 공백이 포함되어 있으면 일부 PC에서 보이지 않거나 다운로드 되지 않는 현상이 있습니다. (길상여의 님 090925)
|
||||
$upload[$i]['file'] = md5(sha1($_SERVER['REMOTE_ADDR'])).'_'.substr($shuffle,0,8).'_'.replace_filename($filename);
|
||||
|
||||
$dest_file = G5_DATA_PATH.'/qa/'.$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 == 'a' || $w == 'r') {
|
||||
if($w == '' || $w == 'r') {
|
||||
$row = sql_fetch(" select MIN(qa_num) as min_qa_num from {$g5['qa_content_table']} ");
|
||||
$qa_num = $row['min_qa_num'] - 1;
|
||||
}
|
||||
|
||||
if($w == 'a') {
|
||||
$qa_num = $write['qa_num'];
|
||||
$qa_parent = $write['qa_id'];
|
||||
$qa_related = $write['qa_related'];
|
||||
$qa_category = addslashes($write['qa_category']);
|
||||
$qa_type = 1;
|
||||
$qa_status = 1;
|
||||
}
|
||||
|
||||
$insert_qa_file1 = isset($upload[1]['file']) ? $upload[1]['file'] : '';
|
||||
$insert_qa_source1 = isset($upload[1]['source']) ? $upload[1]['source'] : '';
|
||||
$insert_qa_file2 = isset($upload[2]['file']) ? $upload[2]['file'] : '';
|
||||
$insert_qa_source2 = isset($upload[2]['source']) ? $upload[2]['source'] : '';
|
||||
|
||||
$sql = " insert into {$g5['qa_content_table']}
|
||||
set qa_num = '$qa_num',
|
||||
mb_id = '{$member['mb_id']}',
|
||||
qa_name = '".addslashes($member['mb_nick'])."',
|
||||
qa_email = '$qa_email',
|
||||
qa_hp = '$qa_hp',
|
||||
qa_type = '$qa_type',
|
||||
qa_parent = '$qa_parent',
|
||||
qa_related = '$qa_related',
|
||||
qa_category = '$qa_category',
|
||||
qa_email_recv = '$qa_email_recv',
|
||||
qa_sms_recv = '$qa_sms_recv',
|
||||
qa_html = '$qa_html',
|
||||
qa_subject = '$qa_subject',
|
||||
qa_content = '$qa_content',
|
||||
qa_status = '$qa_status',
|
||||
qa_file1 = '{$insert_qa_file1}',
|
||||
qa_source1 = '{$insert_qa_source1}',
|
||||
qa_file2 = '{$insert_qa_file2}',
|
||||
qa_source2 = '{$insert_qa_source2}',
|
||||
qa_ip = '{$_SERVER['REMOTE_ADDR']}',
|
||||
qa_datetime = '".G5_TIME_YMDHIS."',
|
||||
qa_1 = '$qa_1',
|
||||
qa_2 = '$qa_2',
|
||||
qa_3 = '$qa_3',
|
||||
qa_4 = '$qa_4',
|
||||
qa_5 = '$qa_5' ";
|
||||
sql_query($sql);
|
||||
|
||||
if($w == '' || $w == 'r') {
|
||||
$qa_id = sql_insert_id();
|
||||
|
||||
if($w == 'r' && $write['qa_related']) {
|
||||
$qa_related = $write['qa_related'];
|
||||
} else {
|
||||
$qa_related = $qa_id;
|
||||
}
|
||||
|
||||
$sql = " update {$g5['qa_content_table']}
|
||||
set qa_parent = '$qa_id',
|
||||
qa_related = '$qa_related'
|
||||
where qa_id = '$qa_id' ";
|
||||
sql_query($sql);
|
||||
}
|
||||
|
||||
if($w == 'a') {
|
||||
$answer_id = (int) sql_insert_id();
|
||||
$sql = " update {$g5['qa_content_table']}
|
||||
set qa_status = '1'
|
||||
where qa_id = '{$write['qa_parent']}' ";
|
||||
sql_query($sql);
|
||||
}
|
||||
} else if($w == 'u') {
|
||||
if(!$upload[1]['file'] && !$upload[1]['del_check']) {
|
||||
$upload[1]['file'] = $write['qa_file1'];
|
||||
$upload[1]['source'] = $write['qa_source1'];
|
||||
}
|
||||
|
||||
if(!$upload[2]['file'] && !$upload[2]['del_check']) {
|
||||
$upload[2]['file'] = $write['qa_file2'];
|
||||
$upload[2]['source'] = $write['qa_source2'];
|
||||
}
|
||||
|
||||
$sql = " update {$g5['qa_content_table']}
|
||||
set qa_email = '$qa_email',
|
||||
qa_hp = '$qa_hp',
|
||||
qa_category = '$qa_category',
|
||||
qa_html = '$qa_html',
|
||||
qa_subject = '$qa_subject',
|
||||
qa_content = '$qa_content',
|
||||
qa_file1 = '{$upload[1]['file']}',
|
||||
qa_source1 = '{$upload[1]['source']}',
|
||||
qa_file2 = '{$upload[2]['file']}',
|
||||
qa_source2 = '{$upload[2]['source']}',
|
||||
qa_1 = '$qa_1',
|
||||
qa_2 = '$qa_2',
|
||||
qa_3 = '$qa_3',
|
||||
qa_4 = '$qa_4',
|
||||
qa_5 = '$qa_5' ";
|
||||
if($qa_sms_recv)
|
||||
$sql .= ", qa_sms_recv = '$qa_sms_recv' ";
|
||||
$sql .= " where qa_id = '$qa_id' ";
|
||||
sql_query($sql);
|
||||
}
|
||||
|
||||
/**
|
||||
* 1:1 문의/답변의 변경 시 Event Hook
|
||||
* @var int $qa_id 삽입/수정 또는 답글/추가질문 대상 글의 ID
|
||||
* @var array $write 삽입/수정 또는 답글/추가질문 대상 글의 데이터
|
||||
* @var string $w 동작 모드 ('': 질문글 작성, 'a': 답변글 작성, 'u': 질문/답변 수정, 'r': 추가(관련) 질문)
|
||||
* @var array $qaconfig 1:1 문의 설정
|
||||
* @var ?int $answer_id 답변글 작성($w = 'a') 시 답변글의 ID
|
||||
*/
|
||||
run_event('qawrite_update', $qa_id, $write, $w, $qaconfig, ($w === 'a') ? $answer_id : null);
|
||||
|
||||
// SMS 알림
|
||||
if($config['cf_sms_use'] == 'icode' && $qaconfig['qa_use_sms']) {
|
||||
if($config['cf_sms_type'] == 'LMS') {
|
||||
include_once(G5_LIB_PATH.'/icode.lms.lib.php');
|
||||
|
||||
$port_setting = get_icode_port_type($config['cf_icode_id'], $config['cf_icode_pw']);
|
||||
|
||||
// SMS 모듈 클래스 생성
|
||||
if($port_setting !== false) {
|
||||
// 답변글은 질문 등록자에게 전송
|
||||
if($w == 'a' && $write['qa_sms_recv'] && trim($write['qa_hp'])) {
|
||||
$sms_content = $config['cf_title'].' '.$qaconfig['qa_title'].'에 답변이 등록되었습니다.';
|
||||
$send_number = preg_replace('/[^0-9]/', '', $qaconfig['qa_send_number']);
|
||||
$recv_number = preg_replace('/[^0-9]/', '', $write['qa_hp']);
|
||||
|
||||
if($recv_number) {
|
||||
$strDest = array();
|
||||
$strDest[] = $recv_number;
|
||||
$strCallBack = $send_number;
|
||||
$strCaller = iconv_euckr(trim($config['cf_title']));
|
||||
$strSubject = '';
|
||||
$strURL = '';
|
||||
$strData = iconv_euckr($sms_content);
|
||||
$strDate = '';
|
||||
$nCount = count($strDest);
|
||||
|
||||
$SMS = new LMS;
|
||||
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $port_setting);
|
||||
$res = $SMS->Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate, $nCount);
|
||||
|
||||
if($res) {
|
||||
$SMS->Send();
|
||||
}
|
||||
|
||||
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
|
||||
}
|
||||
}
|
||||
|
||||
// 문의글 등록시 관리자에게 전송
|
||||
if(($w == '' || $w == 'r') && trim($qaconfig['qa_admin_hp'])) {
|
||||
$sms_content = $config['cf_title'].' '.$qaconfig['qa_title'].'에 문의글이 등록되었습니다.';
|
||||
$send_number = preg_replace('/[^0-9]/', '', $qaconfig['qa_send_number']);
|
||||
$recv_number = preg_replace('/[^0-9]/', '', $qaconfig['qa_admin_hp']);
|
||||
|
||||
if($recv_number) {
|
||||
$strDest = array();
|
||||
$strDest[] = $recv_number;
|
||||
$strCallBack = $send_number;
|
||||
$strCaller = iconv_euckr(trim($config['cf_title']));;
|
||||
$strSubject = '';
|
||||
$strURL = '';
|
||||
$strData = iconv_euckr($sms_content);
|
||||
$strDate = '';
|
||||
$nCount = count($strDest);
|
||||
|
||||
$SMS = new LMS;
|
||||
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $port_setting);
|
||||
$res = $SMS->Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate, $nCount);
|
||||
|
||||
if($res) {
|
||||
$SMS->Send();
|
||||
}
|
||||
|
||||
$SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
include_once(G5_LIB_PATH.'/icode.sms.lib.php');
|
||||
|
||||
// 답변글은 질문 등록자에게 전송
|
||||
if($w == 'a' && $write['qa_sms_recv'] && trim($write['qa_hp'])) {
|
||||
$sms_content = $config['cf_title'].' '.$qaconfig['qa_title'].'에 답변이 등록되었습니다.';
|
||||
$send_number = preg_replace('/[^0-9]/', '', $qaconfig['qa_send_number']);
|
||||
$recv_number = preg_replace('/[^0-9]/', '', $write['qa_hp']);
|
||||
|
||||
if($recv_number) {
|
||||
$SMS = new SMS; // SMS 연결
|
||||
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);
|
||||
$SMS->Add($recv_number, $send_number, $config['cf_icode_id'], iconv("utf-8", "euc-kr", stripslashes($sms_content)), "");
|
||||
$SMS->Send();
|
||||
}
|
||||
}
|
||||
|
||||
// 문의글 등록시 관리자에게 전송
|
||||
if(($w == '' || $w == 'r') && trim($qaconfig['qa_admin_hp'])) {
|
||||
$sms_content = $config['cf_title'].' '.$qaconfig['qa_title'].'에 문의글이 등록되었습니다.';
|
||||
$send_number = preg_replace('/[^0-9]/', '', $qaconfig['qa_send_number']);
|
||||
$recv_number = preg_replace('/[^0-9]/', '', $qaconfig['qa_admin_hp']);
|
||||
|
||||
if($recv_number) {
|
||||
$SMS = new SMS; // SMS 연결
|
||||
$SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $config['cf_icode_server_port']);
|
||||
$SMS->Add($recv_number, $send_number, $config['cf_icode_id'], iconv("utf-8", "euc-kr", stripslashes($sms_content)), "");
|
||||
$SMS->Send();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 문의글등록 쪽지 발송
|
||||
if($w == '' || $w == 'r') {
|
||||
//문의 > 관리자에게 발송
|
||||
memo_auto_send("신규 1:1문의가 등록 되었습니다.", G5_BBS_URL.'/qalist.php', $config['cf_admin'], "system-msg");
|
||||
}
|
||||
|
||||
|
||||
// 답변 > 문의자에게 발송
|
||||
if($w == 'a') {
|
||||
memo_auto_send("1:1문의에 답변이 등록 되었습니다.", G5_BBS_URL.'/qalist.php', $write['mb_id'], "system-msg");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// 답변 이메일전송
|
||||
if($w == 'a' && $write['qa_email_recv'] && trim($write['qa_email'])) {
|
||||
include_once(G5_LIB_PATH.'/mailer.lib.php');
|
||||
|
||||
$subject = $config['cf_title'].' '.$qaconfig['qa_title'].' 답변 알림 메일';
|
||||
$content = nl2br(conv_unescape_nl(stripslashes($qa_content)));
|
||||
|
||||
mailer($config['cf_admin_email_name'], $config['cf_admin_email'], $write['qa_email'], $subject, $content, 1);
|
||||
}
|
||||
|
||||
// 문의글등록 이메일전송
|
||||
if(($w == '' || $w == 'r') && trim($qaconfig['qa_admin_email'])) {
|
||||
include_once(G5_LIB_PATH.'/mailer.lib.php');
|
||||
|
||||
$subject = $config['cf_title'].' '.$qaconfig['qa_title'].' 질문 알림 메일';
|
||||
$content = nl2br(conv_unescape_nl(stripslashes($qa_content)));
|
||||
|
||||
mailer($config['cf_admin_email_name'], $qa_email, $qaconfig['qa_admin_email'], $subject, $content, 1);
|
||||
}
|
||||
|
||||
if($w == 'a')
|
||||
$result_url = G5_BBS_URL.'/qaview.php?qa_id='.$qa_id.$qstr;
|
||||
else if($w == 'u' && $write['qa_type'])
|
||||
$result_url = G5_BBS_URL.'/qaview.php?qa_id='.$write['qa_parent'].$qstr;
|
||||
else
|
||||
$result_url = G5_BBS_URL.'/qalist.php'.preg_replace('/^&/', '?', $qstr);
|
||||
|
||||
if ($file_upload_msg)
|
||||
alert($file_upload_msg, $result_url);
|
||||
else
|
||||
goto_url($result_url);
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
// 로그인중인 경우 회원가입 할 수 없습니다.
|
||||
if ($is_member) {
|
||||
goto_url(G5_URL);
|
||||
}
|
||||
|
||||
// 세션을 지웁니다.
|
||||
set_session("ss_mb_reg", "");
|
||||
|
||||
$g5['title'] = '회원가입약관';
|
||||
include_once('./_head.sub.php');
|
||||
|
||||
$register_action_url = G5_BBS_URL.'/register_form.php';
|
||||
include_once($member_skin_path.'/register.skin.php');
|
||||
|
||||
include_once('./_tail.sub.php');
|
||||
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
||||
add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">', 0);
|
||||
|
||||
$g5['title'] = '메일인증 메일주소 변경';
|
||||
include_once('./_head.php');
|
||||
|
||||
$mb_id = isset($_GET['mb_id']) ? substr(clean_xss_tags($_GET['mb_id']), 0, 20) : '';
|
||||
$sql = " select mb_email, mb_datetime, mb_ip, mb_email_certify, mb_id from {$g5['member_table']} where mb_id = '{$mb_id}' ";
|
||||
$mb = sql_fetch($sql);
|
||||
|
||||
if(! (isset($mb['mb_id']) && $mb['mb_id'])){
|
||||
alert("해당 회원이 존재하지 않습니다.", G5_URL);
|
||||
}
|
||||
|
||||
if (substr($mb['mb_email_certify'],0,1)!=0) {
|
||||
alert("이미 메일인증 하신 회원입니다.", G5_URL);
|
||||
}
|
||||
|
||||
$ckey = isset($_GET['ckey']) ? trim($_GET['ckey']) : '';
|
||||
$key = md5($mb['mb_ip'].$mb['mb_datetime']);
|
||||
|
||||
if(!$ckey || $ckey != $key)
|
||||
alert('올바른 방법으로 이용해 주십시오.', G5_URL);
|
||||
?>
|
||||
|
||||
|
||||
|
||||
|
||||
<style>
|
||||
body, html {background-color: #f9fafb;}
|
||||
main {background-color: #f9fafb;}
|
||||
#container_title {display: none;}
|
||||
#header {display: none;}
|
||||
.contents_wrap {padding: 0px !important;}
|
||||
.sub {padding-top: 0px;}
|
||||
</style>
|
||||
|
||||
<div class="rb_member">
|
||||
<div class="rb_login rb_reg">
|
||||
|
||||
<form method="post" name="fregister_email" action="<?php echo G5_HTTPS_BBS_URL.'/register_email_update.php'; ?>" onsubmit="return fregister_email_submit(this);">
|
||||
<input type="hidden" name="mb_id" value="<?php echo $mb_id; ?>">
|
||||
|
||||
<ul class="rb_login_box">
|
||||
|
||||
<?php if (!empty($rb_builder['bu_logo_pc'])) { ?>
|
||||
<a href="<?php echo G5_URL ?>"><img src="<?php echo G5_URL ?>/data/logos/pc?ver=<?php echo G5_SERVER_TIME ?>" alt="<?php echo $config['cf_title']; ?>" id="logo_img"></a>
|
||||
<?php } else { ?>
|
||||
<a href="<?php echo G5_URL ?>"><img src="<?php echo G5_THEME_URL ?>/rb.img/logos/pc.png?ver=<?php echo G5_SERVER_TIME ?>" alt="<?php echo $config['cf_title']; ?>" id="logo_img"></a>
|
||||
<?php } ?>
|
||||
|
||||
|
||||
<li class="rb_reg_ok_text font-B">인증메일 변경</li>
|
||||
<li class="rb_reg_sub_title">메일인증을 받지 못한 경우 이메일 주소를<br>변경 할 수 있어요.</li>
|
||||
|
||||
<li>
|
||||
<span>변경할 이메일주소</span>
|
||||
<input type="text" name="mb_email" id="reg_mb_email" required class="input email required" maxlength="100" value="<?php echo $mb['mb_email']; ?>">
|
||||
</li>
|
||||
<li>
|
||||
<div>
|
||||
<?php echo captcha_html(); ?>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
|
||||
<li>
|
||||
<div class="btn_confirm">
|
||||
<button type="submit" class="btn_submit font-B">인증메일 변경</button>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="join_links">
|
||||
<a href="<?php echo G5_URL ?>" class="font-B">변경취소</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
function fregister_email_submit(f)
|
||||
{
|
||||
<?php echo chk_captcha_js(); ?>
|
||||
|
||||
return true;
|
||||
}
|
||||
</script>
|
||||
<?php
|
||||
include_once('./_tail.php');
|
||||
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
||||
include_once(G5_LIB_PATH.'/mailer.lib.php');
|
||||
|
||||
$mb_id = isset($_POST['mb_id']) ? substr(clean_xss_tags($_POST['mb_id']), 0, 20) : '';
|
||||
$mb_email = isset($_POST['mb_email']) ? get_email_address(trim($_POST['mb_email'])) : '';
|
||||
|
||||
if(!$mb_id || !$mb_email)
|
||||
alert('올바른 방법으로 이용해 주십시오.', G5_URL);
|
||||
|
||||
$sql = " select mb_name from {$g5['member_table']} where mb_id = '{$mb_id}' and substring(mb_email_certify, 1, 1) = '0' ";
|
||||
$mb = sql_fetch($sql);
|
||||
if (!$mb) {
|
||||
alert("이미 메일인증 하신 회원입니다.", G5_URL);
|
||||
}
|
||||
|
||||
if (!chk_captcha()) {
|
||||
alert('자동등록방지 숫자가 틀렸습니다.');
|
||||
}
|
||||
|
||||
$sql = " select count(*) as cnt from {$g5['member_table']} where mb_id <> '{$mb_id}' and mb_email = '$mb_email' ";
|
||||
$row = sql_fetch($sql);
|
||||
if ($row['cnt']) {
|
||||
alert("{$mb_email} 메일은 이미 존재하는 메일주소 입니다.\\n\\n다른 메일주소를 입력해 주십시오.");
|
||||
}
|
||||
|
||||
// 인증메일 발송
|
||||
$subject = '['.$config['cf_title'].'] 인증확인 메일입니다.';
|
||||
|
||||
$mb_name = $mb['mb_name'];
|
||||
|
||||
// 어떠한 회원정보도 포함되지 않은 일회용 난수를 생성하여 인증에 사용
|
||||
$mb_md5 = md5(pack('V*', rand(), rand(), rand(), rand()));
|
||||
|
||||
sql_query(" update {$g5['member_table']} set mb_email_certify2 = '$mb_md5' where mb_id = '$mb_id' ");
|
||||
|
||||
$certify_href = G5_BBS_URL.'/email_certify.php?mb_id='.$mb_id.'&mb_md5='.$mb_md5;
|
||||
|
||||
ob_start();
|
||||
include_once ('./register_form_update_mail3.php');
|
||||
$content = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
mailer($config['cf_admin_email_name'], $config['cf_admin_email'], $mb_email, $subject, $content, 1);
|
||||
|
||||
$sql = " update {$g5['member_table']} set mb_email = '$mb_email' where mb_id = '$mb_id' ";
|
||||
sql_query($sql);
|
||||
|
||||
alert("인증메일을 {$mb_email} 메일로 다시 보내 드렸습니다.\\n\\n잠시후 {$mb_email} 메일을 확인하여 주십시오.", G5_URL);
|
||||
@@ -0,0 +1,161 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
||||
include_once(G5_LIB_PATH.'/register.lib.php');
|
||||
|
||||
run_event('register_form_before');
|
||||
|
||||
// 불법접근을 막도록 토큰생성
|
||||
$token = md5(uniqid(rand(), true));
|
||||
set_session("ss_token", $token);
|
||||
set_session("ss_cert_no", "");
|
||||
set_session("ss_cert_hash", "");
|
||||
set_session("ss_cert_type", "");
|
||||
|
||||
$is_social_login_modify = false;
|
||||
|
||||
if( isset($_REQUEST['provider']) && $_REQUEST['provider'] && function_exists('social_nonce_is_valid') ){ //모바일로 소셜 연결을 했다면
|
||||
if( social_nonce_is_valid(get_session("social_link_token"), $provider) ){ //토큰값이 유효한지 체크
|
||||
$w = 'u'; //회원 수정으로 처리
|
||||
$_POST['mb_id'] = $member['mb_id'];
|
||||
$is_social_login_modify = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ($w == "") {
|
||||
|
||||
// 회원 로그인을 한 경우 회원가입 할 수 없다
|
||||
// 경고창이 뜨는것을 막기위해 아래의 코드로 대체
|
||||
// alert("이미 로그인중이므로 회원 가입 하실 수 없습니다.", "./");
|
||||
if ($is_member) {
|
||||
goto_url(G5_URL);
|
||||
}
|
||||
|
||||
// 리퍼러 체크
|
||||
referer_check();
|
||||
|
||||
if (!isset($_POST['agree']) || !$_POST['agree']) {
|
||||
alert('회원가입약관의 내용에 동의하셔야 회원가입 하실 수 있습니다.', G5_BBS_URL.'/register.php');
|
||||
}
|
||||
|
||||
if (!isset($_POST['agree2']) || !$_POST['agree2']) {
|
||||
alert('개인정보 수집 및 이용의 내용에 동의하셔야 회원가입 하실 수 있습니다.', G5_BBS_URL.'/register.php');
|
||||
}
|
||||
|
||||
$agree = preg_replace('#[^0-9]#', '', $_POST['agree']);
|
||||
$agree2 = preg_replace('#[^0-9]#', '', $_POST['agree2']);
|
||||
|
||||
$member['mb_birth'] = '';
|
||||
$member['mb_sex'] = '';
|
||||
$member['mb_name'] = '';
|
||||
if (isset($_POST['birth'])) {
|
||||
$member['mb_birth'] = $_POST['birth'];
|
||||
}
|
||||
if (isset($_POST['sex'])) {
|
||||
$member['mb_sex'] = $_POST['sex'];
|
||||
}
|
||||
if (isset($_POST['mb_name'])) {
|
||||
$member['mb_name'] = $_POST['mb_name'];
|
||||
}
|
||||
|
||||
$g5['title'] = '회원 가입';
|
||||
|
||||
} else if ($w == 'u') {
|
||||
|
||||
if ($is_admin == 'super')
|
||||
alert('관리자의 회원정보는 관리자 화면에서 수정해 주십시오.', G5_URL);
|
||||
|
||||
if (!$is_member)
|
||||
alert('로그인 후 이용하여 주십시오.', G5_URL);
|
||||
|
||||
if ($member['mb_id'] != $_POST['mb_id'])
|
||||
alert('로그인된 회원과 넘어온 정보가 서로 다릅니다.');
|
||||
|
||||
/*
|
||||
if (!($member[mb_password] == sql_password($_POST[mb_password]) && $_POST[mb_password]))
|
||||
alert("비밀번호가 틀립니다.");
|
||||
|
||||
// 수정 후 다시 이 폼으로 돌아오기 위해 임시로 저장해 놓음
|
||||
set_session("ss_tmp_password", $_POST[mb_password]);
|
||||
*/
|
||||
|
||||
if($_POST['mb_id'] && ! (isset($_POST['mb_password']) && $_POST['mb_password'])){
|
||||
if( ! $is_social_login_modify ){
|
||||
alert('비밀번호를 입력해 주세요.');
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_POST['mb_password'])) {
|
||||
// 수정된 정보를 업데이트후 되돌아 온것이라면 비밀번호가 암호화 된채로 넘어온것임
|
||||
if (isset($_POST['is_update']) && $_POST['is_update']) {
|
||||
$tmp_password = $_POST['mb_password'];
|
||||
$pass_check = ($member['mb_password'] === $tmp_password);
|
||||
} else {
|
||||
$pass_check = check_password($_POST['mb_password'], $member['mb_password']);
|
||||
}
|
||||
|
||||
if (!$pass_check)
|
||||
alert('비밀번호가 틀립니다.');
|
||||
}
|
||||
|
||||
$g5['title'] = '회원 정보 수정';
|
||||
|
||||
set_session("ss_reg_mb_name", $member['mb_name']);
|
||||
set_session("ss_reg_mb_hp", $member['mb_hp']);
|
||||
|
||||
$member['mb_email'] = get_text($member['mb_email']);
|
||||
$member['mb_homepage'] = get_text($member['mb_homepage']);
|
||||
$member['mb_birth'] = get_text($member['mb_birth']);
|
||||
$member['mb_tel'] = get_text($member['mb_tel']);
|
||||
$member['mb_hp'] = get_text($member['mb_hp']);
|
||||
$member['mb_addr1'] = get_text($member['mb_addr1']);
|
||||
$member['mb_addr2'] = get_text($member['mb_addr2']);
|
||||
$member['mb_signature'] = get_text($member['mb_signature']);
|
||||
$member['mb_recommend'] = get_text($member['mb_recommend']);
|
||||
$member['mb_profile'] = get_text($member['mb_profile']);
|
||||
$member['mb_1'] = get_text($member['mb_1']);
|
||||
$member['mb_2'] = get_text($member['mb_2']);
|
||||
$member['mb_3'] = get_text($member['mb_3']);
|
||||
$member['mb_4'] = get_text($member['mb_4']);
|
||||
$member['mb_5'] = get_text($member['mb_5']);
|
||||
$member['mb_6'] = get_text($member['mb_6']);
|
||||
$member['mb_7'] = get_text($member['mb_7']);
|
||||
$member['mb_8'] = get_text($member['mb_8']);
|
||||
$member['mb_9'] = get_text($member['mb_9']);
|
||||
$member['mb_10'] = get_text($member['mb_10']);
|
||||
} else {
|
||||
alert('w 값이 제대로 넘어오지 않았습니다.');
|
||||
}
|
||||
|
||||
include_once('./_head.sub.php');
|
||||
|
||||
// 회원아이콘 경로
|
||||
$mb_icon_path = G5_DATA_PATH.'/member/'.substr($member['mb_id'],0,2).'/'.get_mb_icon_name($member['mb_id']).'.gif';
|
||||
$mb_icon_filemtile = (defined('G5_USE_MEMBER_IMAGE_FILETIME') && G5_USE_MEMBER_IMAGE_FILETIME && file_exists($mb_icon_path)) ? '?'.filemtime($mb_icon_path) : '';
|
||||
$mb_icon_url = G5_DATA_URL.'/member/'.substr($member['mb_id'],0,2).'/'.get_mb_icon_name($member['mb_id']).'.gif'.$mb_icon_filemtile;
|
||||
|
||||
// 회원이미지 경로
|
||||
$mb_img_path = G5_DATA_PATH.'/member_image/'.substr($member['mb_id'],0,2).'/'.get_mb_icon_name($member['mb_id']).'.gif';
|
||||
$mb_img_filemtile = (defined('G5_USE_MEMBER_IMAGE_FILETIME') && G5_USE_MEMBER_IMAGE_FILETIME && file_exists($mb_img_path)) ? '?'.filemtime($mb_img_path) : '';
|
||||
$mb_img_url = G5_DATA_URL.'/member_image/'.substr($member['mb_id'],0,2).'/'.get_mb_icon_name($member['mb_id']).'.gif'.$mb_img_filemtile;
|
||||
|
||||
$register_action_url = G5_HTTPS_BBS_URL.'/register_form_update.php';
|
||||
$req_nick = !isset($member['mb_nick_date']) || (isset($member['mb_nick_date']) && $member['mb_nick_date'] <= date("Y-m-d", G5_SERVER_TIME - ($config['cf_nick_modify'] * 86400)));
|
||||
$required = ($w=='') ? 'required' : '';
|
||||
$readonly = ($w=='u') ? 'readonly' : '';
|
||||
$name_readonly = ($w=='u' || ($config['cf_cert_use'] && $config['cf_cert_req']))? 'readonly' : '';
|
||||
$hp_required = ($config['cf_req_hp'] || (($config['cf_cert_use'] && $config['cf_cert_req']) && ($config['cf_cert_hp'] || $config['cf_cert_simple']) && $member['mb_certify'] != "ipin")) ? 'required':'';
|
||||
$hp_readonly = (($config['cf_cert_use'] && $config['cf_cert_req']) && ($config['cf_cert_hp'] || $config['cf_cert_simple']) && $member['mb_certify'] != "ipin") ? 'readonly':'';
|
||||
|
||||
$agree = isset($_REQUEST['agree']) ? preg_replace('#[^0-9]#', '', $_REQUEST['agree']) : '';
|
||||
$agree2 = isset($_REQUEST['agree2']) ? preg_replace('#[^0-9]#', '', $_REQUEST['agree2']) : '';
|
||||
|
||||
// add_javascript('js 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
|
||||
if ($config['cf_use_addr'])
|
||||
add_javascript(G5_POSTCODE_JS, 0); //다음 주소 js
|
||||
|
||||
include_once($member_skin_path.'/register_form.skin.php');
|
||||
|
||||
run_event('register_form_after', $w, $agree, $agree2);
|
||||
|
||||
include_once('./_tail.sub.php');
|
||||
@@ -0,0 +1,622 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
||||
include_once(G5_LIB_PATH.'/register.lib.php');
|
||||
include_once(G5_LIB_PATH.'/mailer.lib.php');
|
||||
include_once(G5_LIB_PATH.'/thumbnail.lib.php');
|
||||
|
||||
// 리퍼러 체크
|
||||
referer_check();
|
||||
|
||||
if (!($w == '' || $w == 'u')) {
|
||||
alert('w 값이 제대로 넘어오지 않았습니다.');
|
||||
}
|
||||
|
||||
if ($w == 'u' && $is_admin == 'super') {
|
||||
if (file_exists(G5_PATH.'/DEMO'))
|
||||
alert('데모 화면에서는 하실(보실) 수 없는 작업입니다.');
|
||||
}
|
||||
|
||||
if (run_replace('register_member_chk_captcha', !chk_captcha(), $w)) {
|
||||
alert('자동등록방지 숫자가 틀렸습니다.');
|
||||
}
|
||||
|
||||
if($w == 'u')
|
||||
$mb_id = isset($_SESSION['ss_mb_id']) ? trim($_SESSION['ss_mb_id']) : '';
|
||||
else if($w == '')
|
||||
$mb_id = isset($_POST['mb_id']) ? trim($_POST['mb_id']) : '';
|
||||
else
|
||||
alert('잘못된 접근입니다', G5_URL);
|
||||
|
||||
if(!$mb_id)
|
||||
alert('회원아이디 값이 없습니다. 올바른 방법으로 이용해 주십시오.');
|
||||
|
||||
$mb_password = isset($_POST['mb_password']) ? trim($_POST['mb_password']) : '';
|
||||
$mb_password_re = isset($_POST['mb_password_re']) ? trim($_POST['mb_password_re']) : '';
|
||||
$mb_name = isset($_POST['mb_name']) ? trim($_POST['mb_name']) : '';
|
||||
$mb_nick = isset($_POST['mb_nick']) ? trim($_POST['mb_nick']) : '';
|
||||
$mb_email = isset($_POST['mb_email']) ? trim($_POST['mb_email']) : '';
|
||||
$mb_sex = isset($_POST['mb_sex']) ? trim($_POST['mb_sex']) : "";
|
||||
$mb_birth = isset($_POST['mb_birth']) ? trim($_POST['mb_birth']) : "";
|
||||
$mb_homepage = isset($_POST['mb_homepage']) ? trim($_POST['mb_homepage']) : "";
|
||||
$mb_tel = isset($_POST['mb_tel']) ? trim($_POST['mb_tel']) : "";
|
||||
$mb_hp = isset($_POST['mb_hp']) ? trim($_POST['mb_hp']) : "";
|
||||
$mb_zip1 = isset($_POST['mb_zip']) ? substr(trim($_POST['mb_zip']), 0, 3) : "";
|
||||
$mb_zip2 = isset($_POST['mb_zip']) ? substr(trim($_POST['mb_zip']), 3) : "";
|
||||
$mb_addr1 = isset($_POST['mb_addr1']) ? trim($_POST['mb_addr1']) : "";
|
||||
$mb_addr2 = isset($_POST['mb_addr2']) ? trim($_POST['mb_addr2']) : "";
|
||||
$mb_addr3 = isset($_POST['mb_addr3']) ? trim($_POST['mb_addr3']) : "";
|
||||
$mb_addr_jibeon = isset($_POST['mb_addr_jibeon']) ? trim($_POST['mb_addr_jibeon']) : "";
|
||||
$mb_signature = isset($_POST['mb_signature']) ? trim($_POST['mb_signature']) : "";
|
||||
$mb_profile = isset($_POST['mb_profile']) ? trim($_POST['mb_profile']) : "";
|
||||
$mb_recommend = isset($_POST['mb_recommend']) ? trim($_POST['mb_recommend']) : "";
|
||||
$mb_mailling = isset($_POST['mb_mailling']) ? trim($_POST['mb_mailling']) : "";
|
||||
$mb_sms = isset($_POST['mb_sms']) ? trim($_POST['mb_sms']) : "";
|
||||
$mb_open = isset($_POST['mb_open']) ? trim($_POST['mb_open']) : "0";
|
||||
$mb_1 = isset($_POST['mb_1']) ? trim($_POST['mb_1']) : "";
|
||||
$mb_2 = isset($_POST['mb_2']) ? trim($_POST['mb_2']) : "";
|
||||
$mb_3 = isset($_POST['mb_3']) ? trim($_POST['mb_3']) : "";
|
||||
$mb_4 = isset($_POST['mb_4']) ? trim($_POST['mb_4']) : "";
|
||||
$mb_5 = isset($_POST['mb_5']) ? trim($_POST['mb_5']) : "";
|
||||
$mb_6 = isset($_POST['mb_6']) ? trim($_POST['mb_6']) : "";
|
||||
$mb_7 = isset($_POST['mb_7']) ? trim($_POST['mb_7']) : "";
|
||||
$mb_8 = isset($_POST['mb_8']) ? trim($_POST['mb_8']) : "";
|
||||
$mb_9 = isset($_POST['mb_9']) ? trim($_POST['mb_9']) : "";
|
||||
$mb_10 = isset($_POST['mb_10']) ? trim($_POST['mb_10']) : "";
|
||||
|
||||
$mb_name = clean_xss_tags($mb_name, 1, 1);
|
||||
$mb_email = get_email_address($mb_email);
|
||||
$mb_homepage = clean_xss_tags($mb_homepage, 1, 1);
|
||||
$mb_tel = clean_xss_tags($mb_tel, 1, 1);
|
||||
$mb_zip1 = preg_replace('/[^0-9]/', '', $mb_zip1);
|
||||
$mb_zip2 = preg_replace('/[^0-9]/', '', $mb_zip2);
|
||||
$mb_addr1 = clean_xss_tags($mb_addr1, 1, 1);
|
||||
$mb_addr2 = clean_xss_tags($mb_addr2, 1, 1);
|
||||
$mb_addr3 = clean_xss_tags($mb_addr3, 1, 1);
|
||||
$mb_addr_jibeon = preg_match("/^(N|R)$/", $mb_addr_jibeon) ? $mb_addr_jibeon : '';
|
||||
|
||||
run_event('register_form_update_before', $mb_id, $w);
|
||||
|
||||
if ($w == '' || $w == 'u') {
|
||||
|
||||
if ($msg = empty_mb_id($mb_id)) alert($msg, "", true, true); // alert($msg, $url, $error, $post);
|
||||
if ($msg = valid_mb_id($mb_id)) alert($msg, "", true, true);
|
||||
if ($msg = count_mb_id($mb_id)) alert($msg, "", true, true);
|
||||
|
||||
// 이름, 닉네임에 utf-8 이외의 문자가 포함됐다면 오류
|
||||
// 서버환경에 따라 정상적으로 체크되지 않을 수 있음.
|
||||
$tmp_mb_name = iconv('UTF-8', 'UTF-8//IGNORE', $mb_name);
|
||||
if($tmp_mb_name != $mb_name) {
|
||||
alert('이름을 올바르게 입력해 주십시오.');
|
||||
}
|
||||
$tmp_mb_nick = iconv('UTF-8', 'UTF-8//IGNORE', $mb_nick);
|
||||
if($tmp_mb_nick != $mb_nick) {
|
||||
alert('닉네임을 올바르게 입력해 주십시오.');
|
||||
}
|
||||
|
||||
// 비밀번호를 체크하는 상태의 기본값은 true이며, 비밀번호를 체크하지 않으려면 hook 을 통해 false 값으로 바꿔야 합니다.
|
||||
$is_check_password = run_replace('register_member_password_check', true, $mb_id, $mb_nick, $mb_email, $w);
|
||||
|
||||
if ($is_check_password){
|
||||
if ($w == '' && !$mb_password)
|
||||
alert('비밀번호가 넘어오지 않았습니다.');
|
||||
if ($w == '' && $mb_password != $mb_password_re)
|
||||
alert('비밀번호가 일치하지 않습니다.');
|
||||
}
|
||||
|
||||
if ($msg = empty_mb_name($mb_name)) alert($msg, "", true, true);
|
||||
if ($msg = empty_mb_nick($mb_nick)) alert($msg, "", true, true);
|
||||
if ($msg = empty_mb_email($mb_email)) alert($msg, "", true, true);
|
||||
if ($msg = reserve_mb_id($mb_id)) alert($msg, "", true, true);
|
||||
if ($msg = reserve_mb_nick($mb_nick)) alert($msg, "", true, true);
|
||||
// 이름에 한글명 체크를 하지 않는다.
|
||||
//if ($msg = valid_mb_name($mb_name)) alert($msg, "", true, true);
|
||||
if ($msg = valid_mb_nick($mb_nick)) alert($msg, "", true, true);
|
||||
if ($msg = valid_mb_email($mb_email)) alert($msg, "", true, true);
|
||||
if ($msg = prohibit_mb_email($mb_email))alert($msg, "", true, true);
|
||||
|
||||
// 휴대폰 필수입력일 경우 휴대폰번호 유효성 체크
|
||||
if (($config['cf_use_hp'] || $config['cf_cert_hp'] || $config['cf_cert_simple']) && $config['cf_req_hp']) {
|
||||
if ($msg = valid_mb_hp($mb_hp)) alert($msg, "", true, true);
|
||||
}
|
||||
|
||||
if ($w=='') {
|
||||
if ($msg = exist_mb_id($mb_id)) alert($msg);
|
||||
|
||||
if (get_session('ss_check_mb_id') != $mb_id || get_session('ss_check_mb_nick') != $mb_nick || get_session('ss_check_mb_email') != $mb_email) {
|
||||
set_session('ss_check_mb_id', '');
|
||||
set_session('ss_check_mb_nick', '');
|
||||
set_session('ss_check_mb_email', '');
|
||||
|
||||
alert('올바른 방법으로 이용해 주십시오.');
|
||||
}
|
||||
|
||||
// 본인확인 체크
|
||||
if($config['cf_cert_use'] && $config['cf_cert_req']) {
|
||||
$post_cert_no = isset($_POST['cert_no']) ? trim($_POST['cert_no']) : '';
|
||||
if($post_cert_no !== get_session('ss_cert_no') || ! get_session('ss_cert_no'))
|
||||
alert("회원가입을 위해서는 본인확인을 해주셔야 합니다.");
|
||||
}
|
||||
|
||||
if ($config['cf_use_recommend'] && $mb_recommend) {
|
||||
if (!exist_mb_id($mb_recommend))
|
||||
alert("추천인이 존재하지 않습니다.");
|
||||
}
|
||||
|
||||
if (strtolower($mb_id) == strtolower($mb_recommend)) {
|
||||
alert('본인을 추천할 수 없습니다.');
|
||||
}
|
||||
} else {
|
||||
// 자바스크립트로 정보변경이 가능한 버그 수정
|
||||
// 닉네임수정일이 지나지 않았다면
|
||||
if ($member['mb_nick_date'] > date("Y-m-d", G5_SERVER_TIME - ($config['cf_nick_modify'] * 86400)))
|
||||
$mb_nick = $member['mb_nick'];
|
||||
// 회원정보의 메일을 이전 메일로 옮기고 아래에서 비교함
|
||||
$old_email = $member['mb_email'];
|
||||
}
|
||||
|
||||
run_event('register_form_update_valid', $w, $mb_id, $mb_nick, $mb_email);
|
||||
|
||||
if ($msg = exist_mb_nick($mb_nick, $mb_id)) alert($msg, "", true, true);
|
||||
if ($msg = exist_mb_email($mb_email, $mb_id)) alert($msg, "", true, true);
|
||||
}
|
||||
|
||||
// 사용자 코드 실행
|
||||
@include_once($member_skin_path.'/register_form_update.head.skin.php');
|
||||
|
||||
//===============================================================
|
||||
// 본인확인
|
||||
//---------------------------------------------------------------
|
||||
$mb_hp = hyphen_hp_number($mb_hp);
|
||||
if($config['cf_cert_use'] && get_session('ss_cert_type') && get_session('ss_cert_dupinfo')) {
|
||||
// 중복체크
|
||||
$sql = " select mb_id from {$g5['member_table']} where mb_id <> '{$member['mb_id']}' and mb_dupinfo = '".get_session('ss_cert_dupinfo')."' ";
|
||||
$row = sql_fetch($sql);
|
||||
if (!empty($row['mb_id'])) {
|
||||
alert("입력하신 본인확인 정보로 가입된 내역이 존재합니다.");
|
||||
}
|
||||
}
|
||||
|
||||
$sql_certify = '';
|
||||
$md5_cert_no = get_session('ss_cert_no');
|
||||
$cert_type = get_session('ss_cert_type');
|
||||
if ($config['cf_cert_use'] && $cert_type && $md5_cert_no) {
|
||||
// 해시값이 같은 경우에만 본인확인 값을 저장한다.
|
||||
if ($cert_type == 'ipin' && get_session('ss_cert_hash') == md5($mb_name.$cert_type.get_session('ss_cert_birth').$md5_cert_no)) { // 아이핀일때 hash 값 체크 hp미포함
|
||||
$sql_certify .= " , mb_hp = '{$mb_hp}' ";
|
||||
$sql_certify .= " , mb_certify = '{$cert_type}' ";
|
||||
$sql_certify .= " , mb_adult = '".get_session('ss_cert_adult')."' ";
|
||||
$sql_certify .= " , mb_birth = '".get_session('ss_cert_birth')."' ";
|
||||
$sql_certify .= " , mb_sex = '".get_session('ss_cert_sex')."' ";
|
||||
$sql_certify .= " , mb_dupinfo = '".get_session('ss_cert_dupinfo')."' ";
|
||||
if($w == 'u')
|
||||
$sql_certify .= " , mb_name = '{$mb_name}' ";
|
||||
} else if($cert_type != 'ipin' && get_session('ss_cert_hash') == md5($mb_name.$cert_type.get_session('ss_cert_birth').$mb_hp.$md5_cert_no)) { // 간편인증, 휴대폰일때 hash 값 체크 hp포함
|
||||
$sql_certify .= " , mb_hp = '{$mb_hp}' ";
|
||||
$sql_certify .= " , mb_certify = '{$cert_type}' ";
|
||||
$sql_certify .= " , mb_adult = '".get_session('ss_cert_adult')."' ";
|
||||
$sql_certify .= " , mb_birth = '".get_session('ss_cert_birth')."' ";
|
||||
$sql_certify .= " , mb_sex = '".get_session('ss_cert_sex')."' ";
|
||||
$sql_certify .= " , mb_dupinfo = '".get_session('ss_cert_dupinfo')."' ";
|
||||
if($w == 'u')
|
||||
$sql_certify .= " , mb_name = '{$mb_name}' ";
|
||||
}else {
|
||||
alert('본인인증된 정보와 입력된 회원정보가 일치하지않습니다. 다시시도 해주세요');
|
||||
}
|
||||
} else {
|
||||
if (get_session("ss_reg_mb_name") != $mb_name || get_session("ss_reg_mb_hp") != $mb_hp) {
|
||||
$sql_certify .= " , mb_hp = '{$mb_hp}' ";
|
||||
$sql_certify .= " , mb_certify = '' ";
|
||||
$sql_certify .= " , mb_adult = 0 ";
|
||||
$sql_certify .= " , mb_birth = '' ";
|
||||
$sql_certify .= " , mb_sex = '' ";
|
||||
}
|
||||
}
|
||||
//===============================================================
|
||||
if ($w == '') {
|
||||
$sql = " insert into {$g5['member_table']}
|
||||
set mb_id = '{$mb_id}',
|
||||
mb_password = '".get_encrypt_string($mb_password)."',
|
||||
mb_name = '{$mb_name}',
|
||||
mb_nick = '{$mb_nick}',
|
||||
mb_nick_date = '".G5_TIME_YMD."',
|
||||
mb_email = '{$mb_email}',
|
||||
mb_homepage = '{$mb_homepage}',
|
||||
mb_tel = '{$mb_tel}',
|
||||
mb_zip1 = '{$mb_zip1}',
|
||||
mb_zip2 = '{$mb_zip2}',
|
||||
mb_addr1 = '{$mb_addr1}',
|
||||
mb_addr2 = '{$mb_addr2}',
|
||||
mb_addr3 = '{$mb_addr3}',
|
||||
mb_addr_jibeon = '{$mb_addr_jibeon}',
|
||||
mb_signature = '{$mb_signature}',
|
||||
mb_profile = '{$mb_profile}',
|
||||
mb_today_login = '".G5_TIME_YMDHIS."',
|
||||
mb_datetime = '".G5_TIME_YMDHIS."',
|
||||
mb_ip = '{$_SERVER['REMOTE_ADDR']}',
|
||||
mb_level = '{$config['cf_register_level']}',
|
||||
mb_recommend = '{$mb_recommend}',
|
||||
mb_login_ip = '{$_SERVER['REMOTE_ADDR']}',
|
||||
mb_mailling = '{$mb_mailling}',
|
||||
mb_sms = '{$mb_sms}',
|
||||
mb_open = '{$mb_open}',
|
||||
mb_open_date = '".G5_TIME_YMD."',
|
||||
mb_1 = '{$mb_1}',
|
||||
mb_2 = '{$mb_2}',
|
||||
mb_3 = '{$mb_3}',
|
||||
mb_4 = '{$mb_4}',
|
||||
mb_5 = '{$mb_5}',
|
||||
mb_6 = '{$mb_6}',
|
||||
mb_7 = '{$mb_7}',
|
||||
mb_8 = '{$mb_8}',
|
||||
mb_9 = '{$mb_9}',
|
||||
mb_10 = '{$mb_10}'
|
||||
{$sql_certify} ";
|
||||
|
||||
// 이메일 인증을 사용하지 않는다면 이메일 인증시간을 바로 넣는다
|
||||
if (!$config['cf_use_email_certify'])
|
||||
$sql .= " , mb_email_certify = '".G5_TIME_YMDHIS."' ";
|
||||
sql_query($sql);
|
||||
|
||||
// 회원가입 포인트 부여
|
||||
insert_point($mb_id, $config['cf_register_point'], '회원가입 축하', '@member', $mb_id, '회원가입');
|
||||
|
||||
// 추천인에게 포인트 부여
|
||||
if ($config['cf_use_recommend'] && $mb_recommend)
|
||||
insert_point($mb_recommend, $config['cf_recommend_point'], $mb_id.'의 추천인', '@member', $mb_recommend, $mb_id.' 추천');
|
||||
|
||||
// 회원님께 메일 발송
|
||||
if ($config['cf_email_mb_member']) {
|
||||
$subject = '['.$config['cf_title'].'] 회원가입을 축하드립니다.';
|
||||
|
||||
// 어떠한 회원정보도 포함되지 않은 일회용 난수를 생성하여 인증에 사용
|
||||
if ($config['cf_use_email_certify']) {
|
||||
$mb_md5 = md5(pack('V*', rand(), rand(), rand(), rand()));
|
||||
sql_query(" update {$g5['member_table']} set mb_email_certify2 = '$mb_md5' where mb_id = '$mb_id' ");
|
||||
$certify_href = G5_BBS_URL.'/email_certify.php?mb_id='.$mb_id.'&mb_md5='.$mb_md5;
|
||||
}
|
||||
|
||||
ob_start();
|
||||
include_once ('./register_form_update_mail1.php');
|
||||
$content = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$content = run_replace('register_form_update_mail_mb_content', $content, $mb_id);
|
||||
|
||||
mailer($config['cf_admin_email_name'], $config['cf_admin_email'], $mb_email, $subject, $content, 1);
|
||||
|
||||
run_event('register_form_update_send_mb_mail', $config['cf_admin_email_name'], $config['cf_admin_email'], $mb_email, $subject, $content);
|
||||
|
||||
// 메일인증을 사용하는 경우 가입메일에 인증 url이 있으므로 인증메일을 다시 발송되지 않도록 함
|
||||
if($config['cf_use_email_certify'])
|
||||
$old_email = $mb_email;
|
||||
}
|
||||
|
||||
// 최고관리자님께 메일 발송
|
||||
if ($config['cf_email_mb_super_admin']) {
|
||||
$subject = run_replace('register_form_update_mail_admin_subject', '['.$config['cf_title'].'] '.$mb_nick .' 님께서 회원으로 가입하셨습니다.', $mb_id, $mb_nick);
|
||||
|
||||
ob_start();
|
||||
include_once ('./register_form_update_mail2.php');
|
||||
$content = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$content = run_replace('register_form_update_mail_admin_content', $content, $mb_id);
|
||||
|
||||
mailer($mb_nick, $mb_email, $config['cf_admin_email'], $subject, $content, 1);
|
||||
|
||||
run_event('register_form_update_send_admin_mail', $mb_nick, $mb_email, $config['cf_admin_email'], $subject, $content);
|
||||
}
|
||||
|
||||
// 메일인증 사용하지 않는 경우에만 로그인
|
||||
if (!$config['cf_use_email_certify']) {
|
||||
set_session('ss_mb_id', $mb_id);
|
||||
if(function_exists('update_auth_session_token')) update_auth_session_token(G5_TIME_YMDHIS);
|
||||
}
|
||||
|
||||
set_session('ss_mb_reg', $mb_id);
|
||||
|
||||
if($cert_type == 'ipin' && get_session('ss_cert_hash') == md5($mb_name.$cert_type.get_session('ss_cert_birth').$md5_cert_no)) { // 아이핀일때 hash 값 체크 hp미포함)
|
||||
insert_member_cert_history($mb_id, $mb_name, $mb_hp, get_session('ss_cert_birth'), get_session('ss_cert_type') ); // 본인인증 후 정보 수정 시 내역 기록
|
||||
}else if($cert_type != 'ipin' && get_session('ss_cert_hash') == md5($mb_name.$cert_type.get_session('ss_cert_birth').$mb_hp.$md5_cert_no)) { // 간편인증, 휴대폰일때 hash 값 체크 hp포함
|
||||
insert_member_cert_history($mb_id, $mb_name, $mb_hp, get_session('ss_cert_birth'), get_session('ss_cert_type') ); // 본인인증 후 정보 수정 시 내역 기록
|
||||
}
|
||||
|
||||
} else if ($w == 'u') {
|
||||
if (!trim(get_session('ss_mb_id')))
|
||||
alert('로그인 되어 있지 않습니다.');
|
||||
|
||||
if (trim($_POST['mb_id']) != $mb_id)
|
||||
alert("로그인된 정보와 수정하려는 정보가 틀리므로 수정할 수 없습니다.\\n만약 올바르지 않은 방법을 사용하신다면 바로 중지하여 주십시오.");
|
||||
|
||||
$sql_password = "";
|
||||
if ($mb_password)
|
||||
$sql_password = " , mb_password = '".get_encrypt_string($mb_password)."' ";
|
||||
|
||||
$sql_nick_date = "";
|
||||
if ($mb_nick_default != $mb_nick)
|
||||
$sql_nick_date = " , mb_nick_date = '".G5_TIME_YMD."' ";
|
||||
|
||||
$sql_open_date = "";
|
||||
if (isset($mb_open_default) && $mb_open_default != $mb_open)
|
||||
$sql_open_date = " , mb_open_date = '".G5_TIME_YMD."' ";
|
||||
|
||||
// 이전 메일주소와 수정한 메일주소가 틀리다면 인증을 다시 해야하므로 값을 삭제
|
||||
$sql_email_certify = '';
|
||||
if ($old_email != $mb_email && $config['cf_use_email_certify'])
|
||||
$sql_email_certify = " , mb_email_certify = '' ";
|
||||
|
||||
$sql = " update {$g5['member_table']}
|
||||
set mb_nick = '{$mb_nick}',
|
||||
mb_mailling = '{$mb_mailling}',
|
||||
mb_sms = '{$mb_sms}',
|
||||
mb_open = '{$mb_open}',
|
||||
mb_email = '{$mb_email}',
|
||||
mb_homepage = '{$mb_homepage}',
|
||||
mb_tel = '{$mb_tel}',
|
||||
mb_zip1 = '{$mb_zip1}',
|
||||
mb_zip2 = '{$mb_zip2}',
|
||||
mb_addr1 = '{$mb_addr1}',
|
||||
mb_addr2 = '{$mb_addr2}',
|
||||
mb_addr3 = '{$mb_addr3}',
|
||||
mb_addr_jibeon = '{$mb_addr_jibeon}',
|
||||
mb_signature = '{$mb_signature}',
|
||||
mb_profile = '{$mb_profile}',
|
||||
mb_1 = '{$mb_1}',
|
||||
mb_2 = '{$mb_2}',
|
||||
mb_3 = '{$mb_3}',
|
||||
mb_4 = '{$mb_4}',
|
||||
mb_5 = '{$mb_5}',
|
||||
mb_6 = '{$mb_6}',
|
||||
mb_7 = '{$mb_7}',
|
||||
mb_8 = '{$mb_8}',
|
||||
mb_9 = '{$mb_9}',
|
||||
mb_10 = '{$mb_10}'
|
||||
{$sql_password}
|
||||
{$sql_nick_date}
|
||||
{$sql_open_date}
|
||||
{$sql_email_certify}
|
||||
{$sql_certify}
|
||||
where mb_id = '$mb_id' ";
|
||||
sql_query($sql);
|
||||
|
||||
if($cert_type == 'ipin' && get_session('ss_cert_hash') == md5($mb_name.$cert_type.get_session('ss_cert_birth').$md5_cert_no)) { // 아이핀일때 hash 값 체크 hp미포함)
|
||||
insert_member_cert_history($mb_id, $mb_name, $mb_hp, get_session('ss_cert_birth'), get_session('ss_cert_type') ); // 본인인증 후 정보 수정 시 내역 기록
|
||||
}else if($cert_type != 'ipin' && get_session('ss_cert_hash') == md5($mb_name.$cert_type.get_session('ss_cert_birth').$mb_hp.$md5_cert_no)) { // 간편인증, 휴대폰일때 hash 값 체크 hp포함
|
||||
insert_member_cert_history($mb_id, $mb_name, $mb_hp, get_session('ss_cert_birth'), get_session('ss_cert_type') ); // 본인인증 후 정보 수정 시 내역 기록
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 회원 아이콘
|
||||
$mb_dir = G5_DATA_PATH.'/member/'.substr($mb_id,0,2);
|
||||
|
||||
// 아이콘 삭제
|
||||
if (isset($_POST['del_mb_icon'])) {
|
||||
@unlink($mb_dir.'/'.get_mb_icon_name($mb_id).'.gif');
|
||||
}
|
||||
|
||||
$msg = "";
|
||||
|
||||
// 아이콘 업로드
|
||||
$mb_icon = '';
|
||||
$image_regex = "/(\.(gif|jpe?g|png))$/i";
|
||||
$mb_icon_img = get_mb_icon_name($mb_id).'.gif';
|
||||
|
||||
if (isset($_FILES['mb_icon']) && is_uploaded_file($_FILES['mb_icon']['tmp_name'])) {
|
||||
if (preg_match($image_regex, $_FILES['mb_icon']['name'])) {
|
||||
// 아이콘 용량이 설정값보다 이하만 업로드 가능
|
||||
if ($_FILES['mb_icon']['size'] <= $config['cf_member_icon_size']) {
|
||||
@mkdir($mb_dir, G5_DIR_PERMISSION);
|
||||
@chmod($mb_dir, G5_DIR_PERMISSION);
|
||||
$dest_path = $mb_dir.'/'.$mb_icon_img;
|
||||
move_uploaded_file($_FILES['mb_icon']['tmp_name'], $dest_path);
|
||||
chmod($dest_path, G5_FILE_PERMISSION);
|
||||
if (file_exists($dest_path)) {
|
||||
//=================================================================\
|
||||
// 090714
|
||||
// gif 파일에 악성코드를 심어 업로드 하는 경우를 방지
|
||||
// 에러메세지는 출력하지 않는다.
|
||||
//-----------------------------------------------------------------
|
||||
$size = @getimagesize($dest_path);
|
||||
if (!($size[2] === 1 || $size[2] === 2 || $size[2] === 3)) { // jpg, gif, png 파일이 아니면 올라간 이미지를 삭제한다.
|
||||
@unlink($dest_path);
|
||||
} else if ($size[0] > $config['cf_member_icon_width'] || $size[1] > $config['cf_member_icon_height']) {
|
||||
$thumb = null;
|
||||
if($size[2] === 2 || $size[2] === 3) {
|
||||
//jpg 또는 png 파일 적용
|
||||
$thumb = thumbnail($mb_icon_img, $mb_dir, $mb_dir, $config['cf_member_icon_width'], $config['cf_member_icon_height'], true, true);
|
||||
if($thumb) {
|
||||
@unlink($dest_path);
|
||||
rename($mb_dir.'/'.$thumb, $dest_path);
|
||||
}
|
||||
}
|
||||
if( !$thumb ){
|
||||
// 아이콘의 폭 또는 높이가 설정값 보다 크다면 이미 업로드 된 아이콘 삭제
|
||||
@unlink($dest_path);
|
||||
}
|
||||
}
|
||||
//=================================================================\
|
||||
}
|
||||
} else {
|
||||
$msg .= '회원아이콘을 '.number_format($config['cf_member_icon_size']).'바이트 이하로 업로드 해주십시오.';
|
||||
}
|
||||
|
||||
} else {
|
||||
$msg .= $_FILES['mb_icon']['name'].'은(는) 이미지 파일이 아닙니다.';
|
||||
}
|
||||
}
|
||||
|
||||
// 회원 프로필 이미지
|
||||
if( $config['cf_member_img_size'] && $config['cf_member_img_width'] && $config['cf_member_img_height'] ){
|
||||
$mb_tmp_dir = G5_DATA_PATH.'/member_image/';
|
||||
$mb_dir = $mb_tmp_dir.substr($mb_id,0,2);
|
||||
if( !is_dir($mb_tmp_dir) ){
|
||||
@mkdir($mb_tmp_dir, G5_DIR_PERMISSION);
|
||||
@chmod($mb_tmp_dir, G5_DIR_PERMISSION);
|
||||
}
|
||||
|
||||
// 아이콘 삭제
|
||||
if (isset($_POST['del_mb_img'])) {
|
||||
@unlink($mb_dir.'/'.$mb_icon_img);
|
||||
}
|
||||
|
||||
// 회원 프로필 이미지 업로드
|
||||
$mb_img = '';
|
||||
if (isset($_FILES['mb_img']) && is_uploaded_file($_FILES['mb_img']['tmp_name'])) {
|
||||
|
||||
$msg = $msg ? $msg."\\r\\n" : '';
|
||||
|
||||
if (preg_match($image_regex, $_FILES['mb_img']['name'])) {
|
||||
// 아이콘 용량이 설정값보다 이하만 업로드 가능
|
||||
if ($_FILES['mb_img']['size'] <= $config['cf_member_img_size']) {
|
||||
@mkdir($mb_dir, G5_DIR_PERMISSION);
|
||||
@chmod($mb_dir, G5_DIR_PERMISSION);
|
||||
$dest_path = $mb_dir.'/'.$mb_icon_img;
|
||||
move_uploaded_file($_FILES['mb_img']['tmp_name'], $dest_path);
|
||||
chmod($dest_path, G5_FILE_PERMISSION);
|
||||
if (file_exists($dest_path)) {
|
||||
$size = @getimagesize($dest_path);
|
||||
if (!($size[2] === 1 || $size[2] === 2 || $size[2] === 3)) { // gif jpg png 파일이 아니면 올라간 이미지를 삭제한다.
|
||||
@unlink($dest_path);
|
||||
} else if ($size[0] > $config['cf_member_img_width'] || $size[1] > $config['cf_member_img_height']) {
|
||||
$thumb = null;
|
||||
if($size[2] === 2 || $size[2] === 3) {
|
||||
//jpg 또는 png 파일 적용
|
||||
$thumb = thumbnail($mb_icon_img, $mb_dir, $mb_dir, $config['cf_member_img_width'], $config['cf_member_img_height'], true, true);
|
||||
if($thumb) {
|
||||
@unlink($dest_path);
|
||||
rename($mb_dir.'/'.$thumb, $dest_path);
|
||||
}
|
||||
}
|
||||
if( !$thumb ){
|
||||
// 아이콘의 폭 또는 높이가 설정값 보다 크다면 이미 업로드 된 아이콘 삭제
|
||||
@unlink($dest_path);
|
||||
}
|
||||
}
|
||||
//=================================================================\
|
||||
}
|
||||
} else {
|
||||
$msg .= '회원이미지을 '.number_format($config['cf_member_img_size']).'바이트 이하로 업로드 해주십시오.';
|
||||
}
|
||||
|
||||
} else {
|
||||
$msg .= $_FILES['mb_img']['name'].'은(는) gif/jpg 파일이 아닙니다.';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 인증메일 발송
|
||||
if ($config['cf_use_email_certify'] && $old_email != $mb_email) {
|
||||
$subject = '['.$config['cf_title'].'] 인증확인 메일입니다.';
|
||||
|
||||
// 어떠한 회원정보도 포함되지 않은 일회용 난수를 생성하여 인증에 사용
|
||||
$mb_md5 = md5(pack('V*', rand(), rand(), rand(), rand()));
|
||||
|
||||
sql_query(" update {$g5['member_table']} set mb_email_certify2 = '$mb_md5' where mb_id = '$mb_id' ");
|
||||
|
||||
$certify_href = G5_BBS_URL.'/email_certify.php?mb_id='.$mb_id.'&mb_md5='.$mb_md5;
|
||||
|
||||
ob_start();
|
||||
include_once ('./register_form_update_mail3.php');
|
||||
$content = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$content = run_replace('register_form_update_mail_certify_content', $content, $mb_id);
|
||||
|
||||
mailer($config['cf_admin_email_name'], $config['cf_admin_email'], $mb_email, $subject, $content, 1);
|
||||
|
||||
run_event('register_form_update_send_certify_mail', $config['cf_admin_email_name'], $config['cf_admin_email'], $mb_email, $subject, $content);
|
||||
}
|
||||
|
||||
|
||||
// 신규회원 쿠폰발생
|
||||
if($w == '' && isset($default['de_member_reg_coupon_use']) && $default['de_member_reg_coupon_use'] && $default['de_member_reg_coupon_term'] > 0 && $default['de_member_reg_coupon_price'] > 0) {
|
||||
$j = 0;
|
||||
$create_coupon = false;
|
||||
|
||||
do {
|
||||
$cp_id = get_coupon_id();
|
||||
|
||||
$sql3 = " select count(*) as cnt from {$g5['g5_shop_coupon_table']} where cp_id = '$cp_id' ";
|
||||
$row3 = sql_fetch($sql3);
|
||||
|
||||
if(!$row3['cnt']) {
|
||||
$create_coupon = true;
|
||||
break;
|
||||
} else {
|
||||
if($j > 20)
|
||||
break;
|
||||
}
|
||||
} while(1);
|
||||
|
||||
if($create_coupon) {
|
||||
$cp_subject = '신규 회원가입 축하 쿠폰';
|
||||
$cp_method = 2;
|
||||
$cp_target = '';
|
||||
$cp_start = G5_TIME_YMD;
|
||||
$cp_end = date("Y-m-d", (G5_SERVER_TIME + (86400 * ((int)$default['de_member_reg_coupon_term'] - 1))));
|
||||
$cp_type = 0;
|
||||
$cp_price = $default['de_member_reg_coupon_price'];
|
||||
$cp_trunc = 1;
|
||||
$cp_minimum = $default['de_member_reg_coupon_minimum'];
|
||||
$cp_maximum = 0;
|
||||
|
||||
$sql = " INSERT INTO {$g5['g5_shop_coupon_table']}
|
||||
( cp_id, cp_subject, cp_method, cp_target, mb_id, cp_start, cp_end, cp_type, cp_price, cp_trunc, cp_minimum, cp_maximum, cp_datetime )
|
||||
VALUES
|
||||
( '$cp_id', '$cp_subject', '$cp_method', '$cp_target', '$mb_id', '$cp_start', '$cp_end', '$cp_type', '$cp_price', '$cp_trunc', '$cp_minimum', '$cp_maximum', '".G5_TIME_YMDHIS."' ) ";
|
||||
|
||||
$res = sql_query($sql, false);
|
||||
|
||||
if($res)
|
||||
set_session('ss_member_reg_coupon', 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 사용자 코드 실행
|
||||
@include_once ($member_skin_path.'/register_form_update.tail.skin.php');
|
||||
|
||||
if(isset($_SESSION['ss_cert_type'])) unset($_SESSION['ss_cert_type']);
|
||||
if(isset($_SESSION['ss_cert_no'])) unset($_SESSION['ss_cert_no']);
|
||||
if(isset($_SESSION['ss_cert_hash'])) unset($_SESSION['ss_cert_hash']);
|
||||
if(isset($_SESSION['ss_cert_birth'])) unset($_SESSION['ss_cert_birth']);
|
||||
if(isset($_SESSION['ss_cert_adult'])) unset($_SESSION['ss_cert_adult']);
|
||||
|
||||
if ($msg)
|
||||
echo '<script>alert(\''.$msg.'\');</script>';
|
||||
|
||||
run_event('register_form_update_after', $mb_id, $w);
|
||||
|
||||
if ($w == '') {
|
||||
goto_url(G5_HTTP_BBS_URL.'/register_result.php');
|
||||
} else if ($w == 'u') {
|
||||
$row = sql_fetch(" select mb_password from {$g5['member_table']} where mb_id = '{$member['mb_id']}' ");
|
||||
$tmp_password = $row['mb_password'];
|
||||
|
||||
if ($old_email != $mb_email && $config['cf_use_email_certify']) {
|
||||
set_session('ss_mb_id', '');
|
||||
alert('회원 정보가 수정 되었습니다.\n\nE-mail 주소가 변경되었으므로 다시 인증하셔야 합니다.', G5_URL);
|
||||
} else {
|
||||
echo '
|
||||
<!doctype html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>회원정보수정</title>
|
||||
<body>
|
||||
<form name="fregisterupdate" method="post" action="'.G5_HTTP_BBS_URL.'/register_form.php">
|
||||
<input type="hidden" name="w" value="u">
|
||||
<input type="hidden" name="mb_id" value="'.$mb_id.'">
|
||||
<input type="hidden" name="mb_password" value="'.$tmp_password.'">
|
||||
<input type="hidden" name="is_update" value="1">
|
||||
</form>
|
||||
<script>
|
||||
alert("회원 정보가 수정 되었습니다.");
|
||||
document.fregisterupdate.submit();
|
||||
</script>
|
||||
</body>
|
||||
</html>';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
// 회원가입축하 메일 (회원님께 발송)
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
?>
|
||||
|
||||
<!doctype html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>회원가입 축하 메일</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div style="margin:30px auto;width:600px;border:10px solid #f7f7f7">
|
||||
<div style="border:1px solid #dedede">
|
||||
<h1 style="padding:30px 30px 0;background:#f7f7f7;color:#555;font-size:1.4em">
|
||||
회원가입을 축하합니다.
|
||||
</h1>
|
||||
<span style="display:block;padding:10px 30px 30px;background:#f7f7f7;text-align:right">
|
||||
<a href="<?php echo G5_URL ?>" target="_blank"><?php echo $config['cf_title'] ?></a>
|
||||
</span>
|
||||
<p style="margin:20px 0 0;padding:30px 30px 50px;min-height:200px;height:auto !important;height:200px;border-bottom:1px solid #eee">
|
||||
<b><?php echo $mb_name ?></b> 님의 회원가입을 진심으로 축하합니다.<br>
|
||||
회원님의 성원에 보답하고자 더욱 더 열심히 하겠습니다.<br>
|
||||
<?php if ($config['cf_use_email_certify']) { ?>아래의 <strong>메일인증</strong>을 클릭하시면 회원가입이 완료됩니다.<br><?php } ?>
|
||||
감사합니다.
|
||||
</p>
|
||||
|
||||
<?php if ($config['cf_use_email_certify']) { ?>
|
||||
<a href="<?php echo $certify_href ?>" target="_blank" style="display:block;padding:30px 0;background:#484848;color:#fff;text-decoration:none;text-align:center">메일인증</a>
|
||||
<?php } else { ?>
|
||||
<a href="<?php echo G5_URL ?>" target="_blank" style="display:block;padding:30px 0;background:#484848;color:#fff;text-decoration:none;text-align:center">사이트바로가기</a>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
// 회원가입 메일 (관리자 메일로 발송)
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
?>
|
||||
|
||||
<!doctype html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>회원가입 알림 메일</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div style="margin:30px auto;width:600px;border:10px solid #f7f7f7">
|
||||
<div style="border:1px solid #dedede">
|
||||
<h1 style="padding:30px 30px 0;background:#f7f7f7;color:#555;font-size:1.4em">
|
||||
회원가입 알림 메일
|
||||
</h1>
|
||||
<span style="display:block;padding:10px 30px 30px;background:#f7f7f7;text-align:right">
|
||||
<a href="<?php echo G5_URL ?>" target="_blank"><?php echo $config['cf_title'] ?></a>
|
||||
</span>
|
||||
<p style="margin:20px 0 0;padding:30px 30px 50px;min-height:200px;height:auto !important;height:200px;border-bottom:1px solid #eee">
|
||||
<b><?php echo $mb_name ?></b> 님께서 회원가입 하셨습니다.<br>
|
||||
회원 아이디 : <b><?php echo $mb_id ?></b><br>
|
||||
회원 이름 : <?php echo $mb_name ?><br>
|
||||
회원 닉네임 : <?php echo $mb_nick ?><br>
|
||||
추천인아이디 : <?php echo $mb_recommend ?>
|
||||
</p>
|
||||
<a href="<?php echo G5_ADMIN_URL ?>/member_form.php?w=u&mb_id=<?php echo $mb_id ?>" style="display:block;padding:30px 0;background:#484848;color:#fff;text-decoration:none;text-align:center">관리자에서 회원정보 확인하기</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
// E-mail 수정시 인증 메일 (회원님께 발송)
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
?>
|
||||
|
||||
<!doctype html>
|
||||
<html lang="ko">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>회원 인증 메일</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div style="margin:30px auto;width:600px;border:10px solid #f7f7f7">
|
||||
<div style="border:1px solid #dedede">
|
||||
<h1 style="padding:30px 30px 0;background:#f7f7f7;color:#555;font-size:1.4em">
|
||||
회원 인증 메일입니다.
|
||||
</h1>
|
||||
<span style="display:block;padding:10px 30px 30px;background:#f7f7f7;text-align:right">
|
||||
<a href="<?php echo G5_URL ?>" target="_blank"><?php echo $config['cf_title'] ?></a>
|
||||
</span>
|
||||
<p style="margin:20px 0 0;padding:30px 30px 50px;min-height:200px;height:auto !important;height:200px;border-bottom:1px solid #eee">
|
||||
<?php if($w == 'u') { ?>
|
||||
<b><?php echo $mb_name ?></b> 님의 E-mail 주소가 변경되었습니다.<br><br>
|
||||
<?php } ?>
|
||||
|
||||
아래의 주소를 클릭하시면 인증이 완료됩니다.<br>
|
||||
<a href="<?php echo $certify_href ?>" target="_blank"><b><?php echo $certify_href ?></b></a><br><br>
|
||||
|
||||
회원님의 성원에 보답하고자 더욱 더 열심히 하겠습니다.<br>
|
||||
감사합니다.
|
||||
</p>
|
||||
<a href="<?php echo G5_BBS_URL ?>/login.php" target="_blank" style="display:block;padding:30px 0;background:#484848;color:#fff;text-decoration:none;text-align:center"><?php echo $config['cf_title'] ?> 로그인</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
if (isset($_SESSION['ss_mb_reg']))
|
||||
$mb = get_member($_SESSION['ss_mb_reg']);
|
||||
|
||||
// 회원정보가 없다면 초기 페이지로 이동
|
||||
if (!(isset($mb['mb_id']) && $mb['mb_id']))
|
||||
goto_url(G5_URL);
|
||||
|
||||
$g5['title'] = '회원가입 완료';
|
||||
include_once('./_head.sub.php');
|
||||
include_once($member_skin_path.'/register_result.skin.php');
|
||||
include_once('./_tail.sub.php');
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
// 특수문자 변환
|
||||
function specialchars_replace($str, $len=0) {
|
||||
if ($len) {
|
||||
$str = substr($str, 0, $len);
|
||||
}
|
||||
|
||||
$str = str_replace(array("&", "<", ">"), array("&", "<", ">"), $str);
|
||||
|
||||
/*
|
||||
$str = preg_replace("/&/", "&", $str);
|
||||
$str = preg_replace("/</", "<", $str);
|
||||
$str = preg_replace("/>/", ">", $str);
|
||||
*/
|
||||
|
||||
return $str;
|
||||
}
|
||||
|
||||
$sql = " select gr_id, bo_subject, bo_page_rows, bo_read_level, bo_use_rss_view from {$g5['board_table']} where bo_table = '$bo_table' ";
|
||||
$row = sql_fetch($sql);
|
||||
$subj2 = specialchars_replace($row['bo_subject'], 255);
|
||||
$lines = $row['bo_page_rows'];
|
||||
|
||||
// 비회원 읽기가 가능한 게시판만 RSS 지원
|
||||
if ($row['bo_read_level'] >= 2) {
|
||||
echo '비회원 읽기가 가능한 게시판만 RSS 지원합니다.';
|
||||
exit;
|
||||
}
|
||||
|
||||
// RSS 사용 체크
|
||||
if (!$row['bo_use_rss_view']) {
|
||||
echo 'RSS 보기가 금지되어 있습니다.';
|
||||
exit;
|
||||
}
|
||||
|
||||
header('Content-type: text/xml');
|
||||
header('Cache-Control: no-cache, must-revalidate');
|
||||
header('Pragma: no-cache');
|
||||
|
||||
$sql = " select gr_subject from {$g5['group_table']} where gr_id = '{$row['gr_id']}' ";
|
||||
$row = sql_fetch($sql);
|
||||
$subj1 = specialchars_replace($row['gr_subject'], 255);
|
||||
|
||||
echo '<?xml version="1.0" encoding="utf-8" ?>'."\n";
|
||||
?>
|
||||
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<channel>
|
||||
<title><?php echo specialchars_replace($config['cf_title'].' > '.$subj1.' > '.$subj2); ?></title>
|
||||
<link><?php echo specialchars_replace(get_pretty_url($bo_table)); ?></link>
|
||||
<language>ko</language>
|
||||
<?php
|
||||
$sql = " select wr_id, wr_subject, wr_content, wr_name, wr_datetime, wr_option
|
||||
from {$g5['write_prefix']}$bo_table
|
||||
where wr_is_comment = 0
|
||||
and wr_option not like '%secret%'
|
||||
order by wr_num, wr_reply limit 0, $lines ";
|
||||
$result = sql_query($sql);
|
||||
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
$file = '';
|
||||
|
||||
if (strstr($row['wr_option'], 'html'))
|
||||
$html = 1;
|
||||
else
|
||||
$html = 0;
|
||||
|
||||
if ($i === 0) {
|
||||
echo '<description>'. specialchars_replace($subj2). ' ('. $row['wr_datetime'] .')</description>'.PHP_EOL;
|
||||
}
|
||||
?>
|
||||
|
||||
<item>
|
||||
<title><?php echo specialchars_replace($row['wr_subject']); ?></title>
|
||||
<link><?php echo specialchars_replace(get_pretty_url($bo_table, $row['wr_id'])); ?></link>
|
||||
<description><![CDATA[<?php echo $file ?><?php echo conv_content($row['wr_content'], $html) ?>]]></description>
|
||||
<dc:creator><?php echo specialchars_replace($row['wr_name']) ?></dc:creator>
|
||||
<?php
|
||||
$date = $row['wr_datetime'];
|
||||
// rss 리더 스킨으로 호출하면 날짜가 제대로 표시되지 않음
|
||||
$date = substr($date,0,10) . "T" . substr($date,11,8) . "+09:00";
|
||||
//$date = date('r', strtotime($date)); // 구글 서치 콘솔에서 오류가 난다
|
||||
?>
|
||||
<dc:date><?php echo $date ?></dc:date>
|
||||
</item>
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
echo '</channel>'."\n";
|
||||
echo '</rss>'."\n";
|
||||
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
if (!$is_member)
|
||||
alert_close('회원만 조회하실 수 있습니다.');
|
||||
|
||||
$g5['title'] = get_text($member['mb_nick']).'님의 스크랩';
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
$sql_common = " from {$g5['scrap_table']} where mb_id = '{$member['mb_id']}' ";
|
||||
$sql_order = " order by ms_id desc ";
|
||||
|
||||
$sql = " select count(*) as cnt $sql_common ";
|
||||
$row = sql_fetch($sql);
|
||||
$total_count = $row['cnt'];
|
||||
|
||||
$rows = $config['cf_page_rows'];
|
||||
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
|
||||
if ($page < 1) $page = 1; // 페이지가 없으면 첫 페이지 (1 페이지)
|
||||
$from_record = ($page - 1) * $rows; // 시작 열을 구함
|
||||
|
||||
$list = array();
|
||||
|
||||
$sql = " select *
|
||||
$sql_common
|
||||
$sql_order
|
||||
limit $from_record, $rows ";
|
||||
$result = sql_query($sql);
|
||||
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
|
||||
$list[$i] = $row;
|
||||
|
||||
// 순차적인 번호 (순번)
|
||||
$num = $total_count - ($page - 1) * $rows - $i;
|
||||
|
||||
// 게시판 제목
|
||||
$sql2 = " select bo_subject from {$g5['board_table']} where bo_table = '{$row['bo_table']}' ";
|
||||
$row2 = sql_fetch($sql2);
|
||||
if (!$row2['bo_subject']) $row2['bo_subject'] = '[게시판 없음]';
|
||||
|
||||
// 게시물 제목
|
||||
$tmp_write_table = $g5['write_prefix'] . $row['bo_table'];
|
||||
$sql3 = " select wr_subject from $tmp_write_table where wr_id = '{$row['wr_id']}' ";
|
||||
$row3 = sql_fetch($sql3, FALSE);
|
||||
$subject = get_text(cut_str($row3['wr_subject'], 100));
|
||||
if (!$row3['wr_subject'])
|
||||
$row3['wr_subject'] = '[글 없음]';
|
||||
|
||||
$list[$i]['num'] = $num;
|
||||
$list[$i]['opener_href'] = get_pretty_url($row['bo_table']);
|
||||
$list[$i]['opener_href_wr_id'] = get_pretty_url($row['bo_table'], $row['wr_id']);
|
||||
$list[$i]['bo_subject'] = $row2['bo_subject'];
|
||||
$list[$i]['subject'] = $subject;
|
||||
$list[$i]['del_href'] = './scrap_delete.php?ms_id='.$row['ms_id'].'&page='.$page;
|
||||
}
|
||||
|
||||
include_once($member_skin_path.'/scrap.skin.php');
|
||||
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$ms_id = isset($_REQUEST['ms_id']) ? (int) $_REQUEST['ms_id'] : 0;
|
||||
|
||||
if (!$is_member)
|
||||
alert('회원만 이용하실 수 있습니다.');
|
||||
|
||||
$sql = " delete from {$g5['scrap_table']} where mb_id = '{$member['mb_id']}' and ms_id = '$ms_id' ";
|
||||
sql_query($sql);
|
||||
|
||||
$sql = " update `{$g5['member_table']}` set mb_scrap_cnt = '".get_scrap_totals($member['mb_id'])."' where mb_id = '{$member['mb_id']}' ";
|
||||
sql_query($sql);
|
||||
|
||||
goto_url('./scrap.php?page='.$page);
|
||||
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
if ($is_guest) {
|
||||
$href = './login.php?'.$qstr.'&url='.urlencode(get_pretty_url($bo_table, $wr_id));
|
||||
$href2 = str_replace('&', '&', $href);
|
||||
echo <<<HEREDOC
|
||||
<script>
|
||||
alert('회원만 접근 가능합니다.');
|
||||
opener.location.href = '$href2';
|
||||
window.close();
|
||||
</script>
|
||||
<noscript>
|
||||
<p>회원만 접근 가능합니다.</p>
|
||||
<a href="$href">로그인하기</a>
|
||||
</noscript>
|
||||
HEREDOC;
|
||||
exit;
|
||||
}
|
||||
|
||||
echo <<<HEREDOC
|
||||
<script>
|
||||
if (window.name != 'win_scrap') {
|
||||
alert('올바른 방법으로 사용해 주십시오.');
|
||||
window.close();
|
||||
}
|
||||
</script>
|
||||
HEREDOC;
|
||||
|
||||
if ($write['wr_is_comment'])
|
||||
alert_close('코멘트는 스크랩 할 수 없습니다.');
|
||||
|
||||
$sql = " select count(*) as cnt from {$g5['scrap_table']}
|
||||
where mb_id = '{$member['mb_id']}'
|
||||
and bo_table = '$bo_table'
|
||||
and wr_id = '$wr_id' ";
|
||||
$row = sql_fetch($sql);
|
||||
if ($row['cnt']) {
|
||||
|
||||
$back_url = get_pretty_url($bo_table, $wr_id);
|
||||
|
||||
echo <<<HEREDOC
|
||||
<script>
|
||||
if (confirm('이미 스크랩하신 글 입니다.\\n\\n지금 스크랩을 확인하시겠습니까?'))
|
||||
document.location.href = './scrap.php';
|
||||
else
|
||||
window.close();
|
||||
</script>
|
||||
<noscript>
|
||||
<p>이미 스크랩하신 글 입니다.</p>
|
||||
<a href="./scrap.php">스크랩 확인하기</a>
|
||||
<a href="{$back_url}">돌아가기</a>
|
||||
</noscript>
|
||||
HEREDOC;
|
||||
exit;
|
||||
}
|
||||
|
||||
include_once($member_skin_path.'/scrap_popin.skin.php');
|
||||
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
@@ -0,0 +1,118 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
if (!$is_member)
|
||||
{
|
||||
$href = './login.php?'.$qstr.'&url='.urlencode(get_pretty_url($bo_table, $wr_id));
|
||||
echo '<script> alert(\'회원만 접근 가능합니다.\'); top.location.href = \''.str_replace('&', '&', $href).'\'; </script>';
|
||||
exit;
|
||||
}
|
||||
|
||||
// 게시글 존재하는지
|
||||
if(! (isset($write['wr_id']) && $write['wr_id']))
|
||||
alert_close('스크랩하시려는 게시글이 존재하지 않습니다.');
|
||||
|
||||
$sql = " select count(*) as cnt from {$g5['scrap_table']}
|
||||
where mb_id = '{$member['mb_id']}'
|
||||
and bo_table = '$bo_table'
|
||||
and wr_id = '$wr_id' ";
|
||||
$row = sql_fetch($sql);
|
||||
if (isset($row['cnt']) && $row['cnt'])
|
||||
{
|
||||
echo '
|
||||
<script>
|
||||
if (confirm(\'이미 스크랩하신 글 입니다.'."\n\n".'지금 스크랩을 확인하시겠습니까?\'))
|
||||
document.location.href = \'./scrap.php\';
|
||||
else
|
||||
window.close();
|
||||
</script>
|
||||
<noscript>
|
||||
<p>이미 스크랩하신 글 입니다.</p>
|
||||
<a href="./scrap.php">스크랩 확인하기</a>
|
||||
<a href="'.get_pretty_url($bo_table, $wr_id).'">돌아가기</a>
|
||||
</noscript>';
|
||||
exit;
|
||||
}
|
||||
|
||||
$wr_content = isset($_POST['wr_content']) ? trim($_POST['wr_content']) : '';
|
||||
|
||||
// 덧글이 넘어오고 코멘트를 쓸 권한이 있다면
|
||||
if ($wr_content && ($member['mb_level'] >= $board['bo_comment_level']))
|
||||
{
|
||||
$wr = get_write($write_table, $wr_id);
|
||||
// 원글이 존재한다면
|
||||
if (isset($wr['wr_id']) && $wr['wr_id'])
|
||||
{
|
||||
|
||||
// 세션의 시간 검사
|
||||
// 4.00.15 - 댓글 수정시 연속 게시물 등록 메시지로 인한 오류 수정
|
||||
if ($w == 'c' && $_SESSION['ss_datetime'] >= (G5_SERVER_TIME - $config['cf_delay_sec']) && !$is_admin)
|
||||
alert('너무 빠른 시간내에 게시물을 연속해서 올릴 수 없습니다.');
|
||||
|
||||
set_session('ss_datetime', G5_SERVER_TIME);
|
||||
|
||||
$mb_id = $member['mb_id'];
|
||||
$wr_name = addslashes(clean_xss_tags($board['bo_use_name'] ? $member['mb_name'] : $member['mb_nick']));
|
||||
$wr_password = $member['mb_password'];
|
||||
$wr_email = addslashes($member['mb_email']);
|
||||
$wr_homepage = addslashes(clean_xss_tags($member['mb_homepage']));
|
||||
|
||||
$sql = " select max(wr_comment) as max_comment from $write_table
|
||||
where wr_parent = '$wr_id' and wr_is_comment = '1' ";
|
||||
$row = sql_fetch($sql);
|
||||
$row['max_comment'] += 1;
|
||||
|
||||
$sql = " insert into $write_table
|
||||
set ca_name = '{$wr['ca_name']}',
|
||||
wr_option = '',
|
||||
wr_num = '{$wr['wr_num']}',
|
||||
wr_reply = '',
|
||||
wr_parent = '$wr_id',
|
||||
wr_is_comment = '1',
|
||||
wr_comment = '{$row['max_comment']}',
|
||||
wr_content = '$wr_content',
|
||||
mb_id = '$mb_id',
|
||||
wr_password = '$wr_password',
|
||||
wr_name = '$wr_name',
|
||||
wr_email = '$wr_email',
|
||||
wr_homepage = '$wr_homepage',
|
||||
wr_datetime = '".G5_TIME_YMDHIS."',
|
||||
wr_ip = '{$_SERVER['REMOTE_ADDR']}' ";
|
||||
sql_query($sql);
|
||||
|
||||
$comment_id = sql_insert_id();
|
||||
|
||||
// 원글에 코멘트수 증가
|
||||
sql_query(" update $write_table set wr_comment = wr_comment + 1 where wr_id = '$wr_id' ");
|
||||
|
||||
// 새글 INSERT
|
||||
sql_query(" insert into {$g5['board_new_table']} ( bo_table, wr_id, wr_parent, bn_datetime, mb_id ) values ( '$bo_table', '$comment_id', '$wr_id', '".G5_TIME_YMDHIS."', '{$member['mb_id']}' ) ");
|
||||
|
||||
// 코멘트 1 증가
|
||||
sql_query(" update {$g5['board_table']} set bo_count_comment = bo_count_comment + 1 where bo_table = '$bo_table' ");
|
||||
|
||||
// 포인트 부여
|
||||
insert_point($member['mb_id'], $board['bo_comment_point'], "{$board['bo_subject']} {$wr_id}-{$comment_id} 댓글쓰기(스크랩)", $bo_table, $comment_id, '댓글');
|
||||
}
|
||||
}
|
||||
|
||||
$sql = " insert into {$g5['scrap_table']} ( mb_id, bo_table, wr_id, ms_datetime ) values ( '{$member['mb_id']}', '$bo_table', '$wr_id', '".G5_TIME_YMDHIS."' ) ";
|
||||
sql_query($sql);
|
||||
|
||||
$sql = " update `{$g5['member_table']}` set mb_scrap_cnt = '".get_scrap_totals($member['mb_id'])."' where mb_id = '{$member['mb_id']}' ";
|
||||
sql_query($sql);
|
||||
|
||||
delete_cache_latest($bo_table);
|
||||
?>
|
||||
<script>
|
||||
if (confirm("이 글을 스크랩 하였습니다.\n\n지금 스크랩을 확인하시겠습니까?"))
|
||||
document.location.href = "./scrap.php";
|
||||
else
|
||||
window.close();
|
||||
</script>
|
||||
<noscript>
|
||||
<p>이 글을 스크랩 하였습니다.</p>
|
||||
<a href="./scrap.php">스크랩 확인하기</a>
|
||||
</noscript>
|
||||
+244
@@ -0,0 +1,244 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$g5['title'] = '전체검색 결과';
|
||||
include_once('./_head.php');
|
||||
|
||||
$search_table = Array();
|
||||
$table_index = 0;
|
||||
$write_pages = "";
|
||||
$text_stx = "";
|
||||
$srows = 0;
|
||||
|
||||
$stx = strip_tags($stx);
|
||||
//$stx = preg_replace('/[[:punct:]]/u', '', $stx); // 특수문자 제거
|
||||
$stx = get_search_string($stx); // 특수문자 제거
|
||||
if ($stx) {
|
||||
// 💡 [추가] 검색어 저장
|
||||
if (function_exists('save_search_keyword')) {
|
||||
save_search_keyword($stx);
|
||||
}
|
||||
|
||||
$stx = preg_replace('/\//', '\/', trim($stx));
|
||||
$sop = strtolower($sop);
|
||||
if (!$sop || !($sop == 'and' || $sop == 'or')) $sop = 'and'; // 연산자 and , or
|
||||
$srows = isset($_GET['srows']) ? (int)preg_replace('#[^0-9]#', '', $_GET['srows']) : 10;
|
||||
if (!$srows) $srows = 10; // 한페이지에 출력하는 검색 행수
|
||||
|
||||
$g5_search['tables'] = Array();
|
||||
$g5_search['read_level'] = Array();
|
||||
$sql = " select gr_id, bo_table, bo_read_level from {$g5['board_table']} where bo_use_search = 1 and bo_list_level <= '{$member['mb_level']}' ";
|
||||
if ($gr_id)
|
||||
$sql .= " and gr_id = '{$gr_id}' ";
|
||||
$onetable = isset($onetable) ? preg_replace('/[^a-z0-9_]/i', '', $onetable) : '';
|
||||
if ($onetable) // 하나의 게시판만 검색한다면
|
||||
$sql .= " and bo_table = '{$onetable}' ";
|
||||
$sql .= " order by bo_order, gr_id, bo_table ";
|
||||
$result = sql_query($sql);
|
||||
for ($i=0; $row=sql_fetch_array($result); $i++)
|
||||
{
|
||||
if ($is_admin != 'super')
|
||||
{
|
||||
// 그룹접근 사용에 대한 검색 차단
|
||||
$sql2 = " select gr_use_access, gr_admin from {$g5['group_table']} where gr_id = '{$row['gr_id']}' ";
|
||||
$row2 = sql_fetch($sql2);
|
||||
// 그룹접근을 사용한다면
|
||||
if ($row2['gr_use_access']) {
|
||||
// 그룹관리자가 있으며 현재 회원이 그룹관리자라면 통과
|
||||
if ($row2['gr_admin'] && $row2['gr_admin'] == $member['mb_id']) {
|
||||
;
|
||||
} else {
|
||||
$sql3 = " select count(*) as cnt from {$g5['group_member_table']} where gr_id = '{$row['gr_id']}' and mb_id = '{$member['mb_id']}' and mb_id <> '' ";
|
||||
$row3 = sql_fetch($sql3);
|
||||
if (!$row3['cnt'])
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
$g5_search['tables'][] = $row['bo_table'];
|
||||
$g5_search['read_level'][] = $row['bo_read_level'];
|
||||
}
|
||||
|
||||
$op1 = '';
|
||||
|
||||
// 검색어를 구분자로 나눈다. 여기서는 공백
|
||||
$s = explode(' ', strip_tags($stx));
|
||||
|
||||
if( count($s) > 1 ){
|
||||
$s = array_slice($s, 0, 2);
|
||||
$stx = implode(' ', $s);
|
||||
}
|
||||
|
||||
$text_stx = get_text(stripslashes($stx));
|
||||
|
||||
$search_query = 'sfl='.urlencode($sfl).'&stx='.urlencode($stx).'&sop='.$sop;
|
||||
|
||||
// 검색필드를 구분자로 나눈다. 여기서는 +
|
||||
$field = explode('||', trim($sfl));
|
||||
|
||||
$str = '(';
|
||||
for ($i=0; $i<count($s); $i++) {
|
||||
if (trim($s[$i]) == '') continue;
|
||||
|
||||
$search_str = $s[$i];
|
||||
|
||||
// 인기검색어
|
||||
insert_popular($field, $search_str);
|
||||
|
||||
$str .= $op1;
|
||||
$str .= "(";
|
||||
|
||||
$op2 = '';
|
||||
// 필드의 수만큼 다중 필드 검색 가능 (필드1+필드2...)
|
||||
for ($k=0; $k<count($field); $k++) {
|
||||
$str .= $op2;
|
||||
switch ($field[$k]) {
|
||||
case 'mb_id' :
|
||||
case 'wr_name' :
|
||||
$str .= "$field[$k] = '$s[$i]'";
|
||||
break;
|
||||
case 'wr_subject' :
|
||||
case 'wr_content' :
|
||||
if (preg_match("/[a-zA-Z]/", $search_str))
|
||||
$str .= "INSTR(LOWER({$field[$k]}), LOWER('{$search_str}'))";
|
||||
else
|
||||
$str .= "INSTR({$field[$k]}, '{$search_str}')";
|
||||
break;
|
||||
default :
|
||||
$str .= "1=0"; // 항상 거짓
|
||||
break;
|
||||
}
|
||||
$op2 = " or ";
|
||||
}
|
||||
$str .= ")";
|
||||
|
||||
$op1 = " {$sop} ";
|
||||
}
|
||||
$str .= ")";
|
||||
|
||||
$sql_search = $str;
|
||||
|
||||
$str_board_list = "";
|
||||
$board_count = 0;
|
||||
|
||||
$time1 = get_microtime();
|
||||
|
||||
$total_count = 0;
|
||||
for ($i=0; $i<count($g5_search['tables']); $i++) {
|
||||
$tmp_write_table = $g5['write_prefix'] . $g5_search['tables'][$i];
|
||||
|
||||
$sql = " select wr_id from {$tmp_write_table} where {$sql_search} ";
|
||||
$result = sql_query($sql, false);
|
||||
$row['cnt'] = @sql_num_rows($result);
|
||||
|
||||
$total_count += $row['cnt'];
|
||||
if ($row['cnt']) {
|
||||
$board_count++;
|
||||
$search_table[] = $g5_search['tables'][$i];
|
||||
$read_level[] = $g5_search['read_level'][$i];
|
||||
$search_table_count[] = $total_count;
|
||||
|
||||
$sql2 = " select bo_subject, bo_mobile_subject from {$g5['board_table']} where bo_table = '{$g5_search['tables'][$i]}' ";
|
||||
$row2 = sql_fetch($sql2);
|
||||
$sch_class = "";
|
||||
$sch_all = "";
|
||||
if ($onetable == $g5_search['tables'][$i]) $sch_class = "class=sch_on";
|
||||
else $sch_all = "class=sch_on";
|
||||
$str_board_list .= '<li><a href="'.$_SERVER['SCRIPT_NAME'].'?'.$search_query.'&gr_id='.$gr_id.'&onetable='.$g5_search['tables'][$i].'" '.$sch_class.'><strong>'.((G5_IS_MOBILE && $row2['bo_mobile_subject']) ? $row2['bo_mobile_subject'] : $row2['bo_subject']).'</strong><span class="cnt_cmt">'.$row['cnt'].'</span></a></li>';
|
||||
}
|
||||
}
|
||||
|
||||
$rows = $srows;
|
||||
$total_page = ceil($total_count / $rows); // 전체 페이지 계산
|
||||
if ($page < 1) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
|
||||
$from_record = ($page - 1) * $rows; // 시작 열을 구함
|
||||
|
||||
for ($i=0; $i<count($search_table); $i++) {
|
||||
if ($from_record < $search_table_count[$i]) {
|
||||
$table_index = $i;
|
||||
$from_record = $from_record - ($i > 0 ? $search_table_count[$i-1] : 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$bo_subject = array();
|
||||
$list = array();
|
||||
|
||||
$k=0;
|
||||
for ($idx=$table_index; $idx<count($search_table); $idx++) {
|
||||
$sql = " select bo_subject, bo_mobile_subject from {$g5['board_table']} where bo_table = '{$search_table[$idx]}' ";
|
||||
$row = sql_fetch($sql);
|
||||
$bo_subject[$idx] = ((G5_IS_MOBILE && $row['bo_mobile_subject']) ? $row['bo_mobile_subject'] : $row['bo_subject']);
|
||||
|
||||
$tmp_write_table = $g5['write_prefix'] . $search_table[$idx];
|
||||
|
||||
$sql = " select * from {$tmp_write_table} where {$sql_search} order by wr_id desc limit {$from_record}, {$rows} ";
|
||||
$result = sql_query($sql);
|
||||
for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
// 검색어까지 링크되면 게시판 부하가 일어남
|
||||
$list[$idx][$i] = $row;
|
||||
$list[$idx][$i]['href'] = get_pretty_url($search_table[$idx], $row['wr_parent']);
|
||||
|
||||
if ($row['wr_is_comment'])
|
||||
{
|
||||
$sql2 = " select wr_subject, wr_option from {$tmp_write_table} where wr_id = '{$row['wr_parent']}' ";
|
||||
$row2 = sql_fetch($sql2);
|
||||
//$row['wr_subject'] = $row2['wr_subject'];
|
||||
$row['wr_subject'] = get_text($row2['wr_subject']);
|
||||
}
|
||||
|
||||
// 비밀글은 검색 불가
|
||||
if (strstr($row['wr_option'].(isset($row2['wr_option']) ? $row2['wr_option'] : ''), 'secret'))
|
||||
$row['wr_content'] = '[비밀글 입니다.]';
|
||||
|
||||
$subject = get_text($row['wr_subject']);
|
||||
if (strstr($sfl, 'wr_subject'))
|
||||
$subject = search_font($stx, $subject);
|
||||
|
||||
if ($read_level[$idx] <= $member['mb_level'])
|
||||
{
|
||||
//$content = cut_str(get_text(strip_tags($row['wr_content'])), 300, "…");
|
||||
$content = strip_tags($row['wr_content']);
|
||||
$content = get_text($content, 1);
|
||||
$content = strip_tags($content);
|
||||
$content = str_replace(' ', '', $content);
|
||||
$content = cut_str($content, 300, "…");
|
||||
|
||||
if (strstr($sfl, 'wr_content'))
|
||||
$content = search_font($stx, $content);
|
||||
}
|
||||
else
|
||||
$content = '';
|
||||
|
||||
$list[$idx][$i]['subject'] = $subject;
|
||||
$list[$idx][$i]['content'] = $content;
|
||||
$list[$idx][$i]['name'] = get_sideview($row['mb_id'], get_text(cut_str($row['wr_name'], $config['cf_cut_name'])), $row['wr_email'], $row['wr_homepage']);
|
||||
|
||||
$k++;
|
||||
if ($k >= $rows)
|
||||
break;
|
||||
}
|
||||
sql_free_result($result);
|
||||
|
||||
if ($k >= $rows)
|
||||
break;
|
||||
|
||||
$from_record = 0;
|
||||
}
|
||||
|
||||
$write_pages = get_paging(G5_IS_MOBILE ? $config['cf_mobile_pages'] : $config['cf_write_pages'], $page, $total_page, $_SERVER['SCRIPT_NAME'].'?'.$search_query.'&gr_id='.$gr_id.'&srows='.$srows.'&onetable='.$onetable.'&page=');
|
||||
}
|
||||
|
||||
$group_select = '<label for="gr_id" class="sound_only">게시판 그룹선택</label><select name="gr_id" id="gr_id" class="select"><option value="">전체 분류';
|
||||
$sql = " select gr_id, gr_subject from {$g5['group_table']} order by gr_id ";
|
||||
$result = sql_query($sql);
|
||||
for ($i=0; $row=sql_fetch_array($result); $i++)
|
||||
$group_select .= "<option value=\"".$row['gr_id']."\"".get_selected($gr_id, $row['gr_id']).">".$row['gr_subject']."</option>";
|
||||
$group_select .= '</select>';
|
||||
|
||||
if (!$sfl) $sfl = 'wr_subject';
|
||||
if (!$sop) $sop = 'or';
|
||||
|
||||
include_once($search_skin_path.'/search.skin.php');
|
||||
|
||||
include_once('./_tail.php');
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
include_once("./_common.php");
|
||||
|
||||
$title = isset($_REQUEST['title']) ? urlencode(str_replace('\"', '"', $_REQUEST['title'])) : '';
|
||||
$short_url = isset($_REQUEST['longurl']) ? googl_short_url($_REQUEST['longurl']) : '';
|
||||
$sns = isset($_REQUEST['sns']) ? $_REQUEST['sns'] : '';
|
||||
|
||||
if(!$short_url)
|
||||
$short_url = isset($_REQUEST['longurl']) ? urlencode($_REQUEST['longurl']) : '';
|
||||
|
||||
$title_url = $title.' : '.$short_url;
|
||||
|
||||
switch($sns) {
|
||||
case 'facebook' :
|
||||
header("Location:http://www.facebook.com/sharer/sharer.php?s=100&u=".$short_url."&p=".$title);
|
||||
break;
|
||||
case 'twitter' :
|
||||
header("Location:https://twitter.com/intent/tweet?text=".$title_url);
|
||||
break;
|
||||
case 'gplus' :
|
||||
header("Location:https://plus.google.com/share?url=".$short_url);
|
||||
break;
|
||||
default :
|
||||
echo 'Error';
|
||||
}
|
||||
+147
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
if (function_exists('check_case_exist_title')) check_case_exist_title($write, G5_BBS_DIR, true);
|
||||
|
||||
// 게시판에서 두단어 이상 검색 후 검색된 게시물에 코멘트를 남기면 나오던 오류 수정
|
||||
$sop = strtolower($sop);
|
||||
if ($sop != 'and' && $sop != 'or')
|
||||
$sop = 'and';
|
||||
|
||||
@include_once($board_skin_path.'/view.head.skin.php');
|
||||
|
||||
$sql_search = "";
|
||||
// 검색이면
|
||||
if ($sca || $stx || $stx === '0') {
|
||||
// where 문을 얻음
|
||||
$sql_search = get_sql_search($sca, $sfl, $stx, $sop);
|
||||
$search_href = get_pretty_url($bo_table,'','&page='.$page.$qstr);
|
||||
$list_href = get_pretty_url($bo_table);
|
||||
} else {
|
||||
$search_href = '';
|
||||
$list_href = get_pretty_url($bo_table,'',$qstr);
|
||||
}
|
||||
|
||||
if (!$board['bo_use_list_view']) {
|
||||
if ($sql_search)
|
||||
$sql_search = " and " . $sql_search;
|
||||
|
||||
// 윗글을 얻음
|
||||
$sql = " select wr_id, wr_subject, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num = '{$write['wr_num']}' and wr_reply < '{$write['wr_reply']}' {$sql_search} order by wr_num desc, wr_reply desc limit 1 ";
|
||||
$prev = sql_fetch($sql);
|
||||
// 위의 쿼리문으로 값을 얻지 못했다면
|
||||
if (! (isset($prev['wr_id']) && $prev['wr_id'])) {
|
||||
$sql = " select wr_id, wr_subject, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num < '{$write['wr_num']}' {$sql_search} order by wr_num desc, wr_reply desc limit 1 ";
|
||||
$prev = sql_fetch($sql);
|
||||
}
|
||||
|
||||
// 아래글을 얻음
|
||||
$sql = " select wr_id, wr_subject, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num = '{$write['wr_num']}' and wr_reply > '{$write['wr_reply']}' {$sql_search} order by wr_num, wr_reply limit 1 ";
|
||||
$next = sql_fetch($sql);
|
||||
// 위의 쿼리문으로 값을 얻지 못했다면
|
||||
if (! (isset($next['wr_id']) && $next['wr_id'])) {
|
||||
$sql = " select wr_id, wr_subject, wr_datetime from {$write_table} where wr_is_comment = 0 and wr_num > '{$write['wr_num']}' {$sql_search} order by wr_num, wr_reply limit 1 ";
|
||||
$next = sql_fetch($sql);
|
||||
}
|
||||
}
|
||||
|
||||
// 이전글 링크
|
||||
$prev_href = '';
|
||||
if (isset($prev['wr_id']) && $prev['wr_id']) {
|
||||
$prev_wr_subject = get_text(cut_str($prev['wr_subject'], 255));
|
||||
$prev_href = get_pretty_url($bo_table, $prev['wr_id'], $qstr);
|
||||
$prev_wr_date = $prev['wr_datetime'];
|
||||
}
|
||||
|
||||
// 다음글 링크
|
||||
$next_href = '';
|
||||
if (isset($next['wr_id']) && $next['wr_id']) {
|
||||
$next_wr_subject = get_text(cut_str($next['wr_subject'], 255));
|
||||
$next_href = get_pretty_url($bo_table, $next['wr_id'], $qstr);
|
||||
$next_wr_date = $next['wr_datetime'];
|
||||
}
|
||||
|
||||
// 쓰기 링크
|
||||
$write_href = '';
|
||||
if ($member['mb_level'] >= $board['bo_write_level']) {
|
||||
$write_href = short_url_clean(G5_BBS_URL.'/write.php?bo_table='.$bo_table);
|
||||
}
|
||||
|
||||
// 답변 링크
|
||||
$reply_href = '';
|
||||
if ($member['mb_level'] >= $board['bo_reply_level']) {
|
||||
$reply_href = short_url_clean(G5_BBS_URL.'/write.php?w=r&bo_table='.$bo_table.'&wr_id='.$wr_id.$qstr);
|
||||
}
|
||||
|
||||
// 수정, 삭제 링크
|
||||
$update_href = $delete_href = '';
|
||||
// 로그인중이고 자신의 글이라면 또는 관리자라면 비밀번호를 묻지 않고 바로 수정, 삭제 가능
|
||||
if (($member['mb_id'] && ($member['mb_id'] === $write['mb_id'])) || $is_admin) {
|
||||
$update_href = short_url_clean(G5_BBS_URL.'/write.php?w=u&bo_table='.$bo_table.'&wr_id='.$wr_id.'&page='.$page.$qstr);
|
||||
set_session('ss_delete_token', $token = uniqid(time()));
|
||||
$delete_href = G5_BBS_URL.'/delete.php?bo_table='.$bo_table.'&wr_id='.$wr_id.'&token='.$token.'&page='.$page.urldecode($qstr);
|
||||
}
|
||||
else if (!$write['mb_id']) { // 회원이 쓴 글이 아니라면
|
||||
$update_href = G5_BBS_URL.'/password.php?w=u&bo_table='.$bo_table.'&wr_id='.$wr_id.'&page='.$page.$qstr;
|
||||
$delete_href = G5_BBS_URL.'/password.php?w=d&bo_table='.$bo_table.'&wr_id='.$wr_id.'&page='.$page.$qstr;
|
||||
}
|
||||
|
||||
// 최고, 그룹관리자라면 글 복사, 이동 가능
|
||||
$copy_href = $move_href = '';
|
||||
if ($write['wr_reply'] == '' && ($is_admin == 'super' || $is_admin == 'group')) {
|
||||
$copy_href = G5_BBS_URL.'/move.php?sw=copy&bo_table='.$bo_table.'&wr_id='.$wr_id.'&page='.$page.$qstr;
|
||||
$move_href = G5_BBS_URL.'/move.php?sw=move&bo_table='.$bo_table.'&wr_id='.$wr_id.'&page='.$page.$qstr;
|
||||
}
|
||||
|
||||
$scrap_href = '';
|
||||
$good_href = '';
|
||||
$nogood_href = '';
|
||||
if ($is_member) {
|
||||
// 스크랩 링크
|
||||
$scrap_href = G5_BBS_URL.'/scrap_popin.php?bo_table='.$bo_table.'&wr_id='.$wr_id;
|
||||
|
||||
// 추천 링크
|
||||
if ($board['bo_use_good'])
|
||||
$good_href = G5_BBS_URL.'/good.php?bo_table='.$bo_table.'&wr_id='.$wr_id.'&good=good';
|
||||
|
||||
// 비추천 링크
|
||||
if ($board['bo_use_nogood'])
|
||||
$nogood_href = G5_BBS_URL.'/good.php?bo_table='.$bo_table.'&wr_id='.$wr_id.'&good=nogood';
|
||||
}
|
||||
|
||||
$view = get_view($write, $board, $board_skin_path);
|
||||
|
||||
if (strstr($sfl, 'subject'))
|
||||
$view['subject'] = search_font($stx, $view['subject']);
|
||||
|
||||
$html = 0;
|
||||
if (strstr($view['wr_option'], 'html1'))
|
||||
$html = 1;
|
||||
else if (strstr($view['wr_option'], 'html2'))
|
||||
$html = 2;
|
||||
|
||||
$view['content'] = conv_content($view['wr_content'], $html);
|
||||
if (strstr($sfl, 'content'))
|
||||
$view['content'] = search_font($stx, $view['content']);
|
||||
|
||||
//$view['rich_content'] = preg_replace("/{이미지\:([0-9]+)[:]?([^}]*)}/ie", "view_image(\$view, '\\1', '\\2')", $view['content']);
|
||||
function conv_rich_content($matches)
|
||||
{
|
||||
global $view;
|
||||
return view_image($view, $matches[1], $matches[2]);
|
||||
}
|
||||
$view['rich_content'] = preg_replace_callback("/{이미지\:([0-9]+)[:]?([^}]*)}/i", "conv_rich_content", $view['content']);
|
||||
|
||||
$is_signature = false;
|
||||
$signature = '';
|
||||
if ($board['bo_use_signature'] && $view['mb_id']) {
|
||||
$is_signature = true;
|
||||
$mb = get_member($view['mb_id']);
|
||||
$signature = $mb['mb_signature'];
|
||||
|
||||
$signature = conv_content($signature, 1);
|
||||
}
|
||||
|
||||
include_once($board_skin_path.'/view.skin.php');
|
||||
|
||||
@include_once($board_skin_path.'/view.tail.skin.php');
|
||||
@@ -0,0 +1,150 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
||||
|
||||
$captcha_html = "";
|
||||
if ($is_guest && $board['bo_comment_level'] < 2) {
|
||||
$captcha_html = captcha_html('_comment');
|
||||
}
|
||||
|
||||
$c_id = isset($_GET['c_id']) ? clean_xss_tags($_GET['c_id'], 1, 1) : '';
|
||||
$c_wr_content = '';
|
||||
|
||||
@include_once($board_skin_path.'/view_comment.head.skin.php');
|
||||
|
||||
$list = array();
|
||||
|
||||
$is_comment_write = false;
|
||||
if ($member['mb_level'] >= $board['bo_comment_level'])
|
||||
$is_comment_write = true;
|
||||
|
||||
// 코멘트 출력
|
||||
//$sql = " select * from {$write_table} where wr_parent = '{$wr_id}' and wr_is_comment = 1 order by wr_comment desc, wr_comment_reply ";
|
||||
$sql = " select * from $write_table where wr_parent = '$wr_id' and wr_is_comment = 1 order by wr_comment, wr_comment_reply ";
|
||||
$result = sql_query($sql);
|
||||
for ($i=0; $row=sql_fetch_array($result); $i++)
|
||||
{
|
||||
$list[$i] = $row;
|
||||
|
||||
//$list[$i]['name'] = get_sideview($row['mb_id'], cut_str($row['wr_name'], 20, ''), $row['wr_email'], $row['wr_homepage']);
|
||||
|
||||
$tmp_name = get_text(cut_str($row['wr_name'], $config['cf_cut_name'])); // 설정된 자리수 만큼만 이름 출력
|
||||
if ($board['bo_use_sideview'])
|
||||
$list[$i]['name'] = get_sideview($row['mb_id'], $tmp_name, $row['wr_email'], $row['wr_homepage']);
|
||||
else
|
||||
$list[$i]['name'] = '<span class="'.($row['mb_id']?'member':'guest').'">'.$tmp_name.'</span>';
|
||||
|
||||
|
||||
|
||||
// 공백없이 연속 입력한 문자 자르기 (way 보드 참고. way.co.kr)
|
||||
//$list[$i]['content'] = eregi_replace("[^ \n<>]{130}", "\\0\n", $row['wr_content']);
|
||||
/*
|
||||
$list[$i]['content'] = $list[$i]['content1']= '비밀글 입니다.';
|
||||
if (!strstr($row['wr_option'], 'secret') ||
|
||||
$is_admin ||
|
||||
($write['mb_id']===$member['mb_id'] && $member['mb_id']) ||
|
||||
($row['mb_id']===$member['mb_id'] && $member['mb_id'])) {
|
||||
$list[$i]['content1'] = $row['wr_content'];
|
||||
$list[$i]['content'] = conv_content($row['wr_content'], 0, 'wr_content');
|
||||
$list[$i]['content'] = search_font($stx, $list[$i]['content']);
|
||||
}
|
||||
*/
|
||||
|
||||
// 댓글에 댓글이 비밀댓글인 경우 원댓글 작성자도 볼 수 있도록 처리 2.1.7
|
||||
$pre_comment_info = substr($row['wr_comment_reply'],0,-1);
|
||||
$pre_comment = sql_fetch(" select mb_id from {$write_table} where wr_parent = '{$wr_id}' and wr_is_comment = 1 and wr_comment = '{$row['wr_comment']}' and wr_comment_reply = '{$pre_comment_info}' ");
|
||||
|
||||
$list[$i]['content'] = $list[$i]['content1']= '비밀글 입니다.';
|
||||
if (!strstr($row['wr_option'], 'secret') ||
|
||||
$is_admin ||
|
||||
($pre_comment['mb_id']==$member['mb_id'] && $member['mb_id']) ||
|
||||
($write['mb_id']==$member['mb_id'] && $member['mb_id']) ||
|
||||
($row['mb_id']==$member['mb_id'] && $member['mb_id'])) {
|
||||
$list[$i]['content1'] = $row['wr_content'];
|
||||
$list[$i]['content'] = conv_content($row['wr_content'], 0, 'wr_content');
|
||||
$list[$i]['content'] = search_font($stx, $list[$i]['content']);
|
||||
}
|
||||
|
||||
else {
|
||||
$ss_name = 'ss_secret_comment_'.$bo_table.'_'.$list[$i]['wr_id'];
|
||||
|
||||
if(!get_session($ss_name))
|
||||
$list[$i]['content'] = '<a href="'.G5_BBS_URL.'/password.php?w=sc&bo_table='.$bo_table.'&wr_id='.$list[$i]['wr_id'].$qstr.'" class="s_cmt">댓글내용 확인</a>';
|
||||
else {
|
||||
$list[$i]['content'] = conv_content($row['wr_content'], 0, 'wr_content');
|
||||
$list[$i]['content'] = search_font($stx, $list[$i]['content']);
|
||||
}
|
||||
}
|
||||
|
||||
$list[$i]['datetime'] = substr($row['wr_datetime'],2,14);
|
||||
|
||||
// 관리자가 아니라면 중간 IP 주소를 감춘후 보여줍니다.
|
||||
$list[$i]['ip'] = $row['wr_ip'];
|
||||
if (!$is_admin)
|
||||
$list[$i]['ip'] = preg_replace("/([0-9]+).([0-9]+).([0-9]+).([0-9]+)/", G5_IP_DISPLAY, $row['wr_ip']);
|
||||
|
||||
$list[$i]['is_reply'] = false;
|
||||
$list[$i]['is_edit'] = false;
|
||||
$list[$i]['is_del'] = false;
|
||||
if ($is_comment_write || $is_admin)
|
||||
{
|
||||
$token = '';
|
||||
|
||||
if ($member['mb_id'])
|
||||
{
|
||||
if ($row['mb_id'] === $member['mb_id'] || $is_admin)
|
||||
{
|
||||
set_session('ss_delete_comment_'.$row['wr_id'].'_token', $token = uniqid(time()));
|
||||
$list[$i]['del_link'] = G5_BBS_URL.'/delete_comment.php?bo_table='.$bo_table.'&comment_id='.$row['wr_id'].'&token='.$token.'&page='.$page.$qstr;
|
||||
$list[$i]['is_edit'] = true;
|
||||
$list[$i]['is_del'] = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!$row['mb_id']) {
|
||||
$list[$i]['del_link'] = G5_BBS_URL.'/password.php?w=x&bo_table='.$bo_table.'&comment_id='.$row['wr_id'].'&page='.$page.$qstr;
|
||||
$list[$i]['is_del'] = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (strlen($row['wr_comment_reply']) < 5)
|
||||
$list[$i]['is_reply'] = true;
|
||||
}
|
||||
|
||||
// 05.05.22
|
||||
// 답변있는 코멘트는 수정, 삭제 불가
|
||||
if ($i > 0 && !$is_admin)
|
||||
{
|
||||
if ($row['wr_comment_reply'])
|
||||
{
|
||||
$tmp_comment_reply = substr($row['wr_comment_reply'], 0, strlen($row['wr_comment_reply']) - 1);
|
||||
if ($tmp_comment_reply == $list[$i-1]['wr_comment_reply'])
|
||||
{
|
||||
$list[$i-1]['is_edit'] = false;
|
||||
$list[$i-1]['is_del'] = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 코멘트수 제한 설정값
|
||||
if ($is_admin)
|
||||
{
|
||||
$comment_min = $comment_max = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
$comment_min = (int)$board['bo_comment_min'];
|
||||
$comment_max = (int)$board['bo_comment_max'];
|
||||
}
|
||||
|
||||
$comment_action_url = https_url(G5_BBS_DIR)."/write_comment_update.php";
|
||||
$comment_common_url = short_url_clean(G5_BBS_URL.'/board.php?'.clean_query_string($_SERVER['QUERY_STRING']));
|
||||
|
||||
include_once($board_skin_path.'/view_comment.skin.php');
|
||||
|
||||
if (!$member['mb_id']) // 비회원일 경우에만
|
||||
echo '<script src="'.G5_JS_URL.'/md5.js"></script>'."\n";
|
||||
|
||||
@include_once($board_skin_path.'/view_comment.tail.skin.php');
|
||||
@@ -0,0 +1,158 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
|
||||
$g5['title'] = '이미지 크게보기';
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
$filename = isset($_GET['fn']) ? preg_replace('/[^A-Za-z0-9 _ .\-\/]/', '', $_GET['fn']) : '';
|
||||
|
||||
if(function_exists('clean_relative_paths')){
|
||||
$filename = clean_relative_paths($filename);
|
||||
}
|
||||
|
||||
$extension = pathinfo($filename, PATHINFO_EXTENSION);
|
||||
|
||||
if ( ! preg_match('/(jpg|jpeg|png|gif|bmp|webp)$/i', $extension) ){
|
||||
alert_close('이미지 확장자가 아닙니다.');
|
||||
}
|
||||
|
||||
if(strpos($filename, G5_DATA_DIR.'/editor')) {
|
||||
$editor_file = strstr($filename, 'editor');
|
||||
$filepath = G5_DATA_PATH.'/'.$editor_file;
|
||||
} else if(strpos($filename, G5_DATA_DIR.'/qa')) {
|
||||
$editor_file = strstr($filename, 'qa');
|
||||
$filepath = G5_DATA_PATH.'/'.$editor_file;
|
||||
} else {
|
||||
$editor_file = '';
|
||||
$filepath = G5_DATA_PATH.'/file/'.$bo_table.'/'.$filename;
|
||||
}
|
||||
|
||||
$file_exists = (is_file($filepath) && file_exists($filepath)) ? 1 : 0;
|
||||
|
||||
if($file_exists = run_replace('exists_view_image', $file_exists, $filepath, $editor_file)) {
|
||||
$size = $file_exists ? run_replace('get_view_imagesize', @getimagesize($filepath), $filepath, $editor_file) : array();
|
||||
if(empty($size))
|
||||
alert_close('이미지 파일이 아닙니다.');
|
||||
|
||||
$width = (isset($size[0]) && $size[0]) ? (int) $size[0] : 0;
|
||||
$height = (isset($size[1]) && $size[1]) ? (int) $size[1] : 0;
|
||||
|
||||
if($editor_file)
|
||||
$fileurl = run_replace('get_editor_content_url', G5_DATA_URL.'/'.$editor_file);
|
||||
else
|
||||
$fileurl = run_replace('get_file_board_url', G5_DATA_URL.'/file/'.$bo_table.'/'.$filename, $bo_table);
|
||||
|
||||
$img_attr = ($width && $height) ? 'width="'.$width.'" height="'.$height.'"' : '';
|
||||
|
||||
$img = '<img src="'.$fileurl.'" alt="" '.$img_attr.' class="draggable" style="position:relative;top:0;left:0;cursor:move;">';
|
||||
} else {
|
||||
alert_close('파일이 존재하지 않습니다.');
|
||||
}
|
||||
?>
|
||||
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=10>,user-scalable=yes" />
|
||||
</head>
|
||||
|
||||
<div class="bbs-view-image"><?php echo $img ?></div>
|
||||
|
||||
<script>
|
||||
|
||||
jQuery(function($){
|
||||
|
||||
$.fn.imgLoad = function(callback) {
|
||||
return this.each(function() {
|
||||
if (callback) {
|
||||
if (this.complete || /*for IE 10-*/ $(this).height() > 0) {
|
||||
callback.apply(this);
|
||||
}
|
||||
else {
|
||||
$(this).on('load', function(){
|
||||
callback.apply(this);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$(".bbs-view-image img").imgLoad(function(){
|
||||
|
||||
var win_w = <?php echo $width ?>;
|
||||
var win_h = <?php echo $height ?> + 70;
|
||||
|
||||
if( !win_w || !win_h ){
|
||||
win_w = $(this).width();
|
||||
win_h = $(this).height();
|
||||
}
|
||||
|
||||
var win_l = (screen.width - win_w) / 2;
|
||||
var win_t = (screen.height - win_h) / 2;
|
||||
|
||||
if(win_w > screen.width) {
|
||||
win_l = 0;
|
||||
win_w = screen.width - 20;
|
||||
|
||||
if(win_h > screen.height) {
|
||||
win_t = 0;
|
||||
win_h = screen.height - 40;
|
||||
}
|
||||
}
|
||||
|
||||
if(win_h > screen.height) {
|
||||
win_t = 0;
|
||||
win_h = screen.height - 40;
|
||||
|
||||
if(win_w > screen.width) {
|
||||
win_w = screen.width - 20;
|
||||
win_l = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(win_w < screen.width) {
|
||||
if(window.outerWidth){
|
||||
win_w = win_w + (window.outerWidth - (document.documentElement.clientWidth || window.innerWidth));
|
||||
}
|
||||
}
|
||||
|
||||
window.moveTo(win_l, win_t);
|
||||
window.resizeTo(win_w, win_h);
|
||||
});
|
||||
|
||||
var is_draggable = false;
|
||||
var x = y = 0;
|
||||
var pos_x = pos_y = 0;
|
||||
|
||||
$(".draggable").mousemove(function(e) {
|
||||
if(is_draggable) {
|
||||
x = parseInt($(this).css("left")) - (pos_x - e.pageX);
|
||||
y = parseInt($(this).css("top")) - (pos_y - e.pageY);
|
||||
|
||||
pos_x = e.pageX;
|
||||
pos_y = e.pageY;
|
||||
|
||||
$(this).css({ "left" : x, "top" : y });
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
$(".draggable").mousedown(function(e) {
|
||||
pos_x = e.pageX;
|
||||
pos_y = e.pageY;
|
||||
is_draggable = true;
|
||||
return false;
|
||||
});
|
||||
|
||||
$(".draggable").mouseup(function() {
|
||||
is_draggable = false;
|
||||
return false;
|
||||
});
|
||||
|
||||
$(".draggable").dblclick(function() {
|
||||
window.close();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<?php
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
if(!(version_compare(phpversion(), '5.3.0', '>=') && defined('G5_BROWSCAP_USE') && G5_BROWSCAP_USE))
|
||||
return;
|
||||
|
||||
// Browscap 캐시 파일이 있으면 실행
|
||||
if(defined('G5_VISIT_BROWSCAP_USE') && G5_VISIT_BROWSCAP_USE && is_file(G5_DATA_PATH.'/cache/browscap_cache.php')) {
|
||||
include_once(G5_PLUGIN_PATH.'/browscap/Browscap.php');
|
||||
|
||||
$browscap = new phpbrowscap\Browscap(G5_DATA_PATH.'/cache');
|
||||
$browscap->doAutoUpdate = false;
|
||||
$browscap->cacheFilename = 'browscap_cache.php';
|
||||
|
||||
$info = $browscap->getBrowser($_SERVER['HTTP_USER_AGENT']);
|
||||
|
||||
$vi_browser = $info->Comment;
|
||||
$vi_os = $info->Platform;
|
||||
$vi_device = $info->Device_Type;
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
// 컴퓨터의 아이피와 쿠키에 저장된 아이피가 다르다면 테이블에 반영함
|
||||
if (get_cookie('ck_visit_ip') != $_SERVER['REMOTE_ADDR'])
|
||||
{
|
||||
set_cookie('ck_visit_ip', $_SERVER['REMOTE_ADDR'], 86400); // 하루동안 저장
|
||||
|
||||
// $tmp_row = sql_fetch(" select max(vi_id) as max_vi_id from {$g5['visit_table']} ");
|
||||
// $vi_id = $tmp_row['max_vi_id'] + 1;
|
||||
|
||||
// $_SERVER 배열변수 값의 변조를 이용한 SQL Injection 공격을 막는 코드입니다. 110810
|
||||
$remote_addr = escape_trim($_SERVER['REMOTE_ADDR']);
|
||||
$referer = "";
|
||||
if (isset($_SERVER['HTTP_REFERER']))
|
||||
$referer = escape_trim(clean_xss_tags(strip_tags($_SERVER['HTTP_REFERER'])));
|
||||
$user_agent = '';
|
||||
if (isset($_SERVER['HTTP_USER_AGENT']))
|
||||
$user_agent = escape_trim(clean_xss_tags(strip_tags($_SERVER['HTTP_USER_AGENT'])));
|
||||
$vi_browser = '';
|
||||
$vi_os = '';
|
||||
$vi_device = '';
|
||||
if(version_compare(phpversion(), '5.3.0', '>=') && defined('G5_BROWSCAP_USE') && G5_BROWSCAP_USE) {
|
||||
include_once(G5_BBS_PATH.'/visit_browscap.inc.php');
|
||||
}
|
||||
$sql = " insert {$g5['visit_table']} ( vi_ip, vi_date, vi_time, vi_referer, vi_agent, vi_browser, vi_os, vi_device ) values ( '{$remote_addr}', '".G5_TIME_YMD."', '".G5_TIME_HIS."', '{$referer}', '{$user_agent}', '{$vi_browser}', '{$vi_os}', '{$vi_device}' ) ";
|
||||
|
||||
$result = sql_query($sql, FALSE);
|
||||
// 정상으로 INSERT 되었다면 방문자 합계에 반영
|
||||
if ($result) {
|
||||
$sql = " insert {$g5['visit_sum_table']} ( vs_count, vs_date) values ( 1, '".G5_TIME_YMD."' ) ";
|
||||
$result = sql_query($sql, FALSE);
|
||||
|
||||
// DUPLICATE 오류가 발생한다면 이미 날짜별 행이 생성되었으므로 UPDATE 실행
|
||||
if (!$result) {
|
||||
$sql = " update {$g5['visit_sum_table']} set vs_count = vs_count + 1 where vs_date = '".G5_TIME_YMD."' ";
|
||||
$result = sql_query($sql);
|
||||
}
|
||||
|
||||
// INSERT, UPDATE 된건이 있다면 기본환경설정 테이블에 저장
|
||||
// 방문객 접속시마다 따로 쿼리를 하지 않기 위함 (엄청난 쿼리를 줄임 ^^)
|
||||
|
||||
// 오늘
|
||||
$sql = " select vs_count as cnt from {$g5['visit_sum_table']} where vs_date = '".G5_TIME_YMD."' ";
|
||||
$row = sql_fetch($sql);
|
||||
$vi_today = isset($row['cnt']) ? $row['cnt'] : 0;
|
||||
|
||||
// 어제
|
||||
$sql = " select vs_count as cnt from {$g5['visit_sum_table']} where vs_date = DATE_SUB('".G5_TIME_YMD."', INTERVAL 1 DAY) ";
|
||||
$row = sql_fetch($sql);
|
||||
$vi_yesterday = isset($row['cnt']) ? $row['cnt'] : 0;
|
||||
|
||||
// 최대
|
||||
$sql = " select max(vs_count) as cnt from {$g5['visit_sum_table']} ";
|
||||
$row = sql_fetch($sql);
|
||||
$vi_max = isset($row['cnt']) ? $row['cnt'] : 0;
|
||||
|
||||
// 전체
|
||||
$sql = " select sum(vs_count) as total from {$g5['visit_sum_table']} ";
|
||||
$row = sql_fetch($sql);
|
||||
$vi_sum = isset($row['total']) ? $row['total'] : 0;
|
||||
|
||||
$visit = '오늘:'.$vi_today.',어제:'.$vi_yesterday.',최대:'.$vi_max.',전체:'.$vi_sum;
|
||||
|
||||
// 기본설정 테이블에 방문자수를 기록한 후
|
||||
// 방문자수 테이블을 읽지 않고 출력한다.
|
||||
// 쿼리의 수를 상당부분 줄임
|
||||
sql_query(" update {$g5['config_table']} set cf_visit = '{$visit}' ");
|
||||
}
|
||||
}
|
||||
+445
@@ -0,0 +1,445 @@
|
||||
<?php
|
||||
include_once('./_common.php');
|
||||
include_once(G5_EDITOR_LIB);
|
||||
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
||||
|
||||
if (!$board['bo_table']) {
|
||||
alert('존재하지 않는 게시판입니다.', G5_URL);
|
||||
}
|
||||
|
||||
if (!$bo_table) {
|
||||
alert("bo_table 값이 넘어오지 않았습니다.\\nwrite.php?bo_table=code 와 같은 방식으로 넘겨 주세요.", G5_URL);
|
||||
}
|
||||
|
||||
check_device($board['bo_device']);
|
||||
|
||||
$notice_array = explode(',', trim($board['bo_notice']));
|
||||
|
||||
if (!($w == '' || $w == 'u' || $w == 'r')) {
|
||||
alert('w 값이 제대로 넘어오지 않았습니다.');
|
||||
}
|
||||
|
||||
if ($w == 'u' || $w == 'r') {
|
||||
if (isset($write['wr_id']) && $write['wr_id']) {
|
||||
// 가변 변수로 $wr_1 .. $wr_10 까지 만든다.
|
||||
for ($i=1; $i<=10; $i++) {
|
||||
$vvar = "wr_".$i;
|
||||
$$vvar = $write['wr_'.$i];
|
||||
}
|
||||
} else {
|
||||
alert("글이 존재하지 않습니다.\\n삭제되었거나 이동된 경우입니다.", G5_URL);
|
||||
}
|
||||
} else if ($w == '') { // 게시글 입력시에도 $wr_1 ~ $wr_10 변수 사용시 오류 나오지 않도록 가변변수 생성 (다온테마님,210806)
|
||||
for ($i=1; $i<=10; $i++) {
|
||||
$vvar = "wr_".$i;
|
||||
$$vvar = '';
|
||||
}
|
||||
}
|
||||
|
||||
run_event('bbs_write', $board, $wr_id, $w);
|
||||
|
||||
if ($w == '') {
|
||||
if ($wr_id) {
|
||||
alert('글쓰기에는 \$wr_id 값을 사용하지 않습니다.', G5_BBS_URL.'/board.php?bo_table='.$bo_table);
|
||||
}
|
||||
|
||||
if ($member['mb_level'] < $board['bo_write_level']) {
|
||||
if ($member['mb_id']) {
|
||||
alert('글을 쓸 권한이 없습니다.');
|
||||
} else {
|
||||
alert("글을 쓸 권한이 없습니다.\\n회원이시라면 로그인 후 이용해 보십시오.", G5_BBS_URL.'/login.php?'.$qstr.'&url='.urlencode($_SERVER['SCRIPT_NAME'].'?bo_table='.$bo_table));
|
||||
}
|
||||
}
|
||||
|
||||
// 음수도 true 인것을 왜 이제야 알았을까?
|
||||
if ($is_member) {
|
||||
$tmp_point = ($member['mb_point'] > 0) ? $member['mb_point'] : 0;
|
||||
if ($tmp_point + $board['bo_write_point'] < 0 && !$is_admin) {
|
||||
alert('보유하신 포인트('.number_format($member['mb_point']).')가 없거나 모자라서 글쓰기('.number_format($board['bo_write_point']).')가 불가합니다.\\n\\n포인트를 적립하신 후 다시 글쓰기 해 주십시오.');
|
||||
}
|
||||
}
|
||||
|
||||
$title_msg = '글쓰기';
|
||||
} else if ($w == 'u') {
|
||||
// 김선용 1.00 : 글쓰기 권한과 수정은 별도로 처리되어야 함
|
||||
//if ($member['mb_level'] < $board['bo_write_level']) {
|
||||
if($member['mb_id'] && $write['mb_id'] === $member['mb_id']) {
|
||||
;
|
||||
} else if ($member['mb_level'] < $board['bo_write_level']) {
|
||||
if ($member['mb_id']) {
|
||||
alert('글을 수정할 권한이 없습니다.');
|
||||
} else {
|
||||
alert('글을 수정할 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.', G5_BBS_URL.'/login.php?'.$qstr.'&url='.urlencode($_SERVER['SCRIPT_NAME'].'?bo_table='.$bo_table));
|
||||
}
|
||||
}
|
||||
|
||||
$len = strlen($write['wr_reply']);
|
||||
if ($len < 0) $len = 0;
|
||||
$reply = substr($write['wr_reply'], 0, $len);
|
||||
|
||||
// 원글만 구한다.
|
||||
$sql = " select count(*) as cnt from {$write_table}
|
||||
where wr_reply like '{$reply}%'
|
||||
and wr_id <> '{$write['wr_id']}'
|
||||
and wr_num = '{$write['wr_num']}'
|
||||
and wr_is_comment = 0 ";
|
||||
$row = sql_fetch($sql);
|
||||
if ($row['cnt'] && !$is_admin)
|
||||
alert('이 글과 관련된 답변글이 존재하므로 수정 할 수 없습니다.\\n\\n답변글이 있는 원글은 수정할 수 없습니다.');
|
||||
|
||||
// 코멘트 달린 원글의 수정 여부
|
||||
$sql = " select count(*) as cnt from {$write_table}
|
||||
where wr_parent = '{$wr_id}'
|
||||
and mb_id <> '{$member['mb_id']}'
|
||||
and wr_is_comment = 1 ";
|
||||
$row = sql_fetch($sql);
|
||||
if ($board['bo_count_modify'] && $row['cnt'] >= $board['bo_count_modify'] && !$is_admin)
|
||||
alert('이 글과 관련된 댓글이 존재하므로 수정 할 수 없습니다.\\n\\n댓글이 '.$board['bo_count_modify'].'건 이상 달린 원글은 수정할 수 없습니다.');
|
||||
|
||||
$title_msg = '글수정';
|
||||
} else if ($w == 'r') {
|
||||
if ($member['mb_level'] < $board['bo_reply_level']) {
|
||||
if ($member['mb_id'])
|
||||
alert('글을 답변할 권한이 없습니다.');
|
||||
else
|
||||
alert('답변글을 작성할 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.', G5_BBS_URL.'/login.php?'.$qstr.'&url='.urlencode($_SERVER['SCRIPT_NAME'].'?bo_table='.$bo_table));
|
||||
}
|
||||
|
||||
$tmp_point = isset($member['mb_point']) ? $member['mb_point'] : 0;
|
||||
if ($tmp_point + $board['bo_write_point'] < 0 && !$is_admin)
|
||||
alert('보유하신 포인트('.number_format($member['mb_point']).')가 없거나 모자라서 글답변('.number_format($board['bo_comment_point']).')가 불가합니다.\\n\\n포인트를 적립하신 후 다시 글답변 해 주십시오.');
|
||||
|
||||
//if (preg_match("/[^0-9]{0,1}{$wr_id}[\r]{0,1}/",$board['bo_notice']))
|
||||
if (in_array((int)$wr_id, $notice_array))
|
||||
alert('공지에는 답변 할 수 없습니다.');
|
||||
|
||||
//----------
|
||||
// 4.06.13 : 비밀글을 타인이 열람할 수 있는 오류 수정 (헐랭이, 플록님께서 알려주셨습니다.)
|
||||
// 코멘트에는 원글의 답변이 불가하므로
|
||||
if ($write['wr_is_comment'])
|
||||
alert('정상적인 접근이 아닙니다.');
|
||||
|
||||
// 비밀글인지를 검사
|
||||
if (strstr($write['wr_option'], 'secret')) {
|
||||
if ($write['mb_id']) {
|
||||
// 회원의 경우는 해당 글쓴 회원 및 관리자
|
||||
if (!($write['mb_id'] === $member['mb_id'] || $is_admin))
|
||||
alert('비밀글에는 자신 또는 관리자만 답변이 가능합니다.');
|
||||
} else {
|
||||
// 비회원의 경우는 비밀글에 답변이 불가함
|
||||
if (!$is_admin)
|
||||
alert('비회원의 비밀글에는 답변이 불가합니다.');
|
||||
}
|
||||
}
|
||||
//----------
|
||||
|
||||
// 게시글 배열 참조
|
||||
$reply_array = &$write;
|
||||
|
||||
// 최대 답변은 테이블에 잡아놓은 wr_reply 사이즈만큼만 가능합니다.
|
||||
if (strlen($reply_array['wr_reply']) == 10)
|
||||
alert('더 이상 답변하실 수 없습니다.\\n\\n답변은 10단계 까지만 가능합니다.');
|
||||
|
||||
$reply_len = strlen($reply_array['wr_reply']) + 1;
|
||||
if ($board['bo_reply_order']) {
|
||||
$begin_reply_char = 'A';
|
||||
$end_reply_char = 'Z';
|
||||
$reply_number = +1;
|
||||
$sql = " select MAX(SUBSTRING(wr_reply, {$reply_len}, 1)) as reply from {$write_table} where wr_num = '{$reply_array['wr_num']}' and SUBSTRING(wr_reply, {$reply_len}, 1) <> '' ";
|
||||
} else {
|
||||
$begin_reply_char = 'Z';
|
||||
$end_reply_char = 'A';
|
||||
$reply_number = -1;
|
||||
$sql = " select MIN(SUBSTRING(wr_reply, {$reply_len}, 1)) as reply from {$write_table} where wr_num = '{$reply_array['wr_num']}' and SUBSTRING(wr_reply, {$reply_len}, 1) <> '' ";
|
||||
}
|
||||
if ($reply_array['wr_reply']) $sql .= " and wr_reply like '{$reply_array['wr_reply']}%' ";
|
||||
$row = sql_fetch($sql);
|
||||
|
||||
if (!$row['reply'])
|
||||
$reply_char = $begin_reply_char;
|
||||
else if ($row['reply'] == $end_reply_char) // A~Z은 26 입니다.
|
||||
alert('더 이상 답변하실 수 없습니다.\\n\\n답변은 26개 까지만 가능합니다.');
|
||||
else
|
||||
$reply_char = chr(ord($row['reply']) + $reply_number);
|
||||
|
||||
$reply = $reply_array['wr_reply'] . $reply_char;
|
||||
|
||||
$title_msg = '글답변';
|
||||
|
||||
$write['wr_subject'] = 'Re: '.$write['wr_subject'];
|
||||
}
|
||||
|
||||
// 그룹접근 가능
|
||||
if (!empty($group['gr_use_access'])) {
|
||||
if ($is_guest) {
|
||||
alert("접근 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.", 'login.php?'.$qstr.'&url='.urlencode($_SERVER['SCRIPT_NAME'].'?bo_table='.$bo_table));
|
||||
}
|
||||
|
||||
if ($is_admin == 'super' || $group['gr_admin'] === $member['mb_id'] || $board['bo_admin'] === $member['mb_id']) {
|
||||
; // 통과
|
||||
} else {
|
||||
// 그룹접근
|
||||
$sql = " select gr_id from {$g5['group_member_table']} where gr_id = '{$board['gr_id']}' and mb_id = '{$member['mb_id']}' ";
|
||||
$row = sql_fetch($sql);
|
||||
if (!$row['gr_id'])
|
||||
alert('접근 권한이 없으므로 글쓰기가 불가합니다.\\n\\n궁금하신 사항은 관리자에게 문의 바랍니다.');
|
||||
}
|
||||
}
|
||||
|
||||
// 본인확인을 사용한다면
|
||||
if ($board['bo_use_cert'] != '' && $config['cf_cert_use'] && !$is_admin) {
|
||||
// 인증된 회원만 가능
|
||||
if ($is_guest) {
|
||||
alert('이 게시판은 본인확인 하신 회원님만 글쓰기가 가능합니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.', G5_BBS_URL.'/login.php?wr_id='.$wr_id.$qstr.'&url='.urlencode(get_pretty_url($bo_table, $wr_id, $qstr)));
|
||||
}
|
||||
|
||||
if (strlen($member['mb_dupinfo']) == 64 && $member['mb_certify']) { // 본인 인증 된 계정 중에서 di로 저장 되었을 경우에만
|
||||
goto_url(G5_BBS_URL."/member_cert_refresh.php?url=".urlencode(get_pretty_url($bo_table, $wr_id, $qstr)));
|
||||
}
|
||||
|
||||
if ($board['bo_use_cert'] == 'cert' && !$member['mb_certify']) {
|
||||
alert('이 게시판은 본인확인 하신 회원님만 글쓰기가 가능합니다.\\n\\n회원정보 수정에서 본인확인을 해주시기 바랍니다.', G5_URL);
|
||||
}
|
||||
|
||||
if ($board['bo_use_cert'] == 'adult' && !$member['mb_adult']) {
|
||||
alert('이 게시판은 본인확인으로 성인인증 된 회원님만 글읽기가 가능합니다.\\n\\n현재 성인인데 글읽기가 안된다면 회원정보 수정에서 본인확인을 다시 해주시기 바랍니다.', G5_URL);
|
||||
}
|
||||
}
|
||||
|
||||
// 글자수 제한 설정값
|
||||
if ($is_admin || $board['bo_use_dhtml_editor'])
|
||||
{
|
||||
$write_min = $write_max = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
$write_min = (int)$board['bo_write_min'];
|
||||
$write_max = (int)$board['bo_write_max'];
|
||||
}
|
||||
|
||||
$g5['title'] = ((G5_IS_MOBILE && $board['bo_mobile_subject']) ? $board['bo_mobile_subject'] : $board['bo_subject']).' '.$title_msg;
|
||||
|
||||
$is_notice = false;
|
||||
$notice_checked = '';
|
||||
if ($is_admin && $w != 'r') {
|
||||
$is_notice = true;
|
||||
|
||||
if ($w == 'u') {
|
||||
// 답변 수정시 공지 체크 없음
|
||||
if ($write['wr_reply']) {
|
||||
$is_notice = false;
|
||||
} else {
|
||||
if (in_array((int)$wr_id, $notice_array)) {
|
||||
$notice_checked = 'checked';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$is_html = false;
|
||||
if ($member['mb_level'] >= $board['bo_html_level'])
|
||||
$is_html = true;
|
||||
|
||||
$is_secret = $board['bo_use_secret'];
|
||||
|
||||
$is_mail = false;
|
||||
if ($config['cf_email_use'] && $board['bo_use_email'])
|
||||
$is_mail = true;
|
||||
|
||||
$recv_email_checked = '';
|
||||
if ($w == '' || strstr($write['wr_option'], 'mail'))
|
||||
$recv_email_checked = 'checked';
|
||||
|
||||
$is_name = false;
|
||||
$is_password = false;
|
||||
$is_email = false;
|
||||
$is_homepage = false;
|
||||
if ($is_guest || ($is_admin && $w == 'u' && $member['mb_id'] !== $write['mb_id'])) {
|
||||
$is_name = true;
|
||||
$is_password = true;
|
||||
$is_email = true;
|
||||
$is_homepage = true;
|
||||
}
|
||||
|
||||
$is_category = false;
|
||||
$category_option = '';
|
||||
if ($board['bo_use_category']) {
|
||||
$ca_name = "";
|
||||
if (isset($write['ca_name']))
|
||||
$ca_name = $write['ca_name'];
|
||||
$category_option = get_category_option($bo_table, $ca_name);
|
||||
$is_category = true;
|
||||
}
|
||||
|
||||
$is_link = false;
|
||||
if ($member['mb_level'] >= $board['bo_link_level']) {
|
||||
$is_link = true;
|
||||
}
|
||||
|
||||
$is_file = false;
|
||||
if ($member['mb_level'] >= $board['bo_upload_level']) {
|
||||
$is_file = true;
|
||||
}
|
||||
|
||||
$is_file_content = false;
|
||||
if ($board['bo_use_file_content']) {
|
||||
$is_file_content = true;
|
||||
}
|
||||
|
||||
$file_count = (int)$board['bo_upload_count'];
|
||||
|
||||
$name = "";
|
||||
$email = "";
|
||||
$homepage = "";
|
||||
if ($w == "" || $w == "r") {
|
||||
if ($is_member) {
|
||||
if (isset($write['wr_name'])) {
|
||||
$name = get_text(cut_str(stripslashes($write['wr_name']),20));
|
||||
}
|
||||
$email = get_email_address($member['mb_email']);
|
||||
$homepage = get_text(stripslashes($member['mb_homepage']));
|
||||
}
|
||||
}
|
||||
|
||||
$html_checked = "";
|
||||
$html_value = "";
|
||||
$secret_checked = "";
|
||||
|
||||
if ($w == '') {
|
||||
$password_required = 'required';
|
||||
} else if ($w == 'u') {
|
||||
$password_required = '';
|
||||
|
||||
if (!$is_admin) {
|
||||
if (!($is_member && $member['mb_id'] === $write['mb_id'])) {
|
||||
if (!check_password($wr_password, $write['wr_password'])) {
|
||||
$is_wrong = run_replace('invalid_password', false, 'write', $write);
|
||||
if(!$is_wrong) alert('비밀번호가 틀립니다.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$name = get_text(cut_str(stripslashes($write['wr_name']),20));
|
||||
$email = get_email_address($write['wr_email']);
|
||||
$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]);
|
||||
$link[$i] = $write['wr_link'.$i];
|
||||
}
|
||||
|
||||
if (strstr($write['wr_option'], 'html1')) {
|
||||
$html_checked = 'checked';
|
||||
$html_value = 'html1';
|
||||
} else if (strstr($write['wr_option'], 'html2')) {
|
||||
$html_checked = 'checked';
|
||||
$html_value = 'html2';
|
||||
}
|
||||
|
||||
if (strstr($write['wr_option'], 'secret')) {
|
||||
$secret_checked = 'checked';
|
||||
}
|
||||
|
||||
$file = get_file($bo_table, $wr_id);
|
||||
if($file_count < $file['count']) {
|
||||
$file_count = $file['count'];
|
||||
}
|
||||
|
||||
for($i=0;$i<$file_count;$i++){
|
||||
if(! isset($file[$i])) {
|
||||
$file[$i] = array('file'=>null, 'source'=>null, 'size'=>null, 'bf_content' => null);
|
||||
}
|
||||
}
|
||||
|
||||
} else if ($w == 'r') {
|
||||
if (strstr($write['wr_option'], 'secret')) {
|
||||
$is_secret = true;
|
||||
$secret_checked = 'checked';
|
||||
}
|
||||
|
||||
$password_required = "required";
|
||||
|
||||
for ($i=1; $i<=G5_LINK_COUNT; $i++) {
|
||||
$write['wr_link'.$i] = get_text($write['wr_link'.$i]);
|
||||
}
|
||||
}
|
||||
|
||||
set_session('ss_bo_table', $bo_table);
|
||||
set_session('ss_wr_id', $wr_id);
|
||||
|
||||
$subject = "";
|
||||
if (isset($write['wr_subject'])) {
|
||||
$subject = str_replace("\"", """, get_text(cut_str($write['wr_subject'], 255), 0));
|
||||
}
|
||||
|
||||
$content = '';
|
||||
if ($w == '') {
|
||||
$content = html_purifier($board['bo_insert_content']);
|
||||
} else if ($w == 'r') {
|
||||
if (!strstr($write['wr_option'], 'html')) {
|
||||
$content = "\n\n\n > "
|
||||
."\n > "
|
||||
."\n > ".str_replace("\n", "\n> ", get_text($write['wr_content'], 0))
|
||||
."\n > "
|
||||
."\n > ";
|
||||
|
||||
}
|
||||
} else {
|
||||
$content = get_text($write['wr_content'], 0);
|
||||
}
|
||||
|
||||
$upload_max_filesize = number_format($board['bo_upload_size']) . ' 바이트';
|
||||
|
||||
$width = $board['bo_table_width'];
|
||||
if ($width <= 100)
|
||||
$width .= '%';
|
||||
else
|
||||
$width .= 'px';
|
||||
|
||||
$captcha_html = '';
|
||||
$captcha_js = '';
|
||||
$is_use_captcha = ((($board['bo_use_captcha'] && $w !== 'u') || $is_guest) && !$is_admin) ? 1 : 0;
|
||||
|
||||
if ($is_use_captcha) {
|
||||
$captcha_html = captcha_html();
|
||||
$captcha_js = chk_captcha_js();
|
||||
}
|
||||
|
||||
$is_dhtml_editor = false;
|
||||
$is_dhtml_editor_use = false;
|
||||
$editor_content_js = '';
|
||||
if(!is_mobile() || defined('G5_IS_MOBILE_DHTML_USE') && G5_IS_MOBILE_DHTML_USE)
|
||||
$is_dhtml_editor_use = true;
|
||||
|
||||
// 모바일에서는 G5_IS_MOBILE_DHTML_USE 설정에 따라 DHTML 에디터 적용
|
||||
if ($config['cf_editor'] && $is_dhtml_editor_use && $board['bo_use_dhtml_editor'] && $member['mb_level'] >= $board['bo_html_level']) {
|
||||
$is_dhtml_editor = true;
|
||||
|
||||
if ( $w == 'u' && (! $is_member || ! $is_admin || $write['mb_id'] !== $member['mb_id']) ){
|
||||
// kisa 취약점 제보 xss 필터 적용
|
||||
$content = get_text(html_purifier($write['wr_content']), 0);
|
||||
}
|
||||
|
||||
if(is_file(G5_EDITOR_PATH.'/'.$config['cf_editor'].'/autosave.editor.js'))
|
||||
$editor_content_js = '<script src="'.G5_EDITOR_URL.'/'.$config['cf_editor'].'/autosave.editor.js"></script>'.PHP_EOL;
|
||||
}
|
||||
$editor_html = editor_html('wr_content', $content, $is_dhtml_editor);
|
||||
$editor_js = '';
|
||||
$editor_js .= get_editor_js('wr_content', $is_dhtml_editor);
|
||||
$editor_js .= chk_editor_js('wr_content', $is_dhtml_editor);
|
||||
|
||||
// 임시 저장된 글 수
|
||||
$autosave_count = autosave_count($member['mb_id']);
|
||||
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
@include_once ($board_skin_path.'/write.head.skin.php');
|
||||
include_once('./board_head.php');
|
||||
|
||||
$action_url = https_url(G5_BBS_DIR)."/write_update.php";
|
||||
|
||||
echo '<!-- skin : '.(G5_IS_MOBILE ? $board['bo_mobile_skin'] : $board['bo_skin']).' -->';
|
||||
include_once ($board_skin_path.'/write.skin.php');
|
||||
|
||||
include_once('./board_tail.php');
|
||||
@include_once ($board_skin_path.'/write.tail.skin.php');
|
||||
include_once(G5_PATH.'/tail.sub.php');
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user