[ php ] 그누보드 게시판 자동 글쓰기 소스 예제 > gnuboard

본문 바로가기

사이트 내 전체검색

gnuboard

팁자료 [ php ] 그누보드 게시판 자동 글쓰기 소스 예제

작성일 18-09-28 17:00

페이지 정보

작성자 웹지기 조회 3,015회 댓글 0건

본문

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]


추천0

비추천 0

댓글목록

등록된 댓글이 없습니다.

전체 37건 2 페이지

이미지 목록

게시물 검색
Copyright © 즐거운 코딩 생활 ( funyphp ). All rights reserved.
PC 버전으로 보기