trackback 트랙백 기능 제거

This commit is contained in:
gnuboard
2012-12-28 16:07:17 +09:00
parent 2eefdd186d
commit 6040266aed
17 changed files with 1 additions and 405 deletions

View File

@ -59,7 +59,6 @@ while ($row = sql_fetch_array($result))
wr_link2 = '".addslashes($row2[wr_link2])."',
wr_link1_hit = '$row2[wr_link1_hit]',
wr_link2_hit = '$row2[wr_link2_hit]',
wr_trackback = '".addslashes($row2[wr_trackback])."',
wr_hit = '$row2[wr_hit]',
wr_good = '$row2[wr_good]',
wr_nogood = '$row2[wr_nogood]',

View File

@ -1,194 +0,0 @@
<?
//
// 트랙백 핑 받는 페이지
//
define("_GNUBOARD_", TRUE);
include_once('./_common.php');
// 오류는 write_log() 함수로 남긴다.
include_once($g4['path'].'/lib/etc.lib.php');
function tb_xml_msg($error, $msg='')
{
global $g4;
$s = '';
$s .= '<?xml version="1.0" encoding="'.$g4[charset].'"?>'.PHP_EOL;
$s .= '<response>'.PHP_EOL;
$s .= '<error>'.$error.'</error>'.PHP_EOL;
$s .= '<message>'.$msg.'</message>'.PHP_EOL;
$s .= '</response>'.PHP_EOL;
return $s;
}
$arr = explode("/", $_SERVER[PATH_INFO]);
// 영문자 숫자 _ 과 일치하지 않는 문자는 삭제한다. (최대 20자)
$bo_table = preg_replace("/\W/", "", substr($arr[1],0,20));
// 정수형으로 변환
$wr_id = (int)$arr[2];
// 영소문자 숫자 와 일치하지 않는 문자는 삭제한다. (최대 32자)
$to_token = preg_replace("/[^a-z0-9]/", "", substr($arr[3],0,32));
$write_table = $g4[write_prefix] . $bo_table; // 게시판 테이블 전체이름
$sql = " select wr_id, ca_name, wr_email from {$write_table} where wr_id = '{$wr_id}' ";
$wr = sql_fetch($sql, FALSE);
// wr_id가 없거나 트랙백으로 넘어온게 아니라면
if (!$wr[wr_id] || !($_POST[title] && $_POST[excerpt] && $_POST[url] && $_POST[blog_name]))
{
$tmp_dir = str_replace('/tb.php', '', $_SERVER[SCRIPT_NAME]);
header('location:'.$tmp_dir.'/board.php?bo_table='.$bo_table.'&amp;wr_id='.$wr_id);
exit;
}
if (!$to_token)
{
if (isset($_POST))
write_log($g4['path'].'/data/log/tb.log', $_POST);
echo tb_xml_msg(1, '토큰값이 넘어오지 않았습니다.');
exit;
}
$sql = " select to_token from {$g4[token_table]} where to_token = '{$to_token}' ";
$row = sql_fetch($sql);
if ($row[to_token] && $to_token)
{
// 두번 이상 트랙백을 보내지 못하도록 하기 위하여 토큰을 삭제한다
sql_query(" delete from {$g4[token_table]} where to_token = '{$to_token}' ");
// 토큰검사 (3시간 이상 지난 토큰은 삭제)
if (isset($g4['token_time']) == false)
$g4['token_time'] = 3;
$sql = " delete from {$g4[token_table]} where to_datetime < '".date("Y-m-d", $g4[server_time] - 3600 * $g4['token_time'])."' ";
sql_query($sql);
}
else
{
echo tb_xml_msg(1, '트랙백 주소가 올바르지 않습니다. (토큰 유효시간 경과 등)');
exit;
}
$title = $_POST[title];
$excerpt = $_POST[excerpt];
if (strlen($title) > 255) $title = cut_str($title, 255);
if (strlen($excerpt) > 255) $excerpt = cut_str($excerpt, 255);
$msg = "";
// 두번씩 INSERT 되는것을 막기 위해
if ($_POST[title])
{
$board = sql_fetch(" select bo_subject, bo_use_trackback from {$g4[board_table]} where bo_table = '{$bo_table}' ");
if (!$board[bo_use_trackback])
$msg = '트랙백 사용이 금지된 게시판입니다.';
if (!$msg)
{
$next_num = get_next_num($write_table);
$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 {$g4[write_prefix]}{$bo_table}
set wr_num = '{$next_num}',
wr_parent = '{$wr_id}',
wr_is_comment = 1,
wr_comment = '{$row[max_comment]}',
wr_content = '{$title}\n{$excerpt}',
wr_trackback = '{$_POST[url]}',
wr_name = '{$_POST[blog_name]}',
wr_password = '".sql_password($g4[server_time])."',
wr_datetime = '{$g4[time_ymdhis]}',
wr_ip = '{$_SERVER[REMOTE_ADDR]}' ";
$result = sql_query($sql, FALSE);
if ($result)
{
$comment_id = mysql_insert_id();
sql_query(" update {$write_table} set wr_comment = wr_comment + 1 where wr_id = '{$wr_id}' ", FALSE);
sql_query(" insert into {$g4[board_new_table]} ( bo_table, wr_id, wr_parent, bn_datetime ) values ( '{$bo_table}', '{$comment_id}', '{$wr_id}', '{$g4[time_ymdhis]}' ) ");
sql_query(" update {$g4[board_table]} set bo_count_comment = bo_count_comment + 1 where bo_table = '{$bo_table}' ", FALSE);
} else
$msg = "$write_table TABLE INSERT 오류";
}
//write_log("$g4['path']/data/log/aaa", $msg);
if ($msg) // 비정상(오류)
{
echo tb_xml_msg(1, $msg);
exit;
}
else // 정상
{
// 메일발송 사용
if ($config[cf_email_use] && $board[bo_use_email])
{
include_once($g4['path'].'/lib/mailer.lib.php');
// 관리자의 정보를 얻고
$super_admin = get_admin('super');
$group_admin = get_admin('group');
$board_admin = get_admin('board');
$wr_name = $blog_name = get_text(stripslashes($_POST[blog_name]));
$wr_subject = $title = get_text(stripslashes($title));
$wr_content = $excerpt = nl2br(get_text(stripslashes($excerpt)));
$link_url = 'http://'.$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI];
$subject = $board[bo_subject].' 게시판에 트랙백에 의한 글이 올라왔습니다.';
define("_GNUBOARD_", TRUE);
ob_start();
include_once ('./write_update_mail.php');
$content = ob_get_contents();
ob_end_clean();
// 게시판 관리자에게 보내는 메일
if ($config[cf_email_wr_board_admin])
mailer($blog_name, '', $board_admin[mb_email], $subject, $content, 1);
// 그룹 관리자에게 보내는 메일
if ($group_admin[mb_email] != $board_admin[mb_email])
{
if ($config[cf_email_wr_group_admin])
mailer($blog_name, '', $group_admin[mb_email], $subject, $content, 1);
}
// 최고관리자에게 보내는 메일
if ($super_admin[mb_email] != $board_admin[mb_email])
{
if ($config[cf_email_wr_super_admin])
mailer($blog_name, '', $super_admin[mb_email], $subject, $content, 1);
}
// 답변 메일받기 (원게시자에게 보내는 메일)
//if ($wr[wr_recv_email] && $wr[wr_email] && $wr[wr_email] != $admin[mb_email])
if (strstr($wr[wr_option], 'mail') && $wr[wr_email] && $wr[wr_email] != $admin[mb_email])
{
if ($config[cf_email_wr_write])
mailer($blog_name, "", $wr[wr_email], $subject, $content, 1);
// 코멘트 쓴 모든이에게 메일 발송
if ($config[cf_email_wr_comment_all])
{
$sql = " select wr_email from {$write_table}
where wr_email not in ( '{$admin[mb_email]}' , '{$wr[wr_email]}', '' )
and wr_parent = '{$wr_id}'
group by wr_email ";
$result = sql_query($sql);
while ($row=sql_fetch_array($result))
mailer($blog_name, '', $row[wr_email], $subject, $content, 1);
}
}
}
}
}
echo tb_xml_msg(0, '');
?>

