Warning: Undefined array key "mobile_dir" in /home/kagla/new-sir/old/common.php on line 315
비회원 글쓰기할때 특정 글쓴이 차단방법있나요??

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

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

QA

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

답변 6

본문

비회원 게시판 운영중인데

요즘들어 글쓴이가 "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 로직 유지
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 129,406
© SIRSOFT
현재 페이지 제일 처음으로