?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
Extra Form
라이선스 MIT

안녕하세요? ^^ 주말 잘 보내고 계시는가요?


이 스크립트는 아미나에서 게시글을 작성하면 자동으로 랜덤 댓글을 남기는 PHP 파일입니다.

(그누보드에서도 스크립트 중에 몇 줄을 삭제하면 사용할 수 있을 것 같네요)



이와 관련된 소스가 이미 그누보드나 아미나의 여러 게시물에 올라와 있고


사실 제가 작성한 스크립트도 그와 대동소이합니다.


다만 큰 차이는 아니지만 다음과 같은 부분을 좀 더 보완하도록 노력하였습니다.


1) 관리자로 로그인하거나 회사 IP로 접속한 경우에는 자동댓글이 등록되지 않도록 하였으며,


2) $write_table에 데이터를 삽입하는 부분을 비롯하여 스크립트를 가능한 한 컴팩트하게 작성했고,


3) 랜덤 댓글의 배열에 요소를 추가하기 간편하도록 하였으며,


4) 선택된 특정 게시판에만 자동 댓글이 등록되도록 하였습니다.



우선 기존의 스크립트에서 $wr_write_password와 관련된 부분을 모두 삭제하여 null로 입력하여도


제가 테스트한 바로는 아미나에서 아직까지 아무런 문제점을 발견하지 못했습니다.


그리고 아미나 basic-board의 write_update.tail.skin.php 파일에 원래 들어있는


@include_once($write_skin_path.'/write_update.tail.skin.php'); 


이 부분을 삭제했는데 아직까지는 아무런 문제가 발생하지 않았습니다 ^^



아미나를 기준으로 basic-board의 write_update.tail.skin.php 파일을 아래와 같은 내용으로 대체하시면 됩니다.


<?php
if (!defined('_GNUBOARD_')) exit;

if ($w =='' && $bo_table === '게시판ID' && $_SERVER['REMOTE_ADDR'] !== '회사IP' && !($is_admin)) {
// 회사IP로 접속하거나 admin 계정으로 접속한 경우를 제외하고, 선택된 게시판에만 자동 댓글이 등록됩니다.
    $reply = array(
    "안녕하세요? 문의글을 작성해주셔서 감사합니다.\n최대한 빠른 시간 내에 확인한 후 답변 드리겠습니다.",
    "안녕하세요? 저희 사이트에 문의해주셔서 감사합니다.\n최대한 빨리 답변 드리도록 하겠습니다.",
    "안녕하십니까? 게시판에 문의를 남겨주셔서 감사드립니다.\n최대한 신속히 답변을 드리겠습니다.",
    "안녕하십니까? 올려주신 질문이 잘 접수되었습니다.\n확인 후 바로 답변 올리겠습니다. 감사합니다.",
    "안녕하십니까? 저희 사이트에 문의를 해주셔서 감사합니다.\n저희가 신속히 확인하여 답변 드리겠습니다."
    );
    $randint = mt_rand(0, count($reply)-1);
    $wr_write = get_write($write_table, $wr_id);
    $wr_write_content = $reply[$randint];
    $wr_write_cname = "게시판담당자"; // 댓글 작성자의 닉네임
    $wr_write_mbid = "boardmaster"; // 댓글 작성자의 아이디
    $sql = " insert into $write_table
                set ca_name = '$wr_write[ca_name]',
                    wr_num = '$wr_write[wr_num]',
                    wr_parent = '$wr_id',
                    wr_is_comment = '1',
                    wr_comment = '1',
                    wr_content = '$wr_write_content',
                    mb_id = '$wr_write_mbid',
                    wr_password = '',
                    wr_name = '$wr_write_cname',
                    wr_datetime = '".G5_TIME_YMDHIS."',
                    wr_ip = '' ";
    sql_query($sql);
    sql_query(" update $write_table set wr_comment = wr_comment + 1 where wr_id = '$wr_id' ");
    sql_query(" update $g5[board_table] set bo_count_comment = bo_count_comment + 1 where bo_table = '$bo_table' ");
}

if($w == '' && isset($is_direct) && $is_direct) {
if ($file_upload_msg)
alert($file_upload_msg, G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table);
else
goto_url(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table);
}
?>



부연설명을 드리면 $wr_write_cname과 $wr_write_mbid에 실제 닉네임과 아이디를 입력하지 않아도 무방합니다.


다만 실제 아이디를 입력하면 관리자와 해당 아이디로 접속하여 수정할 수 있고,


존재하지 않는 아이디를 입력하면 해당 게시판에 권한이 있는 관리자만 수정 가능합니다.



한편 PHP의 rand() vs mt_rand() vs random_int()에 대해 비록 제가 잘 알지는 못하지만 부연 설명을 드리면,


