하루에 글쓰기 제한 관련 질문 좀 드릴께요.
본문
밑에 검색하다 root님이 올리신 글을 보고 적용해봤더니 일단 되기는 합니다만..
board1~4 게시판에 각각 5번씩 총 하루에 20번의 글등록이 되는데요.
이걸 게시판 수 상관없이 총 5번만 등록되게 하려면 어떻게 해야할지 좀 부탁드립니다.
// /bbs/write_update.php
if ($w == '' || $w == 'r') {
//3-2. board_1, board_2 테이블에 사용자가 하루에 새글을 5번만 작성가능하게 할경우
//(답글과, 코멘트는 제한없음)
//$bo_table에서 $member[mb_id]에게 글작성수 체크하기
if(($bo_table == 'board1' || $bo_table == 'board2' || $bo_table == 'board3' || $bo_table == 'board4') && !$is_admin) {
$row_count = threes_rowcount($bo_table, $member[mb_id], 0, 1, 0, 0);
if($row_count > 4) {
alert("본 게시판은 새글작성이 하루에 다섯번만 가능합니다.");
}
}
}
// threes_rowcount 소스
<?
if (!defined('_GNUBOARD_')) exit;
// 최신글 추출
//#######################################################
// description : 게시판 사용자의 글 작성수 구하기
// created by : root(http://www.threes.org)
// version : 2.0
// created : 2006.05.17
// 기존 1.0 gnu3 버전을 g4 버전으로 변경합니다
// usage :
// threes_rowcount($bo_table, $member[mb_id], all, 1, 1, 1);
// threes_rowcount($bo_table, $member[mb_id], 0, 1, 1, 1);
// threes_rowcount()의 6개 인수설명
// 1. 게시판 테이블명($bo_table)
// 2. 사용자 ID($member[mb_id])
// 3. 기간설정(all이면 전체, 숫자이면 숫자일전부터 현재까지 조회, 0이면 오늘)
// 4. 1이면 새글(원문)에서 체크, 0이면 체크안함
// 5. 1이면 답글에서 체크, 0이면 체크안함
// 6. 1이면 코멘트에서 체크, 0이면 체크안함
// sample :
// 다음은 gnu3버전의 sample 화면입니다
// http://threes.org/gnu3/?doc=main/rowcount.php
//
//#######################################################
function threes_rowcount($bo_table, $wrc_id, $wrc_time=0, $wrc_w=1, $wrc_r=1, $wrc_c=1)
{
global $g4;
$sql = " select count(*) as cnt from {$g4[write_prefix]}{$bo_table} ";
$sql .= " where mb_id = '$wrc_id' ";
// $wrc_time이 'all'일경우 전체(날짜상관없이)에서 찾기
// 0이면 오늘새벽부터, 1이면 하루전, 7이면 일주일전,...,365일이면 1년전부터 체크한다.
// (0이면 오늘새벽 0시0분0초부터, 1이면 어제새벽 0시0분0초부터 체크)
if(is_numeric($wrc_time)) { // 변수가 숫자형이면 통과
$wrc_time = (int) $wrc_time; // 정수형으로...
$chk_day = date("d")-($wrc_time);
$time_stamp = mktime(0, 0, 0, date("m"), $chk_day, date("y"));
$chk_date = date("Y-m-d H:i:s", $time_stamp);
$sql .= " and wr_datetime >= '$chk_date' ";
}
if($wrc_w && $wrc_r && $wrc_c) { // 새글, 답글, 코멘트에서
; // 전체에서 검색
} else if($wrc_w && $wrc_r) { // 새글, 답글에서
$sql .= " and wr_comment = '0' ";
} else if($wrc_w && $wrc_c) { // 새글, 코멘트에서
$sql .= " and wr_reply = '' ";
} else if($wrc_r && $wrc_c) { // 답글, 코멘트에서
$sql .= " and (wr_reply != '' or wr_comment != '0') ";
} else if($wrc_w || $wrc_r || $wrc_c) {
// $wrc_w = 1; 이면 새글에서 찾아야 한다.(새글이나 코멘트가 아닌것)
if($wrc_w) {
$sql .= " and wr_reply = '' and wr_comment = '0' ";
}
// $wrc_r = 1; 이면 답글에서 찾아야 한다.
if($wrc_r) {
$sql .= " and wr_reply != '' ";
}
// $wrc_c = 1; 이면 코멘트에서 찾아야 한다.
if($wrc_c) {
$sql .= " and wr_comment != '0' ";
}
} else {
return 0; // 새글, 답글, 코멘트가 아닌것은 없다.
}
$result = sql_fetch($sql);
return $result[cnt];
}
?>
답변 1
그럼 아예 글을 쓸때...write_update.php에다가 g4_member 테이블 여분 필드에 카운트를 하는 로직을 넣고...
이걸 확인해서 카운트가 5고 오늘 날짜면 막으면 될것 같다는 생각이..그리고 다른 날짜면 여분 필드의 카운트를 초기화하고 다시 세는거죠~