테스트 사이트 - 개발 중인 베타 버전입니다

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

더스펀지 9개월 전 조회 1,436

비회원 게시판 운영중인데

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

 

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

댓글을 작성하려면 로그인이 필요합니다.

답변 6개

채택된 답변
+20 포인트
9개월 전

안녕하세요....

@더스펀지 님 

 

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

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

 

먼저 사용하시는 게시판 스킨을 확인해주세요

 

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

write_update.head.skin.php 

 

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

 

</p>

<p><?php</p>

<p>if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가</p>

<p> </p>

<p>if (strpos($wr_name, 'test') !== false || $wr_name == 'aaa') {</p>

<p>    alert('사용할 수 없는 이름입니다.');</p>

<p>    exit;</p>

<p>}</p>

<p>

 

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

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

 

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

http://sir.kr/data/editor/2502/978180634_1739852012.76.gif" width="100%" />

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

더스펀지
8개월 전

답변주신분들 모두 감사드립니다

알려주신방법들 적용해보겠습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

glitter0gim
9개월 전

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

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

 

왜냐하면,

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

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

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

 

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

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

 

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

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

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

</p>

<p><?php

include_once('./_common.php');

include_once(G5_LIB_PATH.'/naver_syndi.lib.php');

include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');</p>

<p>// 토큰체크

check_write_token($bo_table);</p>

<p>$g5['title'] = '게시글 저장';   // == 여기까지는 기존 코드 ==</p>

<p>// ✅차단할 닉네임 목록 (소문자로 변환하여 저장)

$blocked_nicknames = array("test", "spamuser", "광고봇");</p>

<p>// ✅차단할 IP 목록

$blocked_ips = array("112.123.45.67", "203.456.78.90");</p>

<p>// 현재 접속한 사용자 IP 가져오기

$user_ip = $_SERVER['REMOTE_ADDR'];</p>

<p>// ✅ 1. IP 차단 로직 추가

if (in_array($user_ip, $blocked_ips)) {

    die("해당 IP에서는 글쓰기가 제한됩니다.");

}</p>

<p>// ✅ 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 기반 소문자 변환</p>

<p>    if (in_array($nickname_lower, $blocked_nicknames)) {

        die("해당 닉네임은 사용할 수 없습니다.");

    }

}</p>

<p>//   ==여기서부터는 기존 코드 ==

$msg = array();

$uid = isset($_POST['uid']) ? preg_replace('/[^0-9]/', '', $_POST['uid']) : 0;</p>

<p>// 이후 기존 write_update.php 로직 유지</p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

s
sinbi Expert
9개월 전

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

미니님a
9개월 전
추천 드리면서....(안됩니다. 스팸은 맛있습니다. 최고의 반찬인데 ㅠ)

댓글을 작성하려면 로그인이 필요합니다.

9개월 전

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

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

9개월 전

비회원이면 해당 글쓴이명을 차단한다고 해결될건 아닌거 같네요. 동일 아이피면 아이피 차단을 한번 생각해보셔야 할 거 같습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인