View File

@ -1,37 +0,0 @@
<?
// 토큰 생성
include_once('./_common.php');
// 오류는 write_log() 로 잡는다.
include_once($g4['path'].'/lib/etc.lib.php');
//write_log($g4['path'].'/lib/log/aaa', 1);
if (isset($g4['token_time']) == false)
$g4['token_time'] = 3;
$sql = " delete from {$g4[token_table]}
where to_datetime < '".date("Y-m-d", $g4[server_time] - 86400 * $g4['token_time'])."' ";
sql_query($sql);
$sql = " select count(*) as cnt from {$g4[token_table]}
where to_ip = '{$_SERVER[REMOTE_ADDR]}' ";
$row = sql_fetch($sql);
if ($row[cnt] >= 100)
return;
$i=0;
while(1) {
$token = md5(uniqid(rand(), true));
$sql = " insert into g4_token
set to_token = '{$token}',
to_datetime = '{$g4['time_ymdhis']}',
to_ip = '{$_SERVER[REMOTE_ADDR]}' ";
$result = sql_query($sql, FALSE);
if ($result)
break;
// 무한루프방지
if ($i++ >= 10)
break;
}
echo $token;
?>

View File

@ -126,14 +126,6 @@ if (strstr($sfl, 'content'))
//$view['rich_content'] = preg_replace("/{img\:([0-9]+)[:]?([^}]*)}/ie", "view_image(\$view, '\\1', '\\2')", $view['content']);
$view['rich_content'] = preg_replace("/{이미지\:([0-9]+)[:]?([^}]*)}/ie", "view_image(\$view, '\\1', '\\2')", $view['content']);
// 트랙백
$trackback_url = '';
if ($member['mb_level'] >= $board['bo_trackback_level']) {
if (isset($g4['token_time']) == false)
$g4['token_time'] = 3;
$trackback_url = $g4['url'].'/'.$g4['bbs'].'/tb.php/'.$bo_table.'/'.$wr_id;
}
$is_signature = false;
$signature = '';
if ($board['bo_use_signature'] && $view['mb_id']) {

View File

@ -45,7 +45,6 @@ for ($i=0; $row=sql_fetch_array($result); $i++)
$list[$i]['content'] = search_font($stx, $list[$i]['content']);
}
$list[$i]['trackback'] = url_auto_link($row['wr_trackback']);
$list[$i]['datetime'] = substr($row['wr_datetime'],2,14);
// 관리자가 아니라면 중간 IP 주소를 감춘후 보여줍니다.

