[질답/버그/제안] download.php 아미나 마지막 패치 부분 ...
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 298 조회
-
목록
본문
include_once('./_common.php');
// 다운로드 캡차 추가된 부분 시작
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
//error_reporting(E_ALL);
//ini_set("display_errors", 1);
// get download policy
list($download_level, $download_limits) = explode(",", $board['bo_9']);
$download_lastdate = $board['bo_10'];
// get state
$state = $_REQUEST['state'];
// clear download history
$tmp_row = sql_fetch("select IFNULL(DATEDIFF(CURDATE(), '{$download_lastdate}'), 1) as dt");
if($tmp_row['dt'] > 0) {
$sql = "delete from {$g5['memo_table']} where me_send_mb_id = '@download' and DATE(me_send_datetime) < CURDATE()";
sql_query($sql);
$sql = "update {$g5['board_table']} set bo_10 = '" . G5_TIME_YMD . "' where bo_table = '{$bo_table}'";
sql_query($sql);
}
// if captcha key is empty
if(empty($state)) {
// Page ID
$pid = ($pid) ? $pid : '';
$at = apms_page_thema($pid);
include_once(G5_LIB_PATH.'/apms.thema.lib.php');
// 스킨 체크
list($member_skin_path, $member_skin_url) = apms_skin_thema('member', $member_skin_path, $member_skin_url);
$g5['title'] = '자동수집방지';
include_once(G5_PATH.'/head.sub.php');
if(!USE_G5_THEME) @include_once(THEMA_PATH.'/head.sub.php');
echo "";
$no = (int)$no;
$skin_path = $member_skin_path;
$skin_url = $member_skin_url;
$action_url = G5_HTTPS_BBS_URL . "/download.php";
@include_once($board_skin_path.'/download.captcha.skin.php');
include_once(G5_PATH.'/tail.sub.php');
if(!USE_G5_THEME) @include_once(THEMA_PATH.'/tail.sub.php');
exit;
} elseif($download_level > $member['mb_level']) {
if (!chk_captcha()) {
echo "";
alert('자동수집방지에 오류가 발생하였습니다.');
} else {
// get IP address
$ipaddress = '';
if (getenv('HTTP_CLIENT_IP'))
$ipaddress = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$ipaddress = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$ipaddress = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$ipaddress = getenv('REMOTE_ADDR');
else
$ipaddress = 'UNKNOWN';
// check download limits
if($download_limits > 0) {
$tmp_row = sql_fetch("
select count(*) as cnt from {$g5['memo_table']}
where me_memo = '$ipaddress'
and me_send_mb_id = '@download'
and DATE(me_send_datetime) = CURDATE()
");
$download_currents = $tmp_row['cnt'];
if($download_currents >= $download_limits) {
alert_close("일일 내려받기 횟수를 초과하였습니다.(" . $download_limits . "회)\n등업(3등급)하시면 제한하지 않습니다.");
}
// add download history
$tmp_row = sql_fetch(" select max(me_id) as max_me_id from {$g5['memo_table']} ");
$me_id = $tmp_row['max_me_id'] + 1;
$me_memo = $ipaddress;
$sql = "
insert into {$g5['memo_table']} ( me_id, me_recv_mb_id, me_send_mb_id, me_send_datetime, me_read_datetime, me_memo )
values ($me_id, '@download', '@download', '" . G5_TIME_YMDHIS . "', '" . G5_TIME_YMDHIS . "', '$me_memo')
";
sql_query($sql);
}
}
}
// 다운로드 캡차 추가된 부분 끝
// clean the output buffer
ob_end_clean();
download.php 소스에서 위 부분 상단에 다운로드 캡차 소스를 추가 하여 몇년째 사용했는데
최신패치 후 회원 로그인 상태 에서는 문제 없는데 (회원일때는 다운로드시 캡차 과정을 생략하니까...)
비회원이 다운로드 할 때 캡차 뜨고 확인 확인을 누르면 다음 동작으로 다운로드가 되지 않고...
마지막 업데이트 버전인 1.8.54 에 download.php 추가된 아래 소스 때문에
토큰 유효시간이 지났거나 토큰이 유효하지 않습니다.\n브라우저를 새로고침 후 다시 시도해 주세요 라는 메세지가 뜨고 다운로드가 안되네요...
해당 최신 패치에서 download.php의 아래 소스만 추가된 것 같은데... .
$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);
}
}
관련자료
-
링크