?

단축키

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()을 넣으면 게시글 등록 시간이 오래 소요되는 문제가 발생하더군요.


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


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



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


그럼 좋은 주말 되세요 :)


Who's 이니스프리

profile

당분간 일신상의 사정으로 쪽지나 댓글로 답변을 드리기 어렵습니다. 죄송합니다.

 

CSVpuymXAAAVVpd.jpg

Atachment
첨부 '1'
  • 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
번호 분류 제목 글쓴이 날짜 조회 수
78 코드 [PHP] 이미지를 원하는 크기(원본비율 유지)로 리사이즈 하여 출력 (원본 이미지는 수정하지 않습니다) 6 이니스프리 2018.12.20 7695
77 코드 [Python] Selenium을 이용하여 특정 element를 캡처하는 스크립트 2 file 이니스프리 2019.07.03 5887
76 코드 [파이썬] Requests를 사용한 네이버 카페 크롤링 - 일정수 이상의 리플이 달린 게시글만 텔레그램 알림 3 file 이니스프리 2019.11.17 4162
75 코드 [Python] 텔레그램을 이용한 게시판 새 글 알림봇 7 이니스프리 2018.12.02 3484
74 코드 새 글 자동 댓글 스크립트 (AutoHotkey) 9 이니스프리 2017.11.26 3451
73 코드 파이썬을 이용한 텔레그램 새 글 알림 (허접합니다) 4 이니스프리 2017.11.19 2376
72 코드 [Python] 싸이월드 미니홈피 백업 스크립트 1 이니스프리 2019.11.07 2162
71 코드 [Python] url 주소로부터 IP 주소 알아내기 title: 황금 서버 (30일)humit 2020.02.20 2047
70 코드 [오토핫키] 특정 사이트에 대한 ping 테스트 결과를 실행시간과 함께 로그 파일로 저장하는 스크립트 2 이니스프리 2018.09.22 1909
69 코드 [오토핫키] 구글 드라이브의 공유링크를 이미지 호스팅을 위한 다이렉트 링크로 바꿔주는 스크립트 10 file 이니스프리 2018.09.25 1670
68 코드 엑셀 읽어서 그래프 그려주는 함수 1 국내산라이츄 2017.08.03 1423
67 코드 [Python] 네이버 모바일 이미지 검색에서의 이미지 파일을 멀티스레드로 다운받고 1개의 파일로 병합 11 file 이니스프리 2019.07.12 1374
66 코드 [아미나] Dropbox API를 이용한 이미지 호스팅 보드스킨 12 file 이니스프리 2019.07.13 1369
65 코드 [Python-Gnuboard] 파이썬으로 구현한 그누보드 자동 글쓰기 함수 1 file 이니스프리 2021.04.08 1206
64 코드 [Python] 휴일지킴이 약국을 크롤링하여 Folium 지도에 마커로 표시하는 PyQt 윈도우 앱 7 file 이니스프리 2021.03.13 1140
63 코드 [Python] 네이버 실시간 검색어 3 title: 황금 서버 (30일)humit 2020.01.23 1120
62 코드 컴퓨터의 uuid 얻기 5 title: 황금 서버 (30일)humit 2018.01.28 1097
61 자료 [Autohotkey] 매분 정각에 전체화면을 캡쳐하는 스크립트 4 file 이니스프리 2020.05.22 1095
60 코드 [Python] PIL을 이용한 Animated GIF의 리사이징 file 이니스프리 2019.11.03 1095
59 코드 클라이언트단에서 이미지 리사이징 6 file 네모 2018.05.06 1069
Board Pagination Prev 1 2 3 4 Next
/ 4