View File

@ -253,12 +253,6 @@ if ($board['bo_use_file_content']) {
$is_file_content = true;
}
// 트랙백
$is_trackback = false;
if ($board['bo_use_trackback'] && $member['mb_level'] >= $board['bo_trackback_level']) {
$is_trackback = true;
}
$name = "";
$email = "";
$homepage = "";
@ -275,7 +269,6 @@ if ($w == "" || $w == "r") {
$html_checked = "";
$html_value = "";
$secret_checked = "";
$trackback = "";
if ($w == '') {
$password_required = 'required';
@ -299,8 +292,6 @@ if ($w == '') {
$link[$i] = $write['wr_link'.$i];
}
$trackback = $write['wr_trackback'];
if (strstr($write['wr_option'], 'html1')) {
$html_checked = 'checked';
$html_value = 'html1';

View File

@ -11,8 +11,6 @@ if (substr_count($wr_content, '&#') > 50) {
@include_once($board_skin_path.'/write_update.head.skin.php');
include_once($g4['path'].'/lib/trackback.lib.php');
$upload_max_filesize = ini_get('upload_max_filesize');
if (empty($_POST))
@ -291,7 +289,6 @@ if ($w == '' || $w == 'r')
wr_link2 = '{$wr_link2}',
wr_link1_hit = 0,
wr_link2_hit = 0,
wr_trackback = '{$wr_trackback}',
wr_hit = 0,
wr_good = 0,
wr_nogood = 0,
@ -595,18 +592,6 @@ if (!($w == 'u' || $w == 'cu') && $config['cf_email_use'] && $board['bo_use_emai
// 사용자 코드 실행
@include_once ($board_skin_path.'/write_update.skin.php');
// 트랙백 주소가 있다면
if (($w != 'u' && $wr_trackback) || ($w=='u' && $wr_trackback && $re_trackback))
{
$trackback_url = $g4['url'].'/'.$g4['bbs'].'/tb.php/'.$bo_table.'/'.$wr_id;
$msg = "";
$msg = send_trackback($wr_trackback, $trackback_url, $wr_subject, $board['bo_subject'], $_POST['wr_content']);
if ($msg) {
echo '<meta http-equiv="content-type" content="text/html; charset='.$g4['charset'].'">'.PHP_EOL;
echo '<script>alert('.$msg.' '.$wr_trackback.');</script>';
}
}
@include_once($board_skin_path.'/write_update.tail.skin.php');
if ($g4['https_url'])
$https_url = $g4['url'].'/'.$g4['bbs'];