PHP 5.X 이하에서는 mt_rand()가 rand()보다 더 향상된 난수 알고리즘(Mersenne Twist)를 사용합니다.


그리고 random_int()는 PHP 7.X에서만 사용가능한 함수입니다.


따라서 이 스크립트에서는 mt_rand()를 선택하였습니다.



이 스크립트를 write_update.tail.skin.php 파일에 덮어쓴 다음에 새 글을 작성하시면


다음과 같이 글 작성과 동시에 댓글이 자동으로 등록되는 것을 확인할 수 있습니다.




다만 이 스크립트를 사용하면 게시글이 작성되자마자 동시에 댓글이 등록되기 때문에 


실질적으로 이 스크립트를 활용할 수 있는 방법이 다소 제한되는 것 같습니다.


그렇다고 sleep()을 넣으면 게시글 등록 시간이 오래 소요되는 문제가 발생하더군요.


따라서 제가 작성한 것처럼 컴퍼니나 샵 테마를 사용할 때 질문게시판에 등록 확인 댓글을 남기거나,


커뮤니티 사이트 초기에 무플을 방지하기 위한 차원에서 사용할 수 있을 것 같습니다 ^^



허접한 스크립트에 관한 글을 읽어주셔서 감사합니다!


그럼 좋은 주말 되세요 :)


  • profile
    NoYeah 2018.11.18 10:38
    라이믹스니 xe엔 비슷한 애드온이 있어서 설치만 하면 바로 사용기능이네요!
    그누보드가 이런 부분은 좀 불편한것 같습니다. ㅠㅠ
  • profile
    이니스프리 2018.11.18 10:45

    허거걱 ㅠㅠ 라이믹스나 XE에는 이런게 이미 애드온으로 있군요 ㅜㅜ

    (검색해보니 XE 공식 자료실에 있네요)

    그누보드는 PHP 파일을 직접 수정해야 되고

    빌더마다 조금씩 다른 점이 있어서 그에 맞게 수정을 해야되어서 더욱 어려운 것 같아요 ㅠㅠ


    제가 구글링으로 찾지를 못했는데 혹시 라이믹스나 XE에 자동 글 작성 애드온이란 것은 없는지 여쭤봅니다.

    제목과 내용을 입력해놓고 실행하면 자동으로 게시글을 작성하는 애드온을 여쭤보는 것이에요.

    그럼 맛스타 님께서도 좋은 주말 되세요! 항상 감사합니다 ^^

  • profile
    NoYeah 2018.11.18 14:47
    그런 애드온은 @네모님 이 전문이니 아마 뚝딱 만드시지 않을까 생각됩니다. ㅋㅋ
  • profile
    이니스프리 2018.11.18 19:45
    허걱~! 그렇군요 ^^ 감사합니다 :)
    그럼 맛스타 님께서도 가족분들과 좋은 주말 저녁 되세요!
  • profile
    네모 2018.11.18 15:32
    그런 애드온이 사용될 곳이 있을까요?
    타 사이트에서 퍼오는 기능은 몇번 만들어 본 적이 있습니다만,
    제목과 내용이 고정된(로테이션 포함) 게시글을 자동으로 작성해봐야 의미가 없을것 같은데용.

    만들고자 한다면 어렵지 않게 만들것 같습니다만, 활용될만한 데가 있을지는 모르겠네요.
  • profile
    이니스프리 2018.11.18 20:04

    옙~ 네모 님 말씀대로 API나 정부기관의 공시 같은 것을 퍼오는 기능을 만들어보려구요 ^^

    그누보드에서는 어떻게 간신히 만들어봤는데요.

    그누보드는 그 자체는 가볍지만 빌더를 설치하면 느려지고 

    캐시 관련하여 최적화를 하려면 결국 의뢰를 할 수밖에 없는 것 같아서요.

    제가 내년에 필요하게 되면 라이믹스의 게시글 쓰기 관련 파일을 들여다보면서 하루이틀 정도 끙끙거리다가

    네모 님께 작업의뢰를 부탁드릴게요~! ㅎㅎ

    그럼 네모 님께서도 감기 조심하시고 입대 전까지 뜻깊은 시간 보내세요 :)

    네모 님께 항상 감사드립니다!!

  • profile
    이니스프리 2018.11.18 23:26

    생각해보니 대략 아래와 같은 방식으로 

    스포어의 포인트 폭탄처럼 글 작성시 랜덤 포인트를 지급하는 이벤트로 응용할 수도 있겠네요 ^-^


    $percentage = 50; // 포인트 지급 확률

    $dice = mt_rand(1, 100);

    if ($w == '' && $dice < $percentage) {

    $randpoint = mt_rand(15, 30); // 지급되는 랜덤 포인트의 범위

    $reply = array(

        "랜덤 포인트 이벤트 당첨을 진심으로 축하드립니다~!\n".$randpoint."p를 추가로 획득하셨습니다.",
        "축하드립니다! 랜덤 포인트 이벤트에 당첨되셨습니다 ^^\n".$randpoint."p를 추가 획득하셨습니다."

    );

    $randint = mt_rand(0, count($reply)-1);

    $wr_write = get_write($write_table, $wr_id);

    $wr_write_content = $reply[$randint];

    $wr_write_cname = "포인트폭탄"; // 댓글 작성자의 이름

    $wr_write_mbid = "bomb"; // 댓글 작성자의 아이디

    $sql = " insert into $write_table

    set ca_name = '$wr_write[ca_name]',

    wr_num = '$wr_write[wr_num]',

    wr_parent = '$wr_id',

    wr_is_comment = '1',

    wr_comment = '1',

    wr_content = '$wr_write_content',

    mb_id = '$wr_write_mbid',

    wr_password = '',

    wr_name = '$wr_write_cname',

    wr_datetime = '".G5_TIME_YMDHIS."',

    wr_ip = '' ";

    sql_query($sql);

    sql_query(" update $write_table set wr_comment = wr_comment + 1 where wr_id = '$wr_id' ");

    sql_query(" update $g5[board_table] set bo_count_comment = bo_count_comment + 1 where bo_table = '$bo_table' ");

    insert_point($member['mb_id'], $randpoint, '포인트폭탄', $bo_table, $wr_id, $rw_id);

    }


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
38 코드 [Python] 싸이월드 미니홈피 백업 스크립트 1 이니스프리 2019.11.07 2166
37 코드 [Python] 유튜브 영상을 다운받아 일정 간격으로 캡쳐하여 10장씩 merge하기 3 file 이니스프리 2020.05.27 1050
36 코드 [Python] 텔레그램을 이용한 게시판 새 글 알림봇 7 이니스프리 2018.12.02 3527
35 코드 [Python] 휴일지킴이 약국을 크롤링하여 Folium 지도에 마커로 표시하는 PyQt 윈도우 앱 7 file 이니스프리 2021.03.13 1145
34 자료 [XE / Rhymix] Bootstrap 패널 위젯 스타일 file title: 은메달도다 2017.08.09 603
33 코드 [아미나] Dropbox API를 이용한 이미지 호스팅 보드스킨 12 file 이니스프리 2019.07.13 1377
» 코드 [아미나] 게시글을 작성하면 ID와 IP로 필터링하여 자동으로 랜덤 댓글을 남기기 (+랜덤 포인트) 7 file 이니스프리 2018.11.18 634
31 코드 [아미나] 네이트 실시간 검색어 순위 위젯 (아미나 캐시 적용) 3 file 이니스프리 2018.12.18 975
30 코드 [아미나] 출석 여부를 나타내는 메인화면 위젯 4 file 이니스프리 2018.12.15 666
29 코드 [오토핫키] 구글 드라이브의 공유링크를 이미지 호스팅을 위한 다이렉트 링크로 바꿔주는 스크립트 10 file 이니스프리 2018.09.25 1671
28 코드 [오토핫키] 브라우저를 열어 지난번과 동일한 폴더에 MZK를 다운받고 압축을 네이티브로 해제하는 스크립트 file 이니스프리 2018.10.20 841
27 코드 [오토핫키] 특정 사이트에 대한 ping 테스트 결과를 실행시간과 함께 로그 파일로 저장하는 스크립트 2 이니스프리 2018.09.22 1914
26 코드 [파이썬] Requests를 사용한 네이버 카페 크롤링 - 일정수 이상의 리플이 달린 게시글만 텔레그램 알림 3 file 이니스프리 2019.11.17 4187
25 자료 경험치 현황 위젯 6 file NoYeah 2017.06.28 622
24 내가 만든 merge sort 3 title: 대한민국 국기gimmepoint 2018.05.17 370
23 코드 내가 만든 사칙연산 계산기 title: 대한민국 국기gimmepoint 2018.05.11 515
22 코드 내가 만든 함수 모음집 4 title: 대한민국 국기gimmepoint 2018.05.08 382
21 코드 내가 만든 함수 모음집 2 title: 대한민국 국기gimmepoint 2018.05.12 379
20 코드 도박 중독자를 위한 광고 차단 규칙 file 제르엘 2020.08.21 292
19 자료 링크 파싱 애드온용 스킨 (트위터 스타일) 3 file SNAX 2017.10.03 516
Board Pagination Prev 1 2 3 4 Next
/ 4