오래된 클릭포인트 이용할려고 하는데 계속 에러가 납니다.

오래된 클릭포인트 이용할려고 하는데 계속 에러가 납니다.

QA

오래된 클릭포인트 이용할려고 하는데 계속 에러가 납니다.

답변 1

본문

안녕하세요.

 

오래된 자료인데 한번 써볼려고 달려들었다가 몇시간째 헤매고 있네요.

밤새 누군가의 축복을 받기 위해 컴끄기 전에 한번 문의드리려 합니다.

 

test id / pass : test0903 / test0903

https://nolazo.com/clickpoint/

 

661966317_1728153396.3059.png

clickpoint 테이블

 

 

테이블은 정상적으로 생성이 되어있고 마지막에 리디렉션쪽에서 안되더라고요.

 

661966317_1728153444.2129.png

https://nolazo.com/p/12 결과화면

 

개인홈서버이고 /sever/nolazo/www/clickpoint

 

/clickpoint/_common.php 

 

<?
$g5_path = ".."; // common.php 의 상대 경로
include_once("$g5_path/common.php");
?>

 

 

/clickpoint/clickpoint.lib.php

 

<?
// 클릭포인트 설정
$clickpoint = 100; // 클릭시 받는 포인트
if(!$g5[url]) $g5[url] = "https://nolazo.com"; // 홈페이지 메인 주소 자동설정 (오작동시 /config.php 맨 마지막 부분을 수정하세요.)
$sitename = "놀아조"; // 사이트 이름

if(!$sitename) $sitename = $config[cf_title]; // 변경하지 마세요.
?>

 

 

/clickpoint/clickpoint.php

 

<?
include_once("./_common.php");

// 설정파일
include_once("./clickpoint.lib.php");

// $mb_no 가져오기
$mb_no = intval($_GET[no]);
if(!$mb_no) go(); // $mb_no 가 없으면 그냥 패스

// 필요한 변수 뽑아놓기
$ip = $_SERVER[REMOTE_ADDR];
$temp = sql_fetch("select mb_id from `$g5[member_table]` where mb_no = '$mb_no'");
$mb_id = $temp[mb_id];
if(!$mb_id) go(); // 없는 회원이면 패스
$referer = $_SERVER[HTTP_REFERER];

// 최근 3일 내에 방문한 적 있으면 패스
if(sql_fetch("select ip from `clickpoint` where ip='$ip' AND datetime >= now() - interval 3 day")) go();

// 해당 회원의 가입 ip, 최근 접속 ip이면 패스
$mb = get_member($mb_id, "mb_ip, mb_login_ip");
if($ip == $mb[mb_ip] || $ip == $mb[mb_login_ip]) go();

// clickpoint에 방문기록 삽입
sql_query("insert into `clickpoint` set mb_no='$mb_no', mb_id='$mb_id', referer='$referer', ip='$ip', datetime=now()");

// 이미 오늘 포인트가 있다면 update 시키기
if($temp = sql_fetch("select po_id from `$g5[point_table]` where mb_id='$mb_id' AND po_datetime LIKE '$g5[time_ymd]%' AND po_rel_table='@clickpoint'")) {
    // update
    sql_query("update `$g5[point_table]` set po_point = po_point + $clickpoint where po_id='$temp[po_id]'");
    sql_query("update `$g5[member_table]` set mb_point = mb_point + $clickpoint where mb_id='$mb_id'");
}

// 오늘 처음 적립이면 insert_point
else {
    sql_query("insert into `$g5[point_table]` set mb_id='$mb_id', po_datetime=now(), po_content='클릭포인트', po_point='$clickpoint', po_rel_table='@clickpoint', po_rel_id='$mb_id', po_rel_action='홍보'");
    sql_query("update `$g5[member_table]` set mb_point = mb_point + $clickpoint where mb_id='$mb_id'");
}

// 끝
go();

function go() {
    header("location: {$g5[url]}/");
    die();
}

 

 

/clickpoint/index.php

 

<?
include_once('./_common.php');
$g5[title] = "클릭포인트";
include_once("$g5[path]/_head.php");

