?

단축키

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 코드 폰트를 자동 설치하는 코드 1 네모 2018.07.16 830
77 코드 파이썬을 이용한 텔레그램 새 글 알림 (허접합니다) 4 이니스프리 2017.11.19 2377
76 코드 파이선 셸에서 실행하면...? 3 제르엘 2018.07.22 499
75 코드 클라이언트단에서 이미지 리사이징 6 file 네모 2018.05.06 1078
74 코드 컴퓨터의 uuid 얻기 5 title: 황금 서버 (30일)humit 2018.01.28 1099
73 코드 잘못 쓰면 컴퓨터가 날아가는 코드 29 제르엘 2018.07.08 964
72 자료 이게 팔릴까 - Xe/라이믹스 에러페이지 [2017-10-04] 3 file title: 열려라 맛스타의 자물쇠TVJ 2017.10.04 671
71 코드 유튜브에 약간의 기능을 추가 해주는 크롬 확장 프로그램. 11 file Hanam09 2018.01.26 942
70 코드 엑셀파일 불러서 히스토그램 그려주는 함수 국내산라이츄 2017.08.03 723
69 코드 엑셀 읽어서 그래프 그려주는 함수 1 국내산라이츄 2017.08.03 1423
68 코드 아주 간단한 기초 C++ 6 제르엘 2018.04.21 477
67 자료 소셜XE / 기존 통합 로그인 스킨 V2.2 2 file NoYeah 2017.06.28 905
66 코드 세린서버에서 시도중인 백업 스크립트 입니다. 4 NoYeah 2017.06.27 744
65 코드 새 글 자동 댓글 스크립트 (AutoHotkey) 9 이니스프리 2017.11.26 3452
64 코드 사이트 서버 이전 (또는 미러링 사이트 구축) 쉽게하는 스크립트 1 NoYeah 2018.01.14 858
63 코드 브라우저 언어에 따라 다른 폴더를 사용하는 PHP 코드 4 file 네모 2017.10.10 639
62 코드 미완성 받아쓰기 (C) title: 대한민국 국기gimmepoint 2018.04.20 380
61 코드 매우 특이한 버그 9 title: 대한민국 국기gimmepoint 2018.06.05 569
60 자료 링크 파싱 애드온용 스킨 (트위터 스타일) 3 file SNAX 2017.10.03 516
59 코드 도박 중독자를 위한 광고 차단 규칙 file 제르엘 2020.08.21 290
Board Pagination Prev 1 2 3 4 Next
/ 4