금지단어 필터링 제발 도와주세요오 ㅠㅠ
본문
일단 저는 https://sir.kr/g5_skin/25290?sfl=wr_subject%7C%7Cwr_content&stx=%EC%83%81%EB%8B%B4#c_29795
해당 스킨을 사용중입니다.
메인페이지에서 상담폼을 입력하면 다른 게시판으로 그 내용이 가게되죠.
이 입력폼은 그냥 일반 php파일을 인클루드하여 메인페이지에 불러온것이구요 write.skin.php파일에서 글을 쓰지않습니다.
스킨안에는 write_update.head.skin.php 와 write_update.skin.php 파일이 두개가있습니다.
이곳에 금지단어 필터링을 넣으려고 시도했습니다.
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
$keystring = uniqid();
set_session("ss_captcha_count", 0);
set_session("ss_captcha_key", $keystring);
$captcha_key = $_POST['captcha_key'] = get_session('ss_captcha_key');
?>
위의 것은 write_update.head.skin.php 의 코드입니다. 솔직히 저게 지금 제기능을 하는지도 모르겠습니다. 왜있는지 모르겠습니다. 캡챠는 사용도안합니다.
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
function word_filter_check($subject, $content, $config)
{
$mod_subject = strtolower($subject);
$mod_content = strtolower(strip_tags($content));
$filter = explode(",", trim($config['cf_filter']));
$count = count($filter);
$error = '';
for ($i=0; $i<$count; $i++) {
$str = $filter[$i];
// 제목 필터링 (찾으면 중지)
$pos = strpos($mod_subject, $str);
if ($pos !== false) {
$error .= '제목에 금지단어(\''.$str.'\')가 포함되어있습니다.';
break;
}
// 내용 필터링 (찾으면 중지)
$pos = strpos($mod_content, $str);
if ($pos !== false) {
$error .= '내용에 금지단어(\''.$str.'\')가 포함되어있습니다.';
break;
}
}
if($error != '')
die($error);
}
//이부분부터는 문의글 등록시 관리자에게 문자발송하는 코드입니다..
//의뢰맡겨서 한거라서 혹시몰라서 비공개..
//include_once(G5_LIB_PATH.'/icode.sms.lib.php');
// 문의글 등록시 관리자에게 전송
// alert("성공적으로 접수되었습니다.", G5_URL);
// 문자보내기 끝
alert('견적문의 가 접수되었습니다.', G5_URL);
?>
위의 코드는 write_update.skin.php 의 소스입니다.
저기다가 저렇게 넣어줬는데요..
전혀 작동하지않다더군요..
sir에 검색해보니 write_update.head.skin.php에 넣으라는데 거기에 넣어도 똑같이 안되구요..
어떻게 해야할지요 ㅠㅠ
<script language="javascript">
var char_min = parseInt(<?=$write_min?>);
var char_max = parseInt(<?=$write_max?>);
</script>
<?php
add_stylesheet('<link rel="stylesheet" href="'.G5_THEME_CSS_URL.'/main.css?ver='.G5_CSS_VER.'">', 0);
?>
<script type="text/javascript">
function checkFrm(obj) {
if(obj.wr_6.checked == false) {
alert('개인정보 활동동의에 체크해주세요.');
obj.wr_6.focus();
return false;
}
}
</script>
<div class="form-box" >
<form name="frm" method="post" action="/bbs/write_update.php" onsubmit="return checkFrm(this);">
<input type="hidden" name="token" value=<?php echo get_write_token('online') ?>>
<input type=hidden name="bo_table" value="online">
<input type=hidden name="wr_7" value="">
<input type=hidden name="wr_8" value="">
<input type=hidden name="wr_9" value="">
<input type=hidden name="wr_10" value="">
<input type=hidden name="wr_name" value="관리자">
<input type=hidden name="wr_subject">
<input type=hidden name="wr_content" value="">
<div class="form-con">
<ul>
<li class="input_box box2">
<input type="text" name="wr_subject" placeholder="이름" required itemname="이름"/>
</li>
<li class="input_box box1">
<select name="wr_7" id="" class="select-1" required itemname="연락처">
<option value="010">010</option>
<option value="011">011</option>
<option value="016">016</option>
<option value="017">017</option>
<option value="018">018</option>
<option value="019">019</option>
</select>
<input type="text" name="wr_8" maxlength="4" required itemname="연락처"/>
<input type="text" name="wr_9" maxlength="4" required itemname="연락처"/>
</li>
<li class="text_box">
<textarea name="wr_content" id="" cols="30" rows="10" placeholder="상담내용" required itemname="문의내용"></textarea>
</li>
</ul>
<div class="provision">
<label for="provision-check">
<input id="provision-check" type="checkbox" name="wr_6" value="6" <?=$write[wr_6]?>/>
<span><a href="/bbs/content.php?co_id=privacy" target="_blank">개인정보취급방침</a>을 읽었으며 내용에 동의합니다.</span>
</label>
</div>
</div>
<div class="receive-btn">
<input name="image" type="submit" value="상담신청하기" alt="상담신청하기">
</div>
</form>
</div>
<script>
jQuery('#selectBox').change(function() {
var state = jQuery('#selectBox option:selected').val();
if ( state == 'option2' ) {
jQuery('.layer').show();
} else {
jQuery('.layer').hide();
}
});
</script>
<!--//-->
위의 코드는 상담문의폼 php파일입니다. 이 파일은 루트폴더에 있구용.
index.php파일에 <? include_once("./customer1.php"); ?> 이렇게 불러와서 사용하고있습니다..
제발 도와주세요 어떻게해야할지.. 진짜 상담문의들어올때마다 문자가 관리자에게 가고있는데 거의 뭐 폭탄처럼 몇분마다 한번씩 오니까.. 진짜 폭탄이라는말이 걸맞을정도로 많이와요 ㅠㅠ 금지단어 필터링으로 해서 아예 그 스팸특유의 단어들 막아놓으면 될거같아서요... 그전에 워드프레스에서도 그렇게 해서 스팸DB를 많이 줄였던 경험이있습니다.
도와주세요!!!!!!!!!!!!
이해가 안되신다면 성심성의껏 설명해드리겠습니다 제발제발 도와주세요 ㅠㅠ
!-->!-->!-->답변 2
www/bbs/write_update.php 를 보시면 아시겠지만
write_update.head.skin.php 이후
DB작업이 진행되고(수정, 삽입, 가변파일처리등)
이후 write_update.skin.php과 write_update.tail.skin.php가 진행됩니다.
현재 내용만으로는 단순히필터링 기능만 작동하지 않는지(글도 icode도 정상작동)
write_update.head.skin.php 자체가 읽히지 않는다는것인지(데이터 부족으로 인한 path수집 실패) 알수 없는데
www/bbs/write_update.php에서 디버깅을 어느정도 진행해 보시는게 좋을것으로 보입니다.
저렇게 할 필요가 없는 작업입니다
basic스킨 write.skin.php
하단 자바스크립트에 보면 관리자 페이지에서 등록한 단어들을 필터링하는 코드가 들어있습니다
쓰기 스킨 function fwrite_submit(f) 부분을 비교하여 수정해서 해보세요