그누커뮨 GNUboard COMmUNities
트위터아이디로 로그인하기트위터ID로 로그인
내 커뮤니티는 내가 수정할 수 있기 때문에 의미있다!
그누보드를 다루기 위해 알아야할 알짜배기 정보들을 적어봅니다.
 
작성일 : 09-12-21 21:50

php 파일로 그누보드 글쓰기

 글쓴이 : 말러83
조회 : 1,410  

키워드 : m3post, 함수, 그누보드, 글쓰기, 외부파일, php

오토스크랩 : 일괄 스크랩 오토스크랩 설정 네이버 블로그로 스크랩 다음 블로그로 스크랩 이글루스로 스크랩 티스토리로 스크랩 텍스트큐브로 스크랩 트위터로 보내기
   m3post100.utf8.php (4.2K) [21] DATE : 2009-12-21 22:06:33
   m3post100.euckr.php (4.0K) [19] DATE : 2009-12-21 22:06:33
사람이 직접 글을 작성하고 "글쓰기" 버튼을 누르지 않고, 프로그램으로 글을 올려야 하는 경우가 있습니다. 그런 경우에 사용할 수 있는 함수를 하나 만들어봤습니다.
<?
// 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;
}
?>
그누보드용 xmlrpc metaWeblog.newPost method도 위와 비슷한 방식으로 함수를 만들어놓고 있습니다.

첨부파일을 /extend/ 폴더에 넣어두고, 다음과 같이 페이지를 만들어 실행하면 글이 자동으로 등록되는 것을 확인할수 있습니다.
예제:
<?
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>";
?>

게시물의 저작권은 별도 표시가 없는 한 작성자에게 있습니다.
게시물 주소 : http://gnucomun.net/sp/study.52
6.2 (6명)
평가해주세요. 비회원 가능!
말자 10-01-20 02:49
 
와 정말 좋네요~!! 감사합니다~~
셀렉트로 특정 게시판 설정하고, 폼에 입력하고서 저장시킨후 다시 리턴되서 반복하게 된다면 캬 장난아니겠네요...
완전 초짜지만 - -도전!!ㅎㅎ!!^^ 좋은 정보 감사합니다.
     
말러83 10-01-20 16:29
 
http://autoscrap.net 같은 경우 이 함수를 사용하고 있죠.
예약글 같은 기능이나 클릭하면 자동으로 글이 써지는 기능 등 활용 방안이 무궁무진합니다.^^
세분 10-08-26 15:45
 
http://autoscrap.net 처럼 자동으로 업로드 할수있는 방법좀 알려주세요
http://wawa.sosiz.com/shop/bbs/board.php?bo_table=0301
실행하니  자동등록글 이런게 되서요 방법좀 알려주세요
설명하기 그런면 쪽지라도 좀 알려주세요 부탁합니다
     
말러83 10-08-26 17:09
 
네이버의 실시간검색어 api에서 검색어를 생성해서
http://dev.naver.com/openapi/apis/contents/rank

검색 api에서 검색 결과를 받아와 넣어주고 있습니다.
http://dev.naver.com/openapi/apis/search/blog

api로 받아온 내용을 잘 조합해서 본문 내용을 만들어 주면 됩니다. (뭘 더 어떻게 설명해야 할지;;)

자동 수집에 관한 내용은 다음 글의 댓글을 참고해보시고요.
http://gnucomun.net/sp/idea.77

쪽지나 댓글로 설명하기에는 너무 방대한 내용인 것 같고요..
취미 생활로 몇년 정도 php 공부와 api 공부를 하면 자연스럽게 할 수 있게 되는 내용입니다. ^^;;
 
 

Total 23
번호 제   목 글쓴이 평점 날짜 조회
23 head.sub.php 전역변수 숨기기 (javascript) (1) 유아원 7.33 01-23 1215
22 php 파일로 그누보드 글쓰기 (4) 말러83 6.17 12-21 1411
21 팝업창 한글 깨짐 해결하기 (1) 유아원 3.50 12-20 987
20 메타태그 (keywords, description) 적용하기 (5) 유아원 9.50 12-11 1015
19 .htaccess로 외부 불펌 막기 (4) 말러83 5.00 12-06 1186
18 IE6에서 롤오버 이미지를 계속해서 재 읽는 버그 (2) 유아원 6.00 12-05 920
17 검색결과 내용부분 태그 없애기 (1) 유아원 10.00 12-04 571
16 비회원도 추천 가능하게 만들기 유아원 1.50 11-26 505
15 .htaccess 활용하기 (7) 유아원 9.33 11-12 931
14 다운로드를 스킨에서 조작해보자 말러83 9.75 11-09 1035
13 check_string() 한글, 영문, 숫자만 들어있는 문자열인지 확인 말러83 0.00 10-31 1055
12 크롬에서 글쓰기가 안될 때 해결책 말러83 7.75 10-29 1054
11 새글 있으면 new 표시 (7) 말러83 8.33 10-27 1155
10 로그인 상태인가 체크 $is_member (3) 말러83 8.20 10-21 674
9 기본설정 변수 $config 말러83 6.33 10-21 900
 1  2  

Copyright ⓒ그누커뮨(http://gnucomun.net) All rights reserved.