비회원 글쓰기할때 특정 글쓴이 차단방법있나요??

비회원 글쓰기할때 특정 글쓴이 차단방법있나요??

QA

비회원 글쓰기할때 특정 글쓴이 차단방법있나요??

본문

비회원 게시판 운영중인데

요즘들어 글쓴이가 "test" 라는 광고글이 자주 올라와서

 

"test"라는 글쓰는이는 글을 못쓰게 하고싶은데요

이 질문에 댓글 쓰기 :

답변 6

안녕하세요....

 님 

 

먼저 궁극적으로 블랙캣77님 말씀대로 글쓴이 이름만 차단한다고 문제가 해결되지는 않습니다.

다만 원하시는 데로 질문에 대한 답변을 드리겠습니다.

 

먼저 사용하시는 게시판 스킨을 확인해주세요978180634_1739851854.4494.png

 

그리고 나서 해당 스킨 폴더에 다음과 같은 파일을 만들어주세요 

write_update.head.skin.php 

 

그리고 아래 코드를 넣어주시면, 원하시는데로 됩니다.

 


<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
 
if (strpos($wr_name, 'test') !== false || $wr_name == 'aaa') {
    alert('사용할 수 없는 이름입니다.');
    exit;
}

 

test 혹은 aaa 이름이 들어가있다면 거절됩니다.

예를 들어 test 뿐만 아니라 test1 test2 test3 도 마찬가지입니다.

 

작동 영상은 아래를 참고하세요

978180634_1739852012.76.gif

비회원 글쓰기는 아이피외에는 방법이 없을 것입니다.
왜냐 하면 차단할 수 있는 인자가 아이피 외에는 전혀 없기 때문 입니다.
특정 단어나 닉네임을 제한 할 수도 있지만은 변경하면 그만이기 때문입니다.
너무 쉽게 회피 할 수 있어서 의미가 없어집니다.

스팸...먹는 거 아닌가요? 아래 팁 적용하면 스팸이 뭔지 모르게 돼요.

https://homzzang.com/b/free-4526

test 뿐만 아니라 test1 test2 test3 등의 닉네임을 막는 것은 단순한 해결책일 뿐이고,

본질적인 해결책은 IP 차단일 것입니다.

 

왜냐하면,

비회원 인지는 IP 이외에는 신뢰할 수 있는 정보가 없기 때문에 닉네임 차단은 의미 없으며.

닉네임을 변경하는 로직이 없는 스크립트 봇일 리 만무합니다.
닉네임 변경만 하면 다시 글을 쓸 수 있으므로 IP 차단이 가장 현실적인 해결책입니다.

특정 시간 내의 접근 빈도 제한을 하여, IP 차단을 하는 정도가 최선일 듯합니다.

 

임시 방어라도 하시겠다면,

PHP에서 변형(대/소문자 띄어쓰기)된 닉네임 차단 + IP 관리를 병행하는 예시 코드.

 

bbs/write_update.php 파일에서 닉네임(wr_name)을 처리하는 아래 코드,

$g5['title'] = '게시글 저장';

직후에 다음의 예시 처럼 IP/닉네임을 추가/수정하여 커스텀하세요.

<?php
include_once('./_common.php');
include_once(G5_LIB_PATH.'/naver_syndi.lib.php');
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
// 토큰체크
check_write_token($bo_table);
$g5['title'] = '게시글 저장';   // == 여기까지는 기존 코드 ==
// ✅차단할 닉네임 목록 (소문자로 변환하여 저장)
$blocked_nicknames = array("test", "spamuser", "광고봇");
// ✅차단할 IP 목록
$blocked_ips = array("112.123.45.67", "203.456.78.90");
// 현재 접속한 사용자 IP 가져오기
$user_ip = $_SERVER['REMOTE_ADDR'];
// ✅ 1. IP 차단 로직 추가
if (in_array($user_ip, $blocked_ips)) {
    die("해당 IP에서는 글쓰기가 제한됩니다.");
}
// ✅ 2. 닉네임 차단 로직 추가
if (isset($_POST['wr_name'])) {
    $nickname = trim($_POST['wr_name']); // 앞뒤 공백 제거
    $nickname_cleaned = preg_replace('/[^a-zA-Z0-9가-힣]/u', '', $nickname); // 특수문자 제거
    $nickname_lower = mb_strtolower($nickname_cleaned, 'UTF-8'); // UTF-8 기반 소문자 변환
    if (in_array($nickname_lower, $blocked_nicknames)) {
        die("해당 닉네임은 사용할 수 없습니다.");
    }
}
//   ==여기서부터는 기존 코드 ==
$msg = array();
$uid = isset($_POST['uid']) ? preg_replace('/[^0-9]/', '', $_POST['uid']) : 0;
// 이후 기존 write_update.php 로직 유지
답변을 작성하시기 전에 로그인 해주세요.
전체 129,406 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT