아이피, 아이디로 중복 추천 막기 정보
그누호환 아이피, 아이디로 중복 추천 막기본문
중복추천을 완전하게 차단하는 방법입니다.
아래와 같이 테이블을 생성합니다.
CREATE TABLE `gb_votelog` (
`no` int(11) NOT NULL auto_increment,
`id` char(20) default NULL,
`ip` char(20) NOT NULL default '',
`w_id` int(11) NOT NULL default '0',
`vote_date` datetime NOT NULL default '0000-00-00 00:00:00',
`db` char(40) NOT NULL default '',
PRIMARY KEY (`no`),
KEY `index1` (`w_id`,`db`)
) TYPE=MyISAM
bbs/gbrecommend.php파일을 수정합니다.
------------------------------원본-----------------------------
# 3.23
# 한번 추천한글은 브라우저를 닫기전까지는 카운트를 증가시키지 않음
$ss_name = "ss_good_{$bo_table}_{$wr_id}";
if (!$_SESSION[$ss_name]) {
if ($recommend == "good") {
$sql = " update $write_table set wr_good = wr_good + 1
where wr_id = '$wr_id' ";
$re_good = 1;
} else if ($recommend == "nogood") {
$sql = " update $write_table set wr_nogood = wr_nogood + 1
where wr_id = '$wr_id' ";
$re_good = 0;
}
sql_query($sql);
session_register($ss_name);
$$ss_name = $_SESSION[$ss_name] = TRUE;
}
-----------------------------수정--------------------------
# 3.23
# 한번 추천한글은 브라우저를 닫기전까지는 카운트를 증가시키지 않음
#아이피, 아이디로 중복 막기
if($member[mb_id])
{
$sql="select count(no) from gb_votelog where db='$write_table' and w_id= '$wr_id' and (id='$member[mb_id]' or ip='$_SERVER[REMOTE_ADDR]' ) ";
}
else
{
$sql="select count(no) from gb_votelog where db='$write_table' and w_id= '$wr_id' and ip='$_SERVER[REMOTE_ADDR]' ";
}
$val=sql_fetch($sql);
if($val[0])
{
alert("이미 추천하셨습니다.");
}
if ($recommend == "good") {
$sql = " update $write_table set wr_good = wr_good + 1
where wr_id = '$wr_id' ";
$re_good = 1;
} else if ($recommend == "nogood") {
$sql = " update $write_table set wr_nogood = wr_nogood + 1
where wr_id = '$wr_id' ";
$re_good = 0;
}
sql_query($sql);
$sql="insert into gb_votelog set w_id='$wr_id', id='$member[mb_id]', ip='$_SERVER[REMOTE_ADDR]', db='$write_table', vote_date='$now' ";
sql_query($sql);
이렇게 수정하시면 됩니다.
사용량이 많은 게시판에서는 오래 사용하면 느려질수도 있는데 주기적으로 예를들어 한달이상의 DB는 삭제하는게 좋을듯합니다.
아래와 같이 테이블을 생성합니다.
CREATE TABLE `gb_votelog` (
`no` int(11) NOT NULL auto_increment,
`id` char(20) default NULL,
`ip` char(20) NOT NULL default '',
`w_id` int(11) NOT NULL default '0',
`vote_date` datetime NOT NULL default '0000-00-00 00:00:00',
`db` char(40) NOT NULL default '',
PRIMARY KEY (`no`),
KEY `index1` (`w_id`,`db`)
) TYPE=MyISAM
bbs/gbrecommend.php파일을 수정합니다.
------------------------------원본-----------------------------
# 3.23
# 한번 추천한글은 브라우저를 닫기전까지는 카운트를 증가시키지 않음
$ss_name = "ss_good_{$bo_table}_{$wr_id}";
if (!$_SESSION[$ss_name]) {
if ($recommend == "good") {
$sql = " update $write_table set wr_good = wr_good + 1
where wr_id = '$wr_id' ";
$re_good = 1;
} else if ($recommend == "nogood") {
$sql = " update $write_table set wr_nogood = wr_nogood + 1
where wr_id = '$wr_id' ";
$re_good = 0;
}
sql_query($sql);
session_register($ss_name);
$$ss_name = $_SESSION[$ss_name] = TRUE;
}
-----------------------------수정--------------------------
# 3.23
# 한번 추천한글은 브라우저를 닫기전까지는 카운트를 증가시키지 않음
#아이피, 아이디로 중복 막기
if($member[mb_id])
{
$sql="select count(no) from gb_votelog where db='$write_table' and w_id= '$wr_id' and (id='$member[mb_id]' or ip='$_SERVER[REMOTE_ADDR]' ) ";
}
else
{
$sql="select count(no) from gb_votelog where db='$write_table' and w_id= '$wr_id' and ip='$_SERVER[REMOTE_ADDR]' ";
}
$val=sql_fetch($sql);
if($val[0])
{
alert("이미 추천하셨습니다.");
}
if ($recommend == "good") {
$sql = " update $write_table set wr_good = wr_good + 1
where wr_id = '$wr_id' ";
$re_good = 1;
} else if ($recommend == "nogood") {
$sql = " update $write_table set wr_nogood = wr_nogood + 1
where wr_id = '$wr_id' ";
$re_good = 0;
}
sql_query($sql);
$sql="insert into gb_votelog set w_id='$wr_id', id='$member[mb_id]', ip='$_SERVER[REMOTE_ADDR]', db='$write_table', vote_date='$now' ";
sql_query($sql);
이렇게 수정하시면 됩니다.
사용량이 많은 게시판에서는 오래 사용하면 느려질수도 있는데 주기적으로 예를들어 한달이상의 DB는 삭제하는게 좋을듯합니다.
추천
0
0
댓글 전체
감사합니다. 유용한 소스네요,