New Feeds

[질답/버그/제안] download.php 아미나 마지막 패치 부분 ...

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

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);

    }

}


위 부분만 적용 안하니 이전처럼 캠차 추가된 기능이 잘 작동합니다.

download.php에서 새로 추가된 코드 빼고 사용해도 별 문제 없을까요...?

관련자료

댓글 0
등록된 댓글이 없습니다.
전체 1,963 / 1 페이지
번호
제목
이름

Favorites


최근글


새댓글


  • 댓글이 없습니다.
알림 0