금지단어 필터링 정말.. 제발요 ㅠㅠ
본문
<?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="상담신청하기" id="btn_submit" />
</div>
</form>
</div>
<script>
<?php if($write_min || $write_max) { ?>
// 글자수 제한
var char_min = parseInt(<?php echo $write_min; ?>); // 최소
var char_max = parseInt(<?php echo $write_max; ?>); // 최대
check_byte("wr_content", "char_count");
$(function() {
$("#wr_content").on("keyup", function() {
check_byte("wr_content", "char_count");
});
});
<?php } ?>
function html_auto_br(obj)
{
if (obj.checked) {
result = confirm("자동 줄바꿈을 하시겠습니까?\n\n자동 줄바꿈은 게시물 내용중 줄바뀐 곳을<br>태그로 변환하는 기능입니다.");
if (result)
obj.value = "html2";
else
obj.value = "html1";
}
else
obj.value = "";
}
function checkFrm(f)
{
<?php echo $editor_js; // 에디터 사용시 자바스크립트에서 내용을 폼필드로 넣어주며 내용이 입력되었는지 검사함 ?>
var subject = "";
var content = "";
$.ajax({
url: g5_bbs_url+"/ajax.filter.php",
type: "POST",
data: {
"subject": f.wr_subject.value,
"content": f.wr_content.value
},
dataType: "json",
async: false,
cache: false,
success: function(data, textStatus) {
subject = data.subject;
content = data.content;
}
});
if (subject) {
alert("제목에 금지단어('"+subject+"')가 포함되어있습니다");
f.wr_subject.focus();
return false;
}
if (content) {
alert("내용에 금지단어('"+content+"')가 포함되어있습니다");
if (typeof(ed_wr_content) != "undefined")
ed_wr_content.returnFalse();
else
f.wr_content.focus();
return false;
}
if (document.getElementById("char_count")) {
if (char_min > 0 || char_max > 0) {
var cnt = parseInt(check_byte("wr_content", "char_count"));
if (char_min > 0 && char_min > cnt) {
alert("내용은 "+char_min+"글자 이상 쓰셔야 합니다.");
return false;
}
else if (char_max > 0 && char_max < cnt) {
alert("내용은 "+char_max+"글자 이하로 쓰셔야 합니다.");
return false;
}
}
}
<?php echo $captcha_js; // 캡챠 사용시 자바스크립트에서 입력된 캡챠를 검사함 ?>
document.getElementById("btn_submit").disabled = "disabled";
return true;
}
</script>
<script>
jQuery('#selectBox').change(function() {
var state = jQuery('#selectBox option:selected').val();
if ( state == 'option2' ) {
jQuery('.layer').show();
} else {
jQuery('.layer').hide();
}
});
</script>
<!--//-->
위의 코드는 메인페이지에서 사용하고있는 간편상담 폼의 php파일입니다.
이 파일에서 글을쓰면 online이라는 테이블명의 게시판으로 가게됩니다.
일반게시판과는 달리 write.skin.php라는 페이지에서 글을쓰지않고 일반 php파일에서 글을쓰면 게시판으로 내용이 넘어가게끔 만들어진 skin이죠
https://sir.kr/g5_skin/25290?sfl=wr_subject%7C%7Cwr_content&stx=%EC%83%81%EB%8B%B4#c_29795
바로 이 스킨입니다.
금지단어 필터링을 글쓰는곳에 저렇게 넣으면 된다고해서 넣었는데 어떻게된건지 되지가않습니다..
function checkFrm(f) 이부분만 고쳤거든요!
onsubmit="return checkFrm(this);" 이렇게 되어있어서요 ㅠㅠ
뭐가잘못된걸까요.. 며칠째 이러고있습니다..ㅠㅠ
!-->
답변 1
write 부분은 write.update.php 활용하시면 되실텐데..
일단 아래소스 확인하셔서 응용하시면될것 같네요.
$cover_word = "*";
$Filter = "금지단어,쉼표로구분";
function StrFilter($Text, $Type)
{
GLOBAL $Filter;
GLOBAL $cover_word;
if ($Filter!=""&&$Text!="")
{
$ndwords=array();
$mdeny_words=explode(",",$Filter);
foreach ($mdeny_words as $rdwords)
{
$rdwords = iconv("EUC-KR", "UTF-8",$rdwords);
$r_deny_words = str_repeat("$cover_word", mb_strlen(iconv("UTF-8","EUC-KR",$rdwords)));
$ndwords[$rdwords] = "$r_deny_words";
}
$Text = iconv("EUC-KR","UTF-8",$Text);
$r = strtr($Text,$ndwords);
$r = iconv("UTF-8","EUC-KR", $r);
}
else
{
$r=$Text;
}
return $r;
}