// 설정파일
include_once("./clickpoint.lib.php");
?>
<style>
.title_bar {background-image:url("<?=$g5[url]?>/clickpoint/title_bar.gif"); border:1px solid #DDD; height:21px; padding:2px 10px; font-weight:700; margin-bottom:2px;line-height:1.6;}
.indent {margin:0 10px;}
</style>
<div class="title_bar">클릭포인트 링크</div>
<div class="indent">
<?=$sitename?>를 홍보하시면 포인트를 드립니다.<br />
다른 사람이 아래 링크를 클릭해서 들어오는 경우 <?=$clickpoint?>포인트씩 드립니다.<br />
단, 중복 적립을 막기 위해 한 ip로 3일 이내에 클릭한 경우는 제외합니다.<br />
링크: <input type="text" size="80" value="<?=$g5[url]?>/p/<?=$member[mb_no]?>" readonly onclick="this.select()" /><br />
코드: <textarea rows=3 cols=80 readonly onclick="this.select()"><a href="<?=$g5[url]?>/p/<?=$member[mb_no]?>"><img src="<?=$g5[url]?>/clickpoint/logo.png" /></a></textarea><br />
예시: <a href="<?=$g5[url]?>/p/<?=$member[mb_no]?>"><img src="<?=$g5[url]?>/clickpoint/logo.png" /></a>
</div>

<br />

<div class="title_bar">클릭포인트 실적</div>
<div class="indent">
    <?
    for($i=0; $i<7; $i++) {
        $date = date("Y-m-d", strtotime("-$i day"));
        $temp = sql_fetch("select po_point from `$g5[point_table]` where mb_id='$member[mb_id]' AND po_rel_table='@clickpoint' AND po_datetime LIKE '{$date}%'");
        $cnt = intval($temp[po_point]);
        echo "$date : $cnt<br />";
    }
    $temp = sql_fetch("select SUM(po_point) as sum from `$g5[point_table]` where mb_id='$member[mb_id]' AND po_rel_table='@clickpoint'");
    ?>
    총 실적 : <?=$temp[sum]?>
</div>
<?
include_once("$g5[path]/_tail.php");
?>

 

www/p/.htaccess

 

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^p/([0-9]+)$ /clickpoint/clickpoint.php?no=$1 [L]
</IfModule>

 

 

챗지피티한테 물어봐도 아파치 설치하라고 하고 괜히 설치했다가 아작날것 같아 무서워서 포기했습니다.

축복주시면 감사히 받겠습니다.

 

작동만 되면 공유 아이콘 만들어서 재미있게 사용할수 있을것 같아서요.

 

 

추가 질문.

푸티에서 tail -f /var/log/nginx/error.log 명령어 치니깐 와~ 겁나게 빠르게 스크롤이 올라가던데요.

무슨일이고 하면서 가장 많이 올라가는걸 겨우 잡기는 잡았는데 그래도 페이지 접속한다거나 방문자가 있을때 에러코드가 계속 올라가는게 보이더라고요.

 

오류나는거 전부다 잡아가면서 사이트 관리해야하는게 맞는건지 어떤건지 알길이 없어서 추가로 여쭤봅니다.

 

 

이 질문에 댓글 쓰기 :

답변 1

현재 해당 코드를 사용 중인 사용자입니다.

제가 현재 실서비스로 사용 중이라 코드 공개는 다소 어렵지만, 

(저는 원본 그대로 회원 개념이 아니라, 게시판에 글을 홍보하면,

그 링크 타면 그 글쓴 사람에게 포인트 나 경험치 주는 방식입니다.)

 

현재 질문자님 서버가 아파치라면 

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^p/([0-9]+)$ /clickpoint/clickpoint.php?no=$1 [L]
</IfModule>

.htaccess 만 설정 하시면 될꺼에요

 

nginx 라면

rewrite ^/p/([0-9a-zA-Z_]+)/([0-9]+)$ /clickpoint/clickpoint.php?no=$1 break;

 

를 설정 해주시면 될 것 같습니다.

 

아울러 코드 일부는 변경 되어야 하는 게 있는 데 작은 따옴표를 넣어주세요

$member[mb_no] > $member['mb_no'] 

코드 조금은 정리 하셔야 정상 구동 되실 것 같습니다.

 

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 30
© SIRSOFT
현재 페이지 제일 처음으로