팁자료 [ php ] 그누보드 게시판 자동 글쓰기 소스 예제
페이지 정보
작성자 웹지기 댓글 0건 조회 3,992회 작성일 18-09-28 17:00본문
php 그누보드 게시판 자동 글쓰기 소스 예제
사람이 직접 글을 작성하고 "글쓰기" 버튼을 누르지 않고, 프로그램으로 글을 올려야 하는 경우 사용
[code]
<?
// m3post 함수 ver 1.00 by 말러83 (2009-12-21)
// $newpost[bo_table], $newpost[wr_subject], $newpost[wr_content], $newpost[mb_id] 값만 지정하고,
// m3post($newpost); 라고 실행시키면 글이 해당 게시판에 올라갑니다.
function m3post($newpost) {
global $g4;
// 입력할 bo_table이 진짜 게시판인지 확인
if(!strlen($newpost[bo_table])) return "error: bo_table 값이 지정되지 않았습니다.";
if(!$bo = sql_fetch("select * from `$g4[board_table]` where bo_table='$newpost[bo_table]'")) {
return "error: bo_table이 존재하지 않습니다.";
}
// 카테고리 사용한다면 카테고리 설정
$ca_name = $newpost[ca_name];
if($bo[bo_use_category]) {
if(!$ca_name || strpos($bo[bo_category_list], $ca_name)===false) { // 카테고리 지정 안됐거나 없는 걸 지정했다면 첫번째로 설정
$temp = @explode("|", $bo[bo_category_list]);
$ca_name = $temp[0];
}
} else {
$ca_name = ""; // 카테고리 쓰지 않으면 공백값으로 지정
}
// 회원정보 및 권한 확인
$mb = get_member($newpost[mb_id]);
if(!$mb) return "error: mb_id가 존재하지 않습니다.";
if($bo[bo_write_level] > $mb[mb_level]) {
return "error: 글쓰기 권한이 없습니다.";
}
// 변수 정리
$bo_table = $newpost[bo_table];
$write_table = $g4[write_prefix] . $bo_table;
$wr_num = get_next_num($write_table);
$ca_name = addslashes($ca_name);
$html = "html1"; // 이 값은 필요에 맞게 설정
$secret = "";
$mail = "";
$wr_subject = addslashes(trim($newpost[wr_subject]));
$wr_content = addslashes(trim($newpost[wr_content]));
if(!$wr_subject) return "error: 글 제목이 없습니다.";
if(!$wr_content) return "error: 글 내용이 없습니다.";
$mb_id = $mb[mb_id];
$wr_password = $mb[mb_password];
$wr_name = $bo[bo_use_name] ? $mb[mb_name] : $mb[mb_nick];
for($i=1; $i<=10; $i++) { // 확장필드도 입력
$wr = "wr_{$i}";
${$wr} = addslashes($newpost[$wr]);
}
$wr_link1 = $newpost[wr_link1];
$wr_link2 = $newpost[wr_link2];
$wr_trackback = $newpost[wr_trackback];
// 글 입력하기
$sql = " insert into $write_table
set wr_num = '$wr_num',
wr_reply = '',
wr_comment = 0,
ca_name = '$ca_name',
wr_option = '$html,$secret,$mail',
wr_subject = '$wr_subject',
wr_content = '$wr_content',
wr_link1 = '$wr_link1',
wr_link2 = '$wr_link2',
wr_link1_hit = 0,
wr_link2_hit = 0,
wr_trackback = '$wr_trackback',
wr_hit = 0,
wr_good = 0,
wr_nogood = 0,
mb_id = '$mb_id',
wr_password = '$wr_password',
wr_name = '$wr_name',
wr_email = '$wr_email',
wr_homepage = '$wr_homepage',
wr_datetime = '$g4[time_ymdhis]',
wr_last = '$g4[time_ymdhis]',
wr_ip = '$_SERVER[REMOTE_ADDR]',
wr_1 = '$wr_1',
wr_2 = '$wr_2',
wr_3 = '$wr_3',
wr_4 = '$wr_4',
wr_5 = '$wr_5',
wr_6 = '$wr_6',
wr_7 = '$wr_7',
wr_8 = '$wr_8',
wr_9 = '$wr_9',
wr_10 = '$wr_10' ";
sql_query($sql);
$wr_id = mysql_insert_id();
// 부모 아이디에 UPDATE
sql_query(" update $write_table set wr_parent = '$wr_id' where wr_id = '$wr_id' ");
// 최신글 삽입
sql_query(" insert into $g4[board_new_table] ( bo_table, wr_id, wr_parent, bn_datetime, mb_id ) values ( '$bo_table', '$wr_id', '$wr_id', '$g4[time_ymdhis]', '$mb[mb_id]' ) ");
// 게시글 1 증가
sql_query("update $g4[board_table] set bo_count_write = bo_count_write + 1 where bo_table = '$bo_table'");
// 포인트 발생
insert_point($member[mb_id], $board[bo_write_point], "$bo[bo_subject] $wr_id 글쓰기", $bo_table, $wr_id, '쓰기');
// 성공하면 글번호를 return;
return $wr_id;
}
?>
[/code]
그누보드용 xmlrpc metaWeblog.newPost method도 위와 비슷한 방식으로 함수를 만들어놓고 있습니다.
첨부파일을 /extend/ 폴더에 넣어두고, 다음과 같이 페이지를 만들어 실행하면 글이 자동으로 등록되는 것을 확인할수 있습니다.
예제:
[code]
<?
include_once("./_common.php");
$newpost[bo_table] = "freeboard";
$newpost[wr_subject] = "자동등록글";
$newpost[wr_content] = "이 글은 자동으로 등록되었습니다.<br>정말 신기합니다.";
$newpost[mb_id] = "admin";
$result = m3post($newpost);
if(strstr($result, "error")) echo $result;
else echo "<a href='$g4[bbs_path]/board.php?bo_table=$newpost[bo_table]&wr_id=$result'>결과보기</a>";
?>
[/code]
댓글목록
등록된 댓글이 없